1、国家二级 VF机试-试卷 162及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.在考生文件夹下,打开顾客数据库 cdb,完成如下操作: (1)在会员表 cus中增加一个字段,字段名为手机号,数据类型为“字符”,宽度为 11;在会员购货明细表 cbe中分别给“数量”和“单价”字段设置有效性规则,要求:数量大于等于 1,默认值为 1:单价大于等于 1,默认值为 1。 (2)在会员购货明细表 cbc中创建一个主索引,索引名为 cbc,对应的索引表达式为“会员号”、“商品号”和“日期”字段的组合(会员号+商品号+
2、dtoc(日期);注意,日期字段是日期型数据类型,在索引表达式使用 dtoc函数将日期字段转换为字符型。 (3)在会员购货明细表 cbc中创建两个普通索引(升序),索引名分别为“会员号”和“商品号”,对应索引表达式分别为“会员号”和“商品号”。建立会员表 cus与会员购货明细表cbc之间的永久联系;建立商品表 comm与会员购货明细表 cbc之间的永久联系。 (4)使用 sq1的 select语句查询会员表 cus中会员号、会员名和单位字段,将查询结果存储为 ncus表,并将 sq1的 select语句存储到名为 oneprg 的文件中。注意。查询结果不要排序。(分数:2.00)_二、简单应用
3、题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)用 SQL语句完成下列操作:将选课在 5门课程以上(包括 5门)的学生的学号、姓名、平均分和选课门数按平均分降序排序,并将结果存放于数据库表 stu_temp名为学号、姓名、平均分和选课门数)。 (2)建立一个名为 menu_lin的下拉式菜单,菜单中有两个菜单项“查询”和“退出”。“查询”项下还有一个子菜单,子菜单有“按姓名”和“按学号”两个选项。在“退出”菜单项下创建过程,该过程负责使程序返回到系统菜单。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.建
4、立一个表单,表单文件名和表单控件名均为 myform_c,表单标题为“职工订单信息”,表单界面如图 1-29所示,共有 3个文本为职工号(Label1)、姓名(Label2)和性别(Label3)的标签,还有 3个对应的文本框(Text1、Text2 和 Text3),和一个表格控件 Grdorders。其他功能如下: 程序运行时,在文本框(Text1)中输入一个职工号的值,并单击 DO(Command1)按钮,然后在文本框中(Text2)显示职工的姓名,在文本框(Text3)中显示职工的性别,在表格控件(Grdorders)中显示该职工的订单(orders 表)的信息。 单击 Close命令
5、按钮(Command2)关闭表单。 注意:在表单设计器中将表格控件 Grdorders的数据源类型设置为 SQL语句。 (分数:2.00)_国家二级 VF机试-试卷 162答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.在考生文件夹下,打开顾客数据库 cdb,完成如下操作: (1)在会员表 cus中增加一个字段,字段名为手机号,数据类型为“字符”,宽度为 11;在会员购货明细表 cbe中分别给“数量”和“单价”字段设置有效性规则,要求:数量大于等于 1,默认值为 1:单价大于等于 1,默认值为 1。
6、(2)在会员购货明细表 cbc中创建一个主索引,索引名为 cbc,对应的索引表达式为“会员号”、“商品号”和“日期”字段的组合(会员号+商品号+dtoc(日期);注意,日期字段是日期型数据类型,在索引表达式使用 dtoc函数将日期字段转换为字符型。 (3)在会员购货明细表 cbc中创建两个普通索引(升序),索引名分别为“会员号”和“商品号”,对应索引表达式分别为“会员号”和“商品号”。建立会员表 cus与会员购货明细表cbc之间的永久联系;建立商品表 comm与会员购货明细表 cbc之间的永久联系。 (4)使用 sq1的 select语句查询会员表 cus中会员号、会员名和单位字段,将查询结果
7、存储为 ncus表,并将 sq1的 select语句存储到名为 oneprg 的文件中。注意。查询结果不要排序。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口执行命令: MODIFY DATABASE cdb ,打开数据库设计器。 在数据库设计器中,右击 cus表,选择【修改】快捷菜单命令,打开 cus表设计器,在“字段”选项卡的“字段名”列的最后一个空白文本框中输入字段名“手机号”,在“类型”下拉框中选择“字符型”,在“宽度”文本框中输入“11”,单击“确定”按钮保存表结构修改。 在数据库设计器中,右击 cbe表,选择【修改】快捷菜单命令,打开 cbe表设计器,在“字段”选项卡中
8、选中“数量”,在“字段有效性”的“规则”文本框中输入“数量=1”,在“默认值”本框中输入“1”。如图 2-63所示。然后在“字段”选项卡中选中“单价”,在“字段有效性”的“规则”文本框中输入“单价=1”,在“默认值”文本框中输入“1”。 )解析:解析:本大题考查了表结构的修改;索引的建立及永久联系的建立;SQL 简单查询。 为数据库表建立索引可以在表设计器中进行,在表设计器的“字段”选项卡中,可以通过选择“排序”下拉框中的“升序”或“降序”为指定的字段建立一个索引名与索引表达式相同的普通索引,如果要改变索引名或索引类型,则需要在“索引”选项卡中进行修改。 建立两个表的永久联系时,有一个表中必须
9、建立关联字段的主索引(或候选索引),另一个表要建立普通索引。 本题的 SQL查询比较简单,将查询结果保存在永久表中用 into table或 into dbf短语。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)用 SQL语句完成下列操作:将选课在 5门课程以上(包括 5门)的学生的学号、姓名、平均分和选课门数按平均分降序排序,并将结果存放于数据库表 stu_temp名为学号、姓名、平均分和选课门数)。 (2)建立一个名为 menu_lin的下拉式菜单,菜单中有两个菜单项“查询”和“退出”。“查询”项下还有一个子菜单,子菜单有“按姓名”和“按学
10、号”两个选项。在“退出”菜单项下创建过程,该过程负责使程序返回到系统菜单。(分数:2.00)_正确答案:(正确答案:(1)步骤 1:在命令窗口执行命令: OPEN DATABASE 学生 ,打开“学生”数据库。步骤 2:在命令窗口执行命令(以下程序是通过查询设计器生成): SELECT 学生学号,学生姓名,AVG(选课成绩) AS 平均分,;& AVG()函数用来求平均分 COUNT(选课课程号)AS 选课门数; &COUNT()函数用来统计每个学生选修课程数 FROM 学生!学生 INNERJOIN 学生!选课; ON 学生学号=选课学号; GROUP BY 选课学号; &按选课表的学号 字
11、段对记录进行分组 HAVING COUNT(选课课程号)=5, &进一步限定分组后的条件,只求选课数在 4门以上的学生成绩 ORDER BY 3 DESC; &按输出结果的第 3列字段(即“平均分”字段)值降序排序 INTO TABLE STU_TEMPDBF (2)步骤 1:在命令窗口执行命令: CREATE MENU menu_lin ,在弹出的“新建菜单”对话框中单击“菜单”图标按钮,打开菜单设计器。 步骤 2:在菜单设计器“菜单名称”列的文本框中依次输入“查询”和“退出”两个主菜单名,“结果”下拉框中选择为“子菜单”,单击“查看”行的“创建”按钮进入下级菜单设计,在“菜单名称”列的第
12、1、2 行文本框中依次输入子菜单名“按姓名”和“按学号”。 步骤 3:通过“菜单级”下拉框返回主菜单项设计界面,选择“退出”菜单命令的“结果”项为“过程”,并通过单击“创建”按钮打开过程编辑器添加返回到系统菜单的命令: SET SYSMENU TO DEFAULT。 步骤 4:执行【菜单】【生成】菜单命令,在弹出的 VisualFoxPro对话框中单击“是”按钮,接着系统会弹出“生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件。 步骤 5:在命令窗口执行命令: DO menu_linmpr ,运行菜单查看结果。)解析:解析:(1)本题主要考查了 SQL分组与计算查询。本题的关键首先是
13、要确定进行计算的字段有哪些、进行何种计算,然后判断根据哪个字段进行分组。根据题目要求,在输出字段中“学号”和“姓名”是表中原有的字段,而“平均分”和“选课门数”字段则需要通过计算得出,通过 AS短语可指定输出新的字段名。 “平均分”可以通过求每个学生“成绩”的平均值得到,使用 AVG函数求平均值;而“选课门数”可以通过求每个学生选修的课程总数得到,在“选课”表中可以通过“选课号”的不同判断每个学生共选修了几门课程,使用 COUNT函数可以进行计数统计,此处注意不要与求和函数 SUM混淆。 从上面两个函数不难看出,这两个函数都是在针对每个学生进行操作的,因此可以通过“选课”表中的“学号”字段分组
14、,将“学号”相同的记录分到一组再进行计算。 另外,题目还要求对选课在 4门以上的学生成绩进行计算,因此,该条件必须通过 HAVING子句对分组统计的结果做进一步限制,对满足该条件的学生才进行计算输出结果。此处不要将 HAVING条件短语与 WHERE条件短语混淆,HAVING 短语是在进分组计算的基础上,对所得的结果做进一步的限制,而 WEHRE条件短语基本与分组计算结果没有关系。 (2)本题考查的是菜单设计器的使用。设计过程中注意主菜单项与子菜单项的建立,本题属于比较简单的操作。三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.建立一个表单,表单文件
15、名和表单控件名均为 myform_c,表单标题为“职工订单信息”,表单界面如图 1-29所示,共有 3个文本为职工号(Label1)、姓名(Label2)和性别(Label3)的标签,还有 3个对应的文本框(Text1、Text2 和 Text3),和一个表格控件 Grdorders。其他功能如下: 程序运行时,在文本框(Text1)中输入一个职工号的值,并单击 DO(Command1)按钮,然后在文本框中(Text2)显示职工的姓名,在文本框(Text3)中显示职工的性别,在表格控件(Grdorders)中显示该职工的订单(orders 表)的信息。 单击 Close命令按钮(Command
16、2)关闭表单。 注意:在表单设计器中将表格控件 Grdorders的数据源类型设置为 SQL语句。 (分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: OPEN DATABASE order8_manage ,打开orders_manage数据库。 步骤 2:在命令窗口执行命令: CREATE FORMmyform_c ,打开表单设计器新建表单。 步骤 3:从“表单工具栏”中依次向表单添加三个标签、三个文本框、一个表格和两个命令按钮控件。在“属性”面板的下拉框中选择表单对象,在“全部”选项卡中修改对象属性值,见表 2-29。 )解析:解析:本题主要考查了表单及控件的常用属性的设置;SQL 简单查询。 对本题操作时,首先根据题意新建表单,添加控件并修改其相关属性。本题中,“姓名”文本框和“性别”文本框的值可以通过locate查询定位得到。