1、国家二级 VF 机试-试卷 212 及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.在考生文件夹下完成下列操作(在“数据 1”数据库中完成): (1)为“student”表在“学号”字段上建立升序主索引,索引名为“学号”。 (2)为“student”表的“性别”字段定义有效性规则,规则表达式为:性别$“FM“;出错提示信息是:“性别必须是 M 或 F”。 (3)在“student”表的“性别”和“年龄”字段之间插入一个“出生日期”字段,数据类型为“日期型”(修改表结构)。 (4)用 SQL 的 UPDAT
2、E 命令将学生“赵飞”的出生日期修改为 1988 年 7 月 26 日,并将该语句保存在“resulttxt”文件中。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)打开程序文件 progerrprg,按文件中给出的功能要求改正其中的错误,以文件名 prognewprg重新保存该文件并运行程序。 (2)建立顶层表单,表单文件名为 myformscx,表单控件名为 myform,表单标题为“顶层表单”。为顶层表单建立菜单 mymenu。菜单栏如图 1-35 所示(无下拉菜单),单击“退出”菜单时,关闭释放此顶层表单,并返回到系统菜单
3、(在过程中完成)。 (分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.在考生文件夹下有股票信息表和股票交易表,请编写并运行符合下列要求的程序: 设计一个名为“cd1”菜单,菜单中有两个菜单项“计算”和“关闭”。 程序运行时,单击“计算”菜单项应完成的操作是计算每只股票的交易次数和买入最低价、卖出最高价,并存入股票信息表中。 根据股票交易表计算交易次数最多的股票代码和交易次数、平均买入价格存储到表“result”中。 单击“关闭”菜单项,程序终止运行。(分数:2.00)_国家二级 VF 机试-试卷 212 答案解析(总分:12.00,做题时
4、间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.在考生文件夹下完成下列操作(在“数据 1”数据库中完成): (1)为“student”表在“学号”字段上建立升序主索引,索引名为“学号”。 (2)为“student”表的“性别”字段定义有效性规则,规则表达式为:性别$“FM“;出错提示信息是:“性别必须是 M 或 F”。 (3)在“student”表的“性别”和“年龄”字段之间插入一个“出生日期”字段,数据类型为“日期型”(修改表结构)。 (4)用 SQL 的 UPDATE 命令将学生“赵飞”的出生日期修改为 1988 年 7 月 26
5、 日,并将该语句保存在“resulttxt”文件中。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口输入命令: USE student(回车执行) MO DIFY STRUCTURE(回车执行) 在“student”表设计器的“索引”选项卡的“索引名”中输入“学号”,选择索引类型为“主索引”,索引表达式为“学号”。 (2)在“student”表设计器的字段选项卡中,首先选择“性别”字段,然后在规则文本框中输入“性别$“MF“”,在信息文本框中输入“性别必须是 M 或 F“”,如图 80-1 所示。)解析:二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)
6、_解析:4.(1)打开程序文件 progerrprg,按文件中给出的功能要求改正其中的错误,以文件名 prognewprg重新保存该文件并运行程序。 (2)建立顶层表单,表单文件名为 myformscx,表单控件名为 myform,表单标题为“顶层表单”。为顶层表单建立菜单 mymenu。菜单栏如图 1-35 所示(无下拉菜单),单击“退出”菜单时,关闭释放此顶层表单,并返回到系统菜单(在过程中完成)。 (分数:2.00)_正确答案:(正确答案:(1)步骤 1:在命令窗口执行命令: MODIFY COMMAND progerr ,打开 progerr 程序文件,文件中的命令代码如下: 本题目需
7、要在基本操作题的基础上完成。本程序在表 ordersdbf 的基础上完成如下功能: (1)创建视图 vicwes,视图内容为按职工号统计订单金额(每个职工经手的订单总金额),统计结果包括:职工号、总金额: (2)从视图 viewes 中查询订单总金额在 30000 以上(含 30000)的职工信息(职工号,总金额),查询结果按总金额降序排序并存入表 newtabledbf,。 OPEN DATABASE ORDERSMANAGE CREATE views AS; SELECT 职工号,SUM(金额) AS 总金额; FROM ORDERS; GROUP BY 职工号 SELECT * FROM
8、 ORDERS ; WHERE 总金额=30000; ORDER BY 总金额 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
9、newtable &将结果保存在表中 步骤 2:执行【文件】【另存为】菜单命令,在弹出的“另存为”对话框的“保存文档为:”文本框中输入新的文件名:prognew,单击“保存”命令保存文件。 步骤 3:在命令窗口执行命令: DO prognewprg ,执行程序文件。 (2)步骤 1:在命令窗口执行命令: CREATE MENU mymenu ,在弹出的“新建菜单”对话框中单击“菜单”图标按钮,打开菜单设计器。在菜单设计器“菜单名称”列的文本框中依次输入“文件”、“编辑”和“退出”3 个主菜单名。 步骤 2:选择“退出”菜单命令的“结果”项为“过程”,单击“过程”后面的“创建”按钮打开过程编辑器
10、,编写过程代码并输入命令语句: myformRELEASE 。 步骤 3:执行【显示】【常规选项】菜单命令,在弹出的“常规选项”对话框中勾选“顶层表单”复选框,然后单击“确定”按钮,保存修改。 步骤 4:执行【菜单】【生成】菜单命令,在弹出的 Visual FoxPro 对话框中单击“是”按钮,接着系统会弹出“生成菜单”对话框,单击“生成”按钮生成一个可执行的菜单文件,关闭菜单设计器。 步骤 5:在命令窗口执行命令: CREATE FORMmyform ,打开表单设计器。选中表单,在“属性”窗口中修改表单(myform)的属性值,见表 2-37。 )解析:解析:(1)本题主要考查了利用 SQL
11、 命令建立视图;SQL 分组查询;SQL 排序查询。 利用 SQL 命令建立视图的基本命令格式为:CREATE VIEW视图名ASSELECT 语句,本题提供的源程序中,不难看出第一处错误是建立视图时的命令出错。 本题的第二处错误是根据题意得出,要求从视图 views 中查询数据,而提供的程序中所查找的数据源是“orders”表,与题目要求不符。 本题的第三处错误是,缺少查询结果取向语句,题目要求将查询结果保存在表 NEWTABLE 中,应使用 INTO TABLE 或 INTO DBF 语句。 (2)本题主要考查的是菜单在顶层表单中的应用。主要包括两大部分的操作,即菜单设计和表单设计。 操作
12、过程可按以下步骤进行: 通过菜单设计器建立菜单,注意主菜单和子菜单的建立。菜单设计有两个关键操作:一是在菜单设计器中勾选“常规选项”对话框中的“顶层表单”,表示此菜单存在顶层表单中;二是在释放表单时,要使用表单的文件名,即本题中可以通过 MAINFORMRELEASE 命令释放 MAINFORM 表单,注意不要使用 THISFORMRELEASE 命令释放表单。 在表单设计过程中,要注意将表单设置为顶层表单,通过表单的 ShowWindow 属性值可以进行设置,而在表单中调用菜单文件是在表单的 Load(或 INIT)事件中进行调用,还需要通过 THIS 短语指定当前表单对象的引用。其基本格式
13、为:DO三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.在考生文件夹下有股票信息表和股票交易表,请编写并运行符合下列要求的程序: 设计一个名为“cd1”菜单,菜单中有两个菜单项“计算”和“关闭”。 程序运行时,单击“计算”菜单项应完成的操作是计算每只股票的交易次数和买入最低价、卖出最高价,并存入股票信息表中。 根据股票交易表计算交易次数最多的股票代码和交易次数、平均买入价格存储到表“result”中。 单击“关闭”菜单项,程序终止运行。(分数:2.00)_正确答案:(正确答案:选择【文件】【新建】命令,选择“菜单”,单击“新建文件”按钮,再单击“菜单
14、”按钮,打开菜单设计器,在“菜单名称”中输入“计算”,在“结果”下拉列表框中选择“过程”;单击“创建”按钮创建“计算”过程,在过程代码编辑窗口中输入以下代码: SELECT 股票代码,COUNT(*),MIN(交易价格)INTO ARRAY aa1 FROM 股票交易 WHERE 交易类型=”买入” GROUP BY 股票代码 FOR i=1 TO ALEN(aa1)3 UPDATE 股票信息 SET 交易次数=aa1(i,2),买入最低价=aa1(i,3)wHERE 股票代码=aa1(i,1) NEXT SELECT 股票代码,COUNT(*),MAX(交易价格)INTO ARRAY aa2
15、 FROM 股票交易WHERE 交易类型=“卖出“ GROUP BY 股票代码 FOR i=1 TO ALEN(aa2)3 UPDATE 股票信息 SET 交易次数=aa2(i,2),卖出最高价=aa2(i,3)wHERE 股票代码=aa2(i,1) NEXT SELECT 股票代码,COUNT(*)AS 交易次数,AVG(交易价格)AS 平均买人价格 INTO CURSOR tmp FROM 股票 交易 GROUP BY 股票代码 SELECT TOP 1*INTO TABLE result FROM tmp ORDER BY 交易次数 DESC 关闭过程代码编辑窗口回到菜单设计器。 单击下一行,输入子菜单名称“关闭”,在“结果”下拉列表框中选择“命令”,在右边的文本框中编写命令:SET SYS MENU TO DEFAULT。 选择【菜单】【生成】命令,将菜单保存为“cd1”生成一个菜单文件“cd1mpr”,关闭菜单设计窗口。)解析: