1、国家二级 VF 机试(操作题)-试卷 64 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.在考生文件夹下,打开招生数据库 sdb,完成如下操作: (1)在 ksb 表中增加一个名为“备注”的字段、字段数据类型为“字符”、宽度为 30。 (2)在考生成绩表 kscb 中给成绩字段设置有效性规则和默认值,成绩=0 AND 成绩=0 AND 成绩=0 and 成绩=150,任“默认值”文本框中输入:0。 (3)在数据库设计器中,拖动 kbs 表“索引”卜方的主索引“考生号”到 kscib 表中“索引”下方的普通索引“考生号”上,为两个表建立联系。
2、选中 ksb 和kscib 两个表之间的关联线(被选中的线会变粗),先执行【数据库】【清理数据库】菜单命令,清空数据库表中带有删除标记的记录,然后执行【数据库】【编辑参照完整性】菜甲命令。在打开的“参照完整性”对话框的表格中:选择“更新”为“级联”;“删除”为“限制”; “插入”为“忽略”。单击“确定”保存修改。 (4)命令窗口执行: OPEN DATABASE sdb ,打开 sdb 数据库。 执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在“新建”在选“报表”,单击“向导”图标按钮, “向导选取”中选“报表向导”项,单击“确定”按钮,启动报表向导。 “步骤 1-字段选取
3、”的“数据库和表”卜选“ksb”表,将“可用字段”全部添加到“选定字段”中,单击“下一步”按钮。 “步骤 2-分组记录”中,单击“下一步”。 “步骤 3-选择报表样式”的“样式”下选择“随意式”,单击“下一步”。 “步骤 4-定义报表布局”的“列数”下输入“1”,在“字段布局”下选择“列”,在“方向”下选择“纵向”,单击“下一步”。 “步骤 5 一排序记录”中双击“可用的字段或索引标识”中的“考生号”宁段到“选定字段”列表中,再选择“升序”,单击“下一步”。 “步骤 6-完成”中“报表标题”卜输入“考生成绩一览表”,单击“完成”按钮。 在“另存为”对话框的“保存报表为:”框中输入报表文件名 o
4、ne,单击“保存”按钮。)解析:解析:本题考查了表结构的修改;有效性规则的建立及参照完整性的设置;报表向导的使用。 在表设计器中对表中字段建立有效性规则和设置默认值是操作,要注意先选中需要建立有效性规则的字段。 建参照完整性前要先建立两个表的关联,且一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立联系后要先清理数据库,再设置参照完整性。二、简单应用题(总题数:1,分数:2.00)2.在考生文件夹下,打开学生数据库 sdb,完成如下简单应用: (1)使用查询设计器设计一个名称为 svg的查询,查询每个“女”同学的学号(来自 student 表)、姓名、课程名、成绩和任
5、课教师(来自 teacher表的教师名),查询结果按学号升序排序并输出到表 one(查询去向)中。设计完成后,运行该查询。表 one中的字段分别为:学号、姓名、课程名、成绩、任课教师。 (2)在考生文件夹下,使用快捷菜单设计器设计一个名称为 smenu 的快捷菜单。要求如下: 菜单包括“数据浏览”和“退出”两个菜单项: “数据浏览”菜单包括“学生表”、“选课表”和“课程表”三个子菜单: . 学生表子菜单在过程中使用 SQL语句“SELECT*FROM student”查询学生表的记录。 . 选课表子菜单在过程中使用 SQL 语句“SELECT*FROM SC”查询学生选课表的记录。 . 课程表
6、选项在过程中使用 SQL 语句“SELECT*FROM course”查询课程表的记录。 “退出”菜单使用命令返回系统默认的菜单。(分数:2.00)_正确答案:(正确答案:(1)步骤 1:命令窗口执行: OPEN DATABASE sdb ,打开数据库环境。 步骤 2:命令窗口执行: CREATE QUERY svq ,打开查询设计器,在“添加表或视图”对话框中,分别双击student 表、sc 表、course 表和 teachei 表添加到查询设计器中,在查询设计器中自动建立 4 个表之间联系。 步骤 3:在“字段”选项卡的“可用字段”中,依次双击“student学号”、“student姓
7、名”、“course课程名”、“sc成绩”,添加到“选定字段”列表中;在“函数和表达式”下的文本框中输入表达式:teacher教师名 as 任课教师,再单击“添加”按钮,将其添加到“选定字段”列表中。 步骤 4:在“筛选”选项卡内的“字段名”列中选择“student性别”, “条件”列选择“=”, “实例”列输入“女”。 步骤 5:在“排序依据”选项卡内双击“选定字段”列表框中的“student学号”,将其添加到“排序条件”列表框中,在“排序选项”中选择“升序”。 步骤 6:执行【查询】一【查询去向】菜单命令,在“查询去向”对话框中单击“表”按钮,在“表名”中输入文件名 one,单击“确定”按
8、钮。 步骤 7:最后单击“常用”工具栏中的“运行”按钮查看结果,将查询文件保存到考生文件夹下。(2)步骤 1:命令窗口执行: CREATE MENu smenu ,弹出的“新建菜单”中单击“快捷菜单”按钮,打开菜单设计器。 步骤 2:在“菜单名称”列的文本框中依次输入“数据浏览”和“退出”两个主菜单名,“数据浏览”菜单命令的“结果”下拉框中选择为“子菜单”,单击“创建”按钮进入下级菜单设计,在“菜单名称”列的第 1、2、3 行文本框中依次输入子菜单名“学生表”、“选课表”和“课程表”,将 3个子菜单的“结果”都设置为“过程”,分别单击 3 个过程后面的“创建”按钮打开过程编辑器,编写过程代码。
9、 步骤 3:三个过程代码如下: “学生表”菜单命令:SELECT * FROM student。 “课程表”菜单命令:SELECT * FROM course。 “选课表”菜单命令:SELECT * FROM sc。 步骤 4:通过“菜单级”下拉框返回主菜单项设计界面,设置“退出”菜单项的“结果”列为“命令”,并输入命令语句: SET SYSMENU TO DEFAULT。 步骤 5:执行【菜单】【生成】菜单命令,在弹出的 Visual FoxPro 对话框中单击“是”按钮,系统会弹出“生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件(smenumpr)。)解析:解析:(1)本题主要
10、考查的是查询设计器的使用。应按照 student 表、sc 表、course 表和 teacher表的顺序将其添加到查询设计器,再根据题目要求从每个表中选取字段,设置查询条件等完成查询。 可在查询设计器“字段”选项卡的“函数和表达式”下的文本框中输入表达式,同时也可以通过打开“表达式生成器”对话框进行输入,可以通过 AS 短语指定为输入的表达式指定一个新的字段名。 (2)本题主要考查了快捷菜单的设计,快捷菜单仅包括一个弹出式菜单,其他设计基本上都与下拉菜单的设计一致。编写“退出”菜单命令时,要熟记返回系统菜单的命令语句: SET SYSMENU TO DEFAULT ;最后注意生成可执行菜单文
11、件。三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下创建一个顶层表单 myformSCX(表单的标题为“考试”),然后创建并在表单中添加菜单(菜单的名称为 mymenumnx,菜单程序的名称为 mymenumpr)。效果如图 3-29 所示。 (分数:2.00)_正确答案:(正确答案:步骤 1:命令窗口执行: CREATE FORM mvform ,打开表单设计器新建表单。设置表单(forml)的 Caption 属性为“考试”。 步骤 2:命令窗口执行: CREATE MENU mvmenu ,在“新建菜单”对话框中单击“菜单”按钮,打开菜单设计器。 步骤 3:在菜单设计器“菜
12、单名称”列的文本框中依次输入“计算”和“退出”两个主菜单名,将两个菜单项的“结果”都设置为“过程”,分别单击两个过程后面的“创建”按钮打开过程编辑器,编写过程代码。 步骤 4:两个过程代码如下: *“计算”菜单命令的过程代码* 1 CLOSE ALL 2 USE orders &以 orders 表为当前表 3 DO WHILE NOT EOF() 4 SELECT SUM(Orderitems数量*Goods单价)ZJE ; 5 FROM 订单管理! orderitemsINNER JOIN goods ; 6 ON orderitems商品号=Goocis商品号; 7 WHERE orde
13、ritems订单号:orders订单号;8 GROUP BY orderitems订单号; 9 INTO ARRAY TEMP 10 REPLACE 总金额 WITH TEMP 11 SKIP 12 ENDDO *“退出”菜单命令的过程代码* myform.release 步骤 5:执行【显示】【常规选项】菜单命令,在“常规选项”对话框中勾选“顶层表单”复选框,单击“确定”按钮,保存修改。 步骤6:执行【菜单】【生称】菜单命令,在弹出的对话框中单击“是”按钮,弹出“生成菜单”对话框,单击“尘成”按钮生成一个可执行的菜单文件(mymenumpr)。 步骤 7:命令窗口执行: MODIFY FOR
14、M mvform ,打开表单设计器。选中表单,设置表单(forml)的 ShowWindow 属性值为“2-作为顶层表单”。 步骤 8:编写表单的 LOAD 事件代码如下: DO mymenu.mpr WITH THIS,.T. 步骤 9:单击“常用”工具栏中的“运行”查看结果,保存表单文件,并分别执行“计算”和“退出”菜单命令。)解析:解析:本题主要考查了表单及常用控件的属性的设置、SQL 分组计算查询、菜单的建立、顶层表单的设置、DO WHILE 循环语句。 本题的重点是如何建立顶层表单和“计算”菜单项过程的编写。为顶层表单添加下拉式菜单,应先在“菜单设计器”中按要求设计下拉式菜单,然后做
15、两个设置:一是在“显示”菜单下的“常规选项”对话框中选择“顶层表单”复选框,说明该菜单应用在顶层菜单中,二是将表单的showwindow 属性值设置成“2-作为顶层表单”,使其成为顶层表单。 在顸层表单中运行菜单,格式为: DOWITH This,“ 其中文件名指定被调用的菜单程序文件,扩展名mpr 不能省略。This 表示当前表单对象的引用。通过可以为被添加的下拉式菜单的条形菜单指定一个内部名字,可以省略。在顶层表单的菜单中关闭表单,应该引用表单的名称(NAME 值),并使用 Release 方法关闭表单:Release。 “计算”菜单项过程的编写思路大概是: 先以 orders 表为当前表,利用 DO WHILE 循环语句对每条记录进行处理。DO WHILE 语句的功能是:从 orderitems 表和 qoods 表中求出和 0rders 表当前记录“订单号”相同的订单的总金额,并把该值保存在数组中,再用 REPLACE 命令将 orders 表当前记录的“总金额”字段值修改为数组中的值,即该订单的总金额。注意:在通过 orderitems 表和 goods 表查询某订单的总金额时,应该以“订单号”分组,用 SUM()函数求各商品的金额之和。然后将记录指针指向 orders 表的下一条记录,重新进行判断和处理,直到将 orders 表中的每一条记录都处理完毕。