1、国家二级 VF 机试(操作题)-试卷 29 及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)建立菜单 query menu。该菜单只有“查询”和“退出”两个主菜单项(条形菜单),其中单击菜单项“退出”时,返回到 VFP 系统菜单(相应命令写存命令框中,不要写在过程中)。 (2)将 COURSE 表的“开课系部”字段名改为“开课单位”,其余不变。 (3)从数据库 score_managex 中移去表 temp2dbf(不是删除)。 (4)将 scorel 表中记录按学号从低到高排序,在学号相同的情况下再按成绩从高到低排序,排序结果存入表 N
2、EW_ORDER。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.(1)在考生文件夹下已有表单文件 formonescx,如图 3-26 所示,其中包含一个列表框、一个表格和一个命令按钮。 (分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.打开表单文件 sapp,并完成如下操作(不得有多余操作): 将“课程”表添加到表单的数据环境中。 使列表框 Listl 中的数据项为“课程”表中的课程名(课程课程名)。 单击列表框中的数据项时,统计选修了所选课程的学生人数(从“考试成绩”表),并将结果存储在以课程名命名的表中,表中只有一个字段“人数”。 添加一个命令按钮
3、 Commandl,单击该按钮时关闭表单。 说明:完成该程序后必须运行,并且分别统计选修了“数据库”和“操作系统”课程的学生人数。(分数:2.00)_国家二级 VF 机试(操作题)-试卷 29 答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.(1)建立菜单 query menu。该菜单只有“查询”和“退出”两个主菜单项(条形菜单),其中单击菜单项“退出”时,返回到 VFP 系统菜单(相应命令写存命令框中,不要写在过程中)。 (2)将 COURSE 表的“开课系部”字段名改为“开课单位”,其余不变。 (3)从数据库 score_managex 中移
4、去表 temp2dbf(不是删除)。 (4)将 scorel 表中记录按学号从低到高排序,在学号相同的情况下再按成绩从高到低排序,排序结果存入表 NEW_ORDER。(分数:2.00)_正确答案:(正确答案:(1)命令窗口执行: CREATE MENu query-menu ,在“新建菜单”对话框中单击“菜单”图标按钮,打开菜单设计器。 在“菜单名称”列的文本框中依次输入“查询”和“退出”两个主菜单名,在“退出”菜单“结果”下拉框中选择为“命令”,在后面的文本框中输入命令:SET SYSMENU TO DEFAULT。 (2)在命令窗口执行命令: MODIFY DATABASE SCOREMA
5、NAGER ,打开数据库设计器。 右击 course 表,选择【修改】,打开表设计器,将“字段”选项卡中的“开课系部”字段名修改为“开课单位”,单击“确定”按钮保存。 (3)右击 temp2 表,选择【删除】,弹出提示对话框中单击“移去”,接着弹出的提示对话框中单击“是”,将 temp2 表从数据库中移去。 (4)在命令窗口执行: SELECT * FROM SCOREl ORDER BY 学号,成绩 DESC INTO TABLE NEW ORDER 。)解析:解析:本题考查了菜单的建立、表结构的修改、数据库设计器的使用和 SQL 查询语句。 当将数据库表从数据库中移去后,就成为自由表。二、
6、简单应用题(总题数:1,分数:2.00)2.(1)在考生文件夹下已有表单文件 formonescx,如图 3-26 所示,其中包含一个列表框、一个表格和一个命令按钮。 (分数:2.00)_正确答案:(正确答案:(1)步骤 1:命令窗口执行: NODIFY FORM formone ,打开表单设计器修改表单。步骤 2:右击表单选择【数据环境】,在表单数据环境中击右键选择【添加】,在“添加表或视图”对话框中双击 orders 表添加到数据环境中。 步骤 3:选中表单中的列表框控件,将 RowSourceType 属性值设置为:8-结构,将 RowSource 属性值设置为:orderls,将 Mu
7、ltiSelect 属性值设置为:T;选中表格(Gridl)控件,将 RowSourceType 属性值设置为:4 一 SQL 说明。 步骤 4:“显示”按钮(Cormnandl)的 Click 事件代码如下: *“显示”按钮的 Click 事件代码* *下面代码的功能是根据用户对列表框的选择结果构建宁段列表,然后进一步构建 select 语句并据此为表格的相关属性设值。 *修改所有*FOUND*下面的一条语句。 *小能修改其他语句。不能增加语句,也不能删除语句。 1 s=“ 2 f=T 3 * FOUND * 4 FORi=1 TO thisformListlcolumnCOunt 6 IF
8、 thisformListlselected(i) 6 IF f 7 * FOUND * 8 s=thisformListlvalue 9 f=F 10 ELSE 11 *FOUND* 12 s=s+thisformListlvalue 13 ENDIF 14 ENDIF 15 ENDFOR 16 st=“select s from orders into cursor tmp” 17 thisformGridlRecordSource=st 命令按钮修改后的事件代码如下: 1 s=“ 2 f=T 3 * FOUND * 4 FOR i=1 TO thisformListlListCount
9、5 IF thisformListlSelected(i) 6 IF f 7 *FOuND* 8 s=thisformListlList(i) 9 f=F 10 ELSE 11 *FOUND* 12 s=s+“,“+thisformListlList(i) 13 ENDIF 14 ENDIF 15 ENDFOR 16 st=“select s from orders into cursor tmp“ 17 thisformGridlRecordsource=st 步骤 5:单击“常用”工具栏中的“运行”按钮查看结果,并单击“输出数据”按钮产生 tempdbf。表文件,保存。 (2)步骤 1:命
10、令窗口执行: OPEN DATABASE 订单管理,打开数据库环境。 步骤 2:命令窗口执行: CREATE QUERY quervone ,打开查询设计器,在“添加表或视图”对话框中,分别双击employee、orders 和 customer 表(注意:一定要按顺序添加表),将表添加到查询设计器中,此时,添加的表会按照数据库中已存在的表问联系自动为 3 个表在查询设计器中建立联系。 步骤 3:依次双击orders 表中的“订单号”、“签订日期”、“金额”字段,添加到“字段”选项卡的“选定字段”列表中;“字段”选项卡的“函数和表达式”下的文本框中输入:Employee 姓名 AS 签订者,单
11、击“添加”按钮添加到“选定字段”中;双击 customer 表中的“客户名”字段添加到“选定字段”列表中。 步骤 4: “筛选”选项卡的“字段名”中选择“orders签订日期”字段,“条件”下拉框中选择“=”,在“实例”框中输入:2001-05-01。 步骤 5:“排序依据”选项卡中双击“选定字段”列表框中的“Orders签订日期”字段添加到“排序条件”中,“排序选项”中选择“降序”;双击“选定字段”中的“Orders金额”字段添加到“排序条件”中,“排序选项”中选择“降序”单选项。 步骤 6:执行【查询】【查询去向】菜单命令,在弹出的“查询去向”对话框单单击“表”图标按钮,接着在“表名”中输
12、入文件名 tableone,单击“确定”按钮。 步骤 7:最后单击“常用”工具栏中的“运行”按钮查看结果,将查询文件保存剑考生文件夹下。)解析:解析:(1)本题主要考查了 FOR 循环语句;表单控件常用属性;宏替换函数。 本题需要了解列表框的两个重要属性:选中条目 SELECTED(I)和条目总数(LISTCOUNT)属性。程序要求实现的功能大致如下: 首先定义一个变量并赋值为空字符串,再定义一个变量,赋值为逻辑真。 接着使用 FOR 循环开始统计列表框中被选定的条目,循环初值为 1,终值为列表框中的条目数(该数值通过 LISTCOUNT 函数计算得出);进入循环体后,通过 IF 条件语句首先
13、判断列表框中条目是否被选中,如果选中,则执行第二个 IF 条件语句,否则返回 FOR 语句处,继续判断列表框的下一个条目。 第二个 IF 语句中,首先判断则逻辑变量的值是否为真,如果为真,则空字符串变量的值等于当前列表框的条目值,接着将逻辑变量的值指定为逻辑假,当执行一次该 IF 语句后,逻辑变量的值就始终为逻辑假了;在后面执行的条件判断语句中,当逻辑变量值为假时,字符串变量的值等于 S 值加上当前列表框中的条目值,此时,不会再执行逻辑变量为真的语句了。 最后,利用宏替换函数(&)将字符串中的数据替换出来,作为简单查询的输出字段;将查询结果保存到临时表中,并通过表格控件显示查询结果。 (2)本
14、题考查了查询设计器的使用。由于涉及 3 个表的连接查询,因此,要注意向查询设计器中添加表的顺序,保证各表之间在添加到查询设计器后能彼此建立联系。三、综合应用题(总题数:1,分数:2.00)3.打开表单文件 sapp,并完成如下操作(不得有多余操作): 将“课程”表添加到表单的数据环境中。 使列表框 Listl 中的数据项为“课程”表中的课程名(课程课程名)。 单击列表框中的数据项时,统计选修了所选课程的学生人数(从“考试成绩”表),并将结果存储在以课程名命名的表中,表中只有一个字段“人数”。 添加一个命令按钮 Commandl,单击该按钮时关闭表单。 说明:完成该程序后必须运行,并且分别统计选
15、修了“数据库”和“操作系统”课程的学生人数。(分数:2.00)_正确答案:(正确答案:步骤 1:命令窗口执行: OPEN DATABASE 学生管理,打开“学生管理”数据库环境。 步骤 2:命令窗口执行: MODIFY FORM sapp ,修改 sapp 表单。右击表单选择【数据环境】,在表单数据环境中单击右键选择【添加】,在“添加表或视图”对话框中双击“课程”,将表添加到数据环境中。 步骤 3:修改列表框(Listl)的“RowSourceType”属件值为:6-字段;再修改“RowSource”属性值为:课程课程名。 步骤 4:列表框(Listl)Click 事件代码如下: *木列表框(
16、Listl)的 Click 事件代码* 1 aa=课程课程名 2 SELECT COuNT(*)AS 人数 FROM 考试成绩; 3 WHERE 考试成绩课程编号=课程课程编号; 5 INTO TABLE aa 步骤 5:通过“表单控件”工具栏向表单添加一个命令按钮,编写按钮的 Click 事件代码:THISFORNRELEASE。 步骤 6:单击“常用”工具栏中的“运行”按钮查看结果,并分别单击“数据库”和“操作系统”,生成表文件。)解析:解析:本题考查了表单及控件的常用属性和方法的设置:SQL 简单的计算查询。 本题关键是怎样获取列表框所选条目的值。由于已经将“课程”表添加到数据环境中,当
17、表单运行时,“课程”被打开,其所在工作区即成为当前工作区,又因为列表框中数据与“课程”表的“课程名”字段绑定,所以列表框中所选条目的值,等于“课程”表当前记录的“课程名”的值。再利用 SQL 计算查询,在“考试成绩”表中查找并统计列表框中被选定条目(即课程名)的“选课人数”,利用 COUNT()计数函数可以统计“人数”。进行 SQL 语句设计时,因为“考试成绩”表中没有“课程名”字段,但题目给出的筛选条件是根据“课程名”进行统计选修课程的学生人数,所以可以将查找条件设置为“考试成绩”表的“课程号”与“课程”表当前记录(即列表框中被选课程名对应的记录)的“课程号”相等为条件,进行查询统计的操作。