1、国家二级 VF机试(操作题)模拟试卷 191及答案与解析 一、基本操作题 1 (1)利用快捷菜单设计器创建一一个弹出式菜单 one,菜单有两个选项: “增加 ”和 “删除 ”,两个选项之间用分组线分隔。 (2)创建一个快速报表 app report,报表中包含了 “评委表 ”中的所有字段。 (3)建立一个数据库文件 “大奖赛 dbc”,并将 “歌手表 ”、 “评委表 ”和 “评分表 ”3个自由表添加到该数据库中。 (4)使用 SQL的语句 ALTER TABLE命令为 “评委表 ”的 “评委编号 ”字段增加有效性规则: “评委编号 ”的最左边两位字符是 11(使用 LEFT函数 ),并将该 S
2、QL语句存储在 three prg中,甭则不得分。 二、简单应用题 2 (1)打开程序文件 progerr prg,按文件中给出的功能要求改正其中的错误,以文件名 prognew prg重新保存该文件并运行程序。 (2)建立项层表单,表单文件名为myform scx,表单控件名为 myform,表单标题为 “顶层表单 ”。为顶层表单建立菜单 mymenu。菜单栏如图 224所示 (无下拉菜单 ),单击 “退出 ”菜单时,关闭释放此顶层表单,并返回到系统菜单 (在过 程中完成 )。 三、综合应用题 3 利用表设计器在考生文件夹下建立表。 table3,表结构如下: 学号 字符型 (10) 姓名
3、字符型 (6) 课程名 字符型 (8) 分数 数值型 (5, 1) 然后编写程序 progl prg,从 xuesheng表和 chengji表中找出所有成绩不及格 (分数小于 60)的学生信息 (学号、姓名、课程名和分数 ),并把这些数据保存到表 table3中 (若一个学生有多门课程不及格,在表 table3中就会有多条记录 )。表 table3中的各记录应该按 “分数 ”升序排序,分数相同则按 “学号 ”降序排序。 要求在程序中用 SET RELATION命令建立 chengji表和 xuesheng表之间的关联(同时用 INDEX命令建立相关的索引 ),并通过 DO WHII_, E循
4、环语句实现规定的功能。最后运行程序。 国家二级 VF机试(操作题)模拟试卷 191答案与解析 一、基本操作题 1 【正确答案】 (1) 命令窗口执行: CREATE MENU one,在 “新建菜单 “中单击 “快捷菜单 ”按钮,打开快捷菜单设计器。 在菜单设 计器 “菜单名称 ”列的文本框中输入 3个菜单项名 “增加 ”、 “ -”和 “删除 ”。执行【菜单】 【生成】菜单命令,生成一个可执行的菜单文件。 (2) 命令窗口执行: USE评委表 。 命令窗口执行: CREATE REPORT app_report,打开报表设计器,执行【报表】 【快速报表】菜单命令,在 “快速报表 ”对话框中单
5、击 “确定 ”按钮新建快速报表,预览和保存报表设计。 (3) 命令窗口执行: MODIFY DATABASE大奖赛 ,新建数据库并打开数据库 设计器。 在数据库设计器中右击鼠标,选择【添加表】,在 “打开 ”对话框中双击 “歌手表 ”添加到数据库中:同样的方法,再将 “评委表 ”和 “评分表 ”添加到数据库中。 (4) 命令窗口执行: MODIFY COMMAND three,打开程序文件编辑器中输入如下程序代码: ALTER TABLE评委表 ALTER评委编号 SETCHECK LEFT(评委编号,2)=“11“ 命令窗口执行: DO three,执行程序文件。 【试题解析】 本题考 查了
6、快捷菜单的设计;快速报表的创建;数据库的基本操作;字段有效性规则的设置。 快捷菜单仅包括一个弹出式菜单,其他设计基本上都与下拉菜单的设计一致。 在报表设计器中可通过菜单命令启动建立快速报表的功能,建立快速报表前应先指定报袁的数据源。 SQL的表结构修改语句: ALTER TABLEALTER | ADDSET CHECK可以设置表中指定字段的有效性规则。 二、简单应用题 2 【正确答案】 (1) 步骤 1:命令窗口执行: MODIFY COMMAND progerr,打开progerr程序文件,文件中的命令代码如下: *本题目需要在基本操作题的基础上完成。本程序在表 orders dbf的基础
7、上完成如下功能: *(1)创建视图 dewes,视图内容为按职工号统计订单金额 (每个职工经手的订单总金额 ),统计结果包括:职工号、总金额; *(2)从视图 viewes中查询订单总金额在 30000以上 (含 30000)的职工信息 (职工号,总金额 ),查询结果按总金额降序排序并存入表 newtable dbf。OPEN DATABASE ORDERSMANAGECREATE views AS; SELECT职工号,SUM(金额 )AS总金额; FROM ORDERS; GROUP BY职工号 SELECT*FROM ORDERS; WHERE总金额 =30000; ORDER BY总金
8、额 DESC;参改程序中的错误行,修改后的程序如下: OPEN DATABASE ORDERSMANAGE CREATE VIEW views AS ; &命令格式错误,建立视图命令要使用 CREATE VIEW SELECT职工号, SUM(金额 )AS总金额; FROM ORDERS; GROUP BY职工号SELECT*FROM views; &从视图 views中查找,不是从 orders表查询,是第二处错误 WHERE总金额 =30000; ORDER BY总金额 DESC; INTO TABLE newtable&将结果保存在表中 步骤 2:执行【文件】 【另存为】菜单命令,在弹出
9、的 “另存为 ”对话框的 “保存文档为: ”文本框中输入新的文件名: prognew,单击 “保存 ”命令保存文件。 步骤 3:命令窗口执行: DO prognew prg,执行程序。 (2) 步骤 1:命令窗口执行: CREATE MENU mymenu,在 “新 建菜单 ”中单击 “菜单 ”按钮。在菜单设计器 “菜单名称 ”中依次输入 “文件 ”、 “编辑 ”和 “退出 ”3个主菜单名。 步骤 2:选择 “退出 ”菜单命令的 “结果 ”项为 “过程 ”,单击 “过程 ”后面的 “创建 ”按钮打开过程编辑器,编写过程代码并输入命令语句: myform RELEASE。 步骤3:执行【显示】
10、【常规选项】菜单命令,在 “常规选项 ”中勾 选 “顶层表单 ”复选框,然后单击 “确定 ”保存修改。 步骤 4:执行【菜单】 【生成】菜单命令,在弹出的对话框中单击 “是 ”按钮,弹出 “生成菜单 ”对话框,单击 “生成 ”按钮生成一个可执行的菜单文件,关闭菜单设计器。步骤 5:命令窗口执行: CREATE FORM myform,打开表单设计器。选中表单,在 “属性 ”窗口中修改表单 (myform)的属性值,见表 3 27。 步骤 6:编写表单的 Load事件代码如下: DO mymenu mpr WITH THIS,“TTT“ 步骤 7:单击“常用 ”工具栏中的 “运行 ”按钮查看结果
11、, 将表单文件保存到考生文件夹下。 【试题解析】 (1)本题主要考查了利用 SQL命令建立视图; SQL分组查询; SQL排序查询。 SQL命令建立视图的基本命令格式为: CREATE VIEWAS,本题第一处错误是建立视图时的命令出错。 本题的第二处错误是要求从视图 views中查询数据,而不是 “orders”表,与题目要求不符 本题的第三处错误是,缺少查询结果取向语句,题目要求将查询结果保存在表NEWTABLE中,应使用 INTO TABLE或 INTO DBF语句。 (2)本题主要考查的是菜单在顶层表单中的应用。主要包括两大部分的操作,即菜单设计和表单设计。 菜单设计有两个关键操作:一
12、是在菜单设计器中勾选 “常规选项 ”对话框中的 “顶层表单 ”,表示此菜单存在顶层表单中;二是在释放表单时,要使用表单的文件名,即本题中可以通过 MAINFORM RELEASE命令释放 MAINFORM表单,注意不要使用 THISFORM RELEASE命令释放表单。 在表单设计过程中,要注意通过表单的 ShowWindow属性值将表单设置为顶层表单,在表单的 Load(或 INIT)事件中调用菜单文件,还需要通过 THIS短语指定当前表单对象的引用。其基本格式为: DOWITH THIS, “。 三、综合应用题 3 【正确答案】 步骤 1:在命令窗口执行命令: CREATEtable3,打
13、开数据表设计器新建表。 步骤 2:根据题意,在表设计器中逐行输入每个字段的字段名,并设置字段类型和宽度,然后单击 “确定 ”按钮,此时系统会弹出一个对话框询问 “现在输入数据记录吗 ?”,本题不需要录入数据,单击 “否 ”按钮。 步骤 3:在命令窗 口执行命令: MODIFY COMMAND prog1,打开程序文件编辑器。 步骤 4:在编辑器中输入如下程序代码: CLEAR CLOSE DATA ALL。 SELECT 0 USE TABLE3 DELE ALL PACK COPY TO TTT SELECT 0 USE TTT SELECT 0 USE XUE SHENG INDEX ON
14、学号 TAG学号 SELECT 0 USE CHENGJI SET RELATION TO学号 INTO XUESHENG GO TOP DO WHILE NOT EOF() IF数学 60 SELECT TTY。 APPEND BLANK REPLACE学号 WITH XUESHENG学号,姓名 WITH XUESHENG姓名 REPLACE课程名 WITH”数学 ”,分数 WITH CHENGJI数学 SELECT CHENGJI ENDIF IF英语 60 SELECT TTT APPEND BLANK REPLACE学号 WITH XUESHENG学号,姓名 WITH XUESHENG
15、姓名 REPLACE课程名 wITH”英语 ”,分数 WITH CHENGJI英语 SELECT CHENGJI ENDIF IF信息技术 60 SELECT TTT APPEND BLANK REPLACE学号 WITH XUESHENG学号,姓名 WITH XUESHENG姓名 REPLACE课程名 WITH“信息技术 “,分数 WITH CHENGJI信息技术 SELECT CHENGJI ENDIF SKIP ENDDO SELECT TTT SORT ON分数,学号 D TO TTT1 SELECT TABLE3 APPEND FROM TTT1 CLOSE DATA ALL 步骤
16、5:在命令窗口执行命令: DO prog1,执行文件。 【试题解析】 本大题考查了表的基本操作;程序文件的建立及运行;表间关联;表记录的插入及物理排序,务件程序结构和 DO WHLIE程序结构设计。本题所涉及的知识点比较多,需要考生非常清楚解题流程。基本解题思路可按以下步骤进行: 表的建立和程序的建立都属于比较基本的操作。本题的关键是程序文件代码的设计。编写程序代码基本思路如下: 根据题意,首先初始化数据表 table3(将记录清空,避免下次执行程序时,重复追加记录 ),然后将该表复制一个新的表文件 ttt,并在新的工作区中打开该表文件。 建立表间关联。在两个不同的工作区中打开 xueshen
17、q表和 chengji表,并为两个表建立索引,通过索引表达式对两个表建立关联。 查找 chengji表中不及格的成绩记录。利用 DOWHILE循环对 chengji表中的记录逐条处理,通过 IF条 件语句判断将不及格的记录,将其添加到 ttt表中。这里特别要注意的是不能将判断条件放在一个 IF语句中,因为题目要求 “若一个学生有多门课程不及格,在表 table3中就会有多和己录 ”,而 chengji表中共有 3门课程,因此,依次需要编写 3个 IF条件语句分别判断每个科目的不及格情况。 保存查询结果。将所有不及格记录排序输出到 ttt1表之后,再将 ttt1表的记录全部追力口到 table3表中。