1、国家二级 VF 机试-试卷 179 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)修改菜单 my_menu,my_menu 中的“文件”菜单项下有子菜单项“新建”“打开”、“关闭”和“退出”,请在“关闭”和“退出”之间加一条水平的分组线,并为“退出”菜单项设置一条返回到系统菜单的命令(不可以使用过程)。 (2)创建一个快速报表 sport_report,报表中包含了表“金牌榜”中的“国家代码”和“金牌数”两个字段。 (3)使用 SQL 建立表的语句建立一个与自由表“金牌榜”结构完全一样的自由表 g
2、oldendbf。请将该 SQL 语句存储在文件 oneprg 中,否则不得分。 (4)使用 SQL 语句向自由表 goldendbf 中添加一条记录(“011“,9,7,11)。请将该 SQL 语句存储在文件 twoprg 中,否则不得分。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)打开程序文件 progerrprg,按文件中给出的功能要求改正其中的错误,以文件名 prognewprg重新保存该文件并运行程序。 (2)建立顶层表单,表单文件名为 myformscx,表单控件名为 myform,表单标题为“顶层表单”。为顶层表
3、单建立菜单 mymenu。菜单栏如图 1-35 所示(无下拉菜单),单击“退出”菜单时,关闭释放此顶层表单,并返回到系统菜单(在过程中完成)。 (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.在考生文件夹下有 cj 表(含有学号、语文、数学、英语和学分 5 个字段),其中前 4 项已有数据。 请编写符合下列要求的程序并运行程序; 设计一个名为 myform 的表单,表单中有两个命令按钮,标题分别为“计算”和“退出”。程序运行时,单击“计算”按钮应完成下列操作: 计算每一个学生的总学分并存入对应的“学分”字段。学分的计算方法是:语文 60
4、 分以上(包括 60 分)2 学分,否则 0 分;数学 60分以上(包括 60 分)3 学分,否则 0 分;英语 60 分以上(包括 60 分)4 学分,否则 0 分。 根据上面的计算结果,生成一个新的表 temp(要求表结构的字段类型与 cj 表对应字段的类型一致),并且按“学分”降序排序,如果“学分”相等,则按“学号”升序排序。 单击“退出”按钮,程序终止运行。(分数:2.00)_国家二级 VF 机试-试卷 179 答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)修改菜单 my_menu,m
5、y_menu 中的“文件”菜单项下有子菜单项“新建”“打开”、“关闭”和“退出”,请在“关闭”和“退出”之间加一条水平的分组线,并为“退出”菜单项设置一条返回到系统菜单的命令(不可以使用过程)。 (2)创建一个快速报表 sport_report,报表中包含了表“金牌榜”中的“国家代码”和“金牌数”两个字段。 (3)使用 SQL 建立表的语句建立一个与自由表“金牌榜”结构完全一样的自由表 goldendbf。请将该 SQL 语句存储在文件 oneprg 中,否则不得分。 (4)使用 SQL 语句向自由表 goldendbf 中添加一条记录(“011“,9,7,11)。请将该 SQL 语句存储在文
6、件 twoprg 中,否则不得分。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口执行命令: MODIFY MENU my-menu ,打开菜单设计器,接着单击菜单设计器中“文件”行的“编辑”按钮进入子菜单界面。 选中“退出”子菜单命令,然后单击菜单设计器右边的“插入”命令按钮,插入一个菜单名称为“新菜单项”菜单行,修改菜单名称为:-。 修改“退出”菜单命令的“结果”项为“命令”,并输入命令语句: SET SYSMENU TO DEFAULT 。 执行【菜单】【生成】菜单命令,在弹出的 Visual FoxPro 对话框中单击“是”按钮,接着系统会弹出“生成菜单”对话框,单击“生成”
7、按钮生成一个可执行的菜单文件。 在命令窗口执行命令: DO my_menu mpr ,运行菜单查看结果。 (2)在命令窗口执行命令:USE 金牌榜,打开“金牌榜”表。 在命令窗口执行命令: CREATE REPORT sport_report ,打开报表设计器,然后执行【报表】【快速报表】菜单命令,在弹出的“快速报表”对话框中单击“字段”命令按钮,在弹出的“字段选择器”对话框中,将“国家代码”和“金牌数”两个字段添加到“选定字段”列表框中,单击“确定”按钮关闭“字段选择器”对话框。 接着单击“确定”按钮,关闭“快速报表”对话框,新建快速报表,预览并保存报表设计。 (3)在命令窗口执行命令: M
8、ODIFY COMMAND one ,打开程序文件编辑器。 在编辑器中输入代码: CREATE TABLE golden(国家代码 C(3),金牌数 I,铜牌数 I) 。 在命令窗口执行命令: DO oneprg ,执行程序文件。 (4)在命令窗口执行命令: MODIFY COMMAND two ,打开程序文件编辑器。在编辑器中输入代码: INSERT INTO golden VALUES(“011“,9,7,11) 。 在命令窗口执行命令: DO twoprg ,执行程序文件。)解析:解析:本题考查了菜单设计器的使用;快速报表的建立;SQL 查询语句;SQL 数据插入语句。 在菜单设计过程中
9、,注意插入的水平线同样是占一行菜单命令,水平线用“-”符号表示;快速报表的建立需要在报表设计器中进行,在报表设计器中可以通过菜单命令启动建立快速报表的功能,建立快速报表前应先指定报表的数据源;利用 SQL 的 CTREATE TABLE 命令可以新建数据表;SQL 插入语句只需直接套用命令格式即可完成本题表记录的插入。二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_解析:4.(1)打开程序文件 progerrprg,按文件中给出的功能要求改正其中的错误,以文件名 prognewprg重新保存该文件并运行程序。 (2)建立顶层表单,表单文件名为 myformsc
10、x,表单控件名为 myform,表单标题为“顶层表单”。为顶层表单建立菜单 mymenu。菜单栏如图 1-35 所示(无下拉菜单),单击“退出”菜单时,关闭释放此顶层表单,并返回到系统菜单(在过程中完成)。 (分数:2.00)_正确答案:(正确答案:(1)步骤 1:在命令窗口执行命令: MODIFY COMMAND progerr ,打开 progerr 程序文件,文件中的命令代码如下: 本题目需要在基本操作题的基础上完成。本程序在表 ordersdbf 的基础上完成如下功能: (1)创建视图 vicwes,视图内容为按职工号统计订单金额(每个职工经手的订单总金额),统计结果包括:职工号、总金
11、额: (2)从视图 viewes 中查询订单总金额在 30000 以上(含 30000)的职工信息(职工号,总金额),查询结果按总金额降序排序并存入表 newtabledbf,。 OPEN DATABASE ORDERSMANAGE CREATE views AS; SELECT 职工号,SUM(金额) AS 总金额; FROM ORDERS; GROUP BY 职工号 SELECT * FROM ORDERS ; WHERE 总金额=30000; ORDER BY 总金额 DESC; 修改程序中的错误行,修改后的程序如下: OPEN DATABASE ORDERSMANAGE CREATE
12、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:执行【文件】【另存为】菜单命令,在弹出的“另存为”对话框的“保存文档为:”文本框中输入新的文件名:prognew,单击“保存”命令保存文件。 步骤 3:
13、在命令窗口执行命令: DO prognewprg ,执行程序文件。 (2)步骤 1:在命令窗口执行命令: CREATE MENU mymenu ,在弹出的“新建菜单”对话框中单击“菜单”图标按钮,打开菜单设计器。在菜单设计器“菜单名称”列的文本框中依次输入“文件”、“编辑”和“退出”3 个主菜单名。 步骤 2:选择“退出”菜单命令的“结果”项为“过程”,单击“过程”后面的“创建”按钮打开过程编辑器,编写过程代码并输入命令语句: myformRELEASE 。 步骤 3:执行【显示】【常规选项】菜单命令,在弹出的“常规选项”对话框中勾选“顶层表单”复选框,然后单击“确定”按钮,保存修改。 步骤
14、4:执行【菜单】【生成】菜单命令,在弹出的 Visual FoxPro 对话框中单击“是”按钮,接着系统会弹出“生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件,关闭菜单设计器。 步骤 5:在命令窗口执行命令: CREATE FORMmyform ,打开表单设计器。选中表单,在“属性”窗口中修改表单(myform)的属性值,见表 2-37。 )解析:解析:(1)本题主要考查了利用 SQL 命令建立视图;SQL 分组查询;SQL 排序查询。 利用 SQL 命令建立视图的基本命令格式为:CREATE VIEW视图名ASSELECT 语句,本题提供的源程序中,不难看出第一处错误是建立视图时
15、的命令出错。 本题的第二处错误是根据题意得出,要求从视图 views 中查询数据,而提供的程序中所查找的数据源是“orders”表,与题目要求不符。 本题的第三处错误是,缺少查询结果取向语句,题目要求将查询结果保存在表 NEWTABLE 中,应使用 INTO TABLE 或 INTO DBF 语句。 (2)本题主要考查的是菜单在顶层表单中的应用。主要包括两大部分的操作,即菜单设计和表单设计。 操作过程可按以下步骤进行: 通过菜单设计器建立菜单,注意主菜单和子菜单的建立。菜单设计有两个关键操作:一是在菜单设计器中勾选“常规选项”对话框中的“顶层表单”,表示此菜单存在顶层表单中;二是在释放表单时,
16、要使用表单的文件名,即本题中可以通过 MAINFORMRELEASE 命令释放 MAINFORM 表单,注意不要使用 THISFORMRELEASE 命令释放表单。 在表单设计过程中,要注意将表单设置为顶层表单,通过表单的 ShowWindow 属性值可以进行设置,而在表单中调用菜单文件是在表单的 Load(或 INIT)事件中进行调用,还需要通过 THIS 短语指定当前表单对象的引用。其基本格式为:DO三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.在考生文件夹下有 cj 表(含有学号、语文、数学、英语和学分 5 个字段),其中前 4 项已有数据。
17、 请编写符合下列要求的程序并运行程序; 设计一个名为 myform 的表单,表单中有两个命令按钮,标题分别为“计算”和“退出”。程序运行时,单击“计算”按钮应完成下列操作: 计算每一个学生的总学分并存入对应的“学分”字段。学分的计算方法是:语文 60 分以上(包括 60 分)2 学分,否则 0 分;数学 60分以上(包括 60 分)3 学分,否则 0 分;英语 60 分以上(包括 60 分)4 学分,否则 0 分。 根据上面的计算结果,生成一个新的表 temp(要求表结构的字段类型与 cj 表对应字段的类型一致),并且按“学分”降序排序,如果“学分”相等,则按“学号”升序排序。 单击“退出”按
18、钮,程序终止运行。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令: CREATE FORM myform ,打开表单设计器新建表单。从“表单控件”工具栏中向表单添加两个命令按钮控件。 步骤 2:在“属性”面板的下拉框中选择表单对象,在“全部”选项卡中修改对象属性值,见表 2-41。 )解析:解析:本大题考查了表单命令按钮的常用属性和方法的设置;SQL 更新语句的使用。在设计程序代码时,一定要注意题目要求,所求的字段值是一个累加结果,而不是一项值的取值,因此,顺序执行各条更新语句时,都是在当前值的基础上进行操作。 另外要注意的是本题中的“学分”字段是一个数值型数据,因此,在进行计算前,要先定义一个初始的数值“0”给该字段,再执行 SQL 的数据更新语句。