1、国家二级 VF 机试(操作题)-试卷 301 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开表单 one,如图 218 所示,通过设置控件的相关属性,使得表单运行时的开始焦点在“打开”命令按钮,并且接下来的焦点的移动顺序是“关闭”和“退出”。 (分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下,打开招生数据库 sdb,完成如下简单应用:(1)使用一对多表单向导选择 ksb 表和kscib 表生成一个名为 two 的表单。要求从父表 ksb 中选择所有字段,从子表 kscib 中选择所有字段,使用“考生
2、号”建立两表之间的关系,样式为阴影式;按钮类型为图片按钮;排序字段为考生号(来自ksb),升序;表单标题为“考生数据输入维护“。 (2)在考生文件夹下打开命令文件 threeprg,该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号和姓名。并将查询结果存储到表 three 中。注意,该命令文件在第 3 行、第 6 行、第 9 行有错误,打开该命令文件,直接在错误处修改,不可改变 SQL语句的结构和短语的顺序,不允许增加、删除或合并行。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下创建一个下拉式菜单 mymenumnx,并生成菜单程序 mymenump
3、r。运行该菜单程序时会在当前 Visual FoxPro 系统菜单的“帮助”子菜单之前插入一个“考试”子菜单,如图 236 所示。(分数:2.00)_国家二级 VF 机试(操作题)-试卷 301 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)打开表单 one,如图 218 所示,通过设置控件的相关属性,使得表单运行时的开始焦点在“打开”命令按钮,并且接下来的焦点的移动顺序是“关闭”和“退出”。 (分数:2.00)_正确答案:(正确答案:(1)命令窗口执行: MODIFY FORM one ,打开表单设计器修改表单。 选择表单对象,修改控件
4、对象属性值,见表 320。 单击“常用”工具栏中的“运行”按钮查看结果,将表单文件保存到考生文件夹下。 (2)命令窗口执行: MODIFY FORM two ,打开表单设计器修改表单。右击工具栏的空白区域,选择【布局】快捷菜单命令,打开“布局”工具栏(若表单设计器中未显示该工具栏,则执行该操作)。 同时选中表单中的 3 个按钮,单击“布局”工具栏中的“项边对齐”按钮(第 3 个图标按钮),保存表单修改。如图 3-36 所示。 )解析:解析:本题考查了表单控件常用属性的设置;“布局”工具栏的使用;SQL 定义功能和操作功能。 表单设计中,可通过 TabIndex 属性设置控件获得焦点的先后次序,
5、通过“布局”工具栏可调整表单窗口中被选控件的相对大小和位置。 SQL 定义语句 CREATE TABLE 命令可以创建一个数据表,注意表结构内容要用圆括号括起来。二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下,打开招生数据库 sdb,完成如下简单应用:(1)使用一对多表单向导选择 ksb 表和kscib 表生成一个名为 two 的表单。要求从父表 ksb 中选择所有字段,从子表 kscib 中选择所有字段,使用“考生号”建立两表之间的关系,样式为阴影式;按钮类型为图片按钮;排序字段为考生号(来自ksb),升序;表单标题为“考生数据输入维护“。 (2)在考生文件夹下打开命令文件
6、threeprg,该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号和姓名。并将查询结果存储到表 three 中。注意,该命令文件在第 3 行、第 6 行、第 9 行有错误,打开该命令文件,直接在错误处修改,不可改变 SQL语句的结构和短语的顺序,不允许增加、删除或合并行。(分数:2.00)_正确答案:(正确答案:(1) 步骤 1:命令窗口执行: OPEN DATABAsE sdb ,打开 SDB 数据库。 步骤 2:执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在“新建”对话框中选“表单”选项,单击“向导”按钮, “向导选取”对话框中选“一对多表单向导”项,单击“
7、确定”,启动向导。 步骤 3:“步骤 1从父表选择字段”的“数据库和表”下选“kbs“表,将“可用字段”全部添加到“选定字段”中,单击“下一步”。 步骤 4:“步骤 2从子表选择字段”的“数据库和表”下选“kscib”表,将“可用字段”全部添加到“选定字段”中,单击“下一步”。 步骤 5:“步骤 3建立表之间的关系”中系统自动建立两个表的联系,单击“下一步”。 步骤 6:“步骤 4选择表单样式”的“样式”下选“阴影式”,在“按钮类型”下“图片按钮”,单击“下一步”。 步骤 7:“步骤 5排序次序”中双击“可用的字段或索引标识”中的“考生号”字段到“选定字段”列表中,再选择“升序”,单击“下一步
8、”。 步骤 8:“步骤 6完成”中的“请键入表单标题”下方输入“考生数据输入维护”,单击“完成”按钮。 步骤 9:在“另存为”对话框的“保存表单为:”框中输入表单文件名 two,单击“保存”按钮。 (2) 步骤 1:命令窗口执行: MODIFY COMMAND three ,打开 threeprg 程序,命令中的命令代码如下: *该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号和姓名。并将查询结果存储到表 THREE 中。 *该命令文件在第 3 行、第 6 行、第 9 行有错误,打开该命令文件。 *直接在错误处修改,不可改变 SQL 语句的结构和短语的顺序,不允许增加、删除或合并行。
9、 SELECT AVG(成绩); FROM kscjb; INTO CURSOR tem SELECT 考生号,姓名; FROM ksb; WHERE 考生号 EXISTS ; (SELECT*; FROM kscjb; WHERE 成绩 )解析:解析:(1)本题主要考查的是表单向导的使用。 (2)本题主要考查的是 SQL 简单查询和嵌套查询。本题先用一个 SQL 简单查询获得平均分,由于平均分是一个数字,并且以后还要将考生成绩与该平均分进行比较,所以应将其存放在一个数组中,而不是存放在临时表中,所以应将第一处错误 INTO CURSOR temp 改为 INTO ARRAY temp。 题中
10、第二个 SQL 语句为嵌套查询,使用了 exists 谓词,用来检查子查询中是否有结果返回。根据本题要求,要查找所有成绩都高于或等于平均分的学生的考生号和姓名,换句话说,也就是只要考生有一门成绩小于平均分,该考生就不符合条件。查询的基本过程是:对于外查询中的 ksb表中的每个考生号,在内查询中的 kscjb 表中判断是否该考生编号有一门成绩小于平均成绩,只要有一门成绩小于平均成绩,该考生号都不该被查找出来,故第二处错误是在外查询中的条件中应使用 not exists,而不是 exists。在内查询中,条件“成绩三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下创建一个下拉式菜单 m
11、ymenumnx,并生成菜单程序 mymenumpr。运行该菜单程序时会在当前 Visual FoxPro 系统菜单的“帮助”子菜单之前插入一个“考试”子菜单,如图 236 所示。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: CREATE MENU m_ymenu ,在弹出的“新建菜单”对话框中单击“菜单”图标按钮,打开菜单设计器。 步骤 2:在菜单设计器“菜单名称”列的文本框中输入“考试”,在“结果”下拉框中选择“子菜单”,单击“创建”按钮进入下级菜单设计,在“菜单名称”列的第 l、2 行文本框中依次输入子菜单名“统计”、“返回”,将“统计”和“返回”子菜单的“结
12、果”都设置为“过程”,单击“统计”子菜单行的“创建”命令按钮,打开过程编辑框编写过程代码。步骤 3:两个子菜单的命令代码如下: *“统计”子菜单的过程代码* SELECT Employee组别,SUM(Orders金额)AS 合计; FROM 订单管理!employee INNER JOIN 订单管理 1 0rders ; ON Employee职员号=Orders职员号; GROUP BY Employee组别 ; TNTO CURSOR RES SELECT Res组别,Employee姓名 AS 负责人,Res合计; FROM Res,Employee; WHERE Res组别=Empl
13、oyee组别; AND Employee职务=“组长“; ORDER BY Res合计 DESC; INTO TARLE tahbletwodhf *“返回”子菜单的命令代码* SET SYSMENU NOSAVE SET SYSMENU TO DEFAULT 步骤 4:执行【显示】【常规选项】菜单命令,在“位置”区域选中“在之前”单选项,然后在该选项后面出现的下拉框中选择“帮助(H)”,则新建立的子菜单会在当前 Visual FoxPro 系统菜单的“帮助“菜单命令前显示。 步骤 5:执行【菜单】【生成】菜单命令,在弹出的 Visual FoxPro 对话框中单击“是”按钮,接着系统会弹出“
14、生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件。 步骤 6:在命令窗口执行命令: DO mymenunapr ,运行菜单,并执行“统计”菜单命令。)解析:解析:本大题考查菜单的建立及使用;SQL 简单联接查询和分组计算查询。 表的建立和菜单的建立都属于比较基本的操作,注意向系统菜单追口菜单项时,应在菜单设计器中打开“常规选项”对话框进行设置。本题的关键是菜单命令中 SQI,查询、插入和更新语句的设计。编写程序代码基本思路如下: 首先利用 SQL 计算查询,统计每组的订单金额总和,将结果保存到临时表中,其中,利用 SUM()函数可以计算订单金额总和,利用 GROUP BY 短语按“组别”字段分组计算。 接着,对新生成的临时表与 Emp1 表进行联接查询,两个表的联接字段为“组别”(注意:该字段要作为临时表的输出字段,此处才可以进行联接),同时,通过 WHERE 短语筛选 Empl 表中职务为“组长”的职员记录(这可以保证一个订单金额总和字段仅与一条职员信息联接,否则将导致查询结果表中会生成多条职员记录与订单金额总和联接,因为同一个“组别”中有多个职员记录);最后将查询结果保存到永久性表中,完成查询。 菜单设计完成后,注意要生成可执行的菜单文件,并执行“统计”菜单命今。