1、国家二级 VF机试(操作题)模拟试卷 209及答案与解析 一、基本操作题 1 (1)打开数据库 SCORE MANAGER,该数据库中含三个有联系的表 STUDENT、SCORE1和 COURSE,根据已经建立好的索引,建立表之间的联系。 (2)为 COURSE表增加字段:开课学期 (N, 2, 0)。 (3)为 SCOR_El表 “成绩 ”字段设置字段有效。降规则: 成绩 =0,出错提示信息足: “成绩必须大 r或等于零 ”。 (4)将 SCORE1表 “成绩 ”字段的默认值设置为空值 (NULL)。 二 、简单应用题 2 (1)student是一个 “学生 ”表,其中包含学号 (C8)、姓
2、名 (C 8)、性别 (C 2)、政治面目 (C 4)、班级 (C 5)等字段。考生文件夹下的 modil prg程序文件的功能是显示输出所有政治面目为 “群众 ”的 “男 ”生的姓名和班级,每行输出一个学生的信息;程序中有三处错误,请加以改正。 说明:程序中 *ERROR FOUND*的下一行即为错误所在行。请用改正后的程序行覆盖错误所在行,不要插入或删除任何程序行。 (2)建立命令文件 sprog prg, 该命令文件包含如下两条语句: . 第一条语句使用 SQL UPDATE命令计算和更新 student表的年龄字段值 (计算年龄的表达式是 year(dat()-year(出生日期 )。
3、 . 第二条语句使用 SQLSELECT命令查询各种 “政治面目 ”的学生人数和平均年龄,并将结果存储于表 sqlresults(字段名是政治面目、人数和平均年龄 )。 说明:以上命令文件必须执行,并产生所要求的结果。 三、综合应用题 3 在考生文件夹下,打开名称为 CDB的商品销售数据库,完成如下综合应用: 创建一个标题名为 “顾客购买商品查询 ”、文件名为 GK的表单,如图 2 12所示。表单要求如下: 在该表单中设计两个标签、两个文本框、一个表格控件和两个命令按钮。 表单中两个标签的名称分别为 Label1和 Label2,其标题分别为 “顾客号 ”和 “应付款 ”;两个文本框的名称分别
4、为 Textl和 Text2,前者用于输入查询的顾客号,后者用于显示该顾客的应付款;表格 Gridl用于显示顾客购买商品的详细记录。 两个命令按钮的功能如下: “查询 ”按钮 (Command1):在该按钮的 Click事件中编写程序,采用 SQL语句根据第 1个文本框输入的顾客号进行查询。在表格控件中显示该顾客的顾客号和购买的每件商品的商品号、商品名、单价、数量和金额,各记录按商品号升序排序。该查询结果应同时存储到表 tjb dbf中。另外需要统计该顺客的应付款,并将结果显示于 Text2文本框中。 说明:金额 =单价 *数量,应付款 =顾客购买的商品金额合计。 “退出 ”按钮 (Comma
5、nd2):关闭并释放表单。 注意:表格控件的RecordSour ceType属性设置为 “4一 SQL说明 ”。 表单设计完成后,运行该表单,输入顾客号: 010003,单击 “查询 ”按 钮进行查询。 国家二级 VF机试(操作题)模拟试卷 209答案与解析 一、基本操作题 1 【正确答案】 (1) 在命令窗口执行命令: MODIFY DATABASE score_manaqer,打开 salary数据库设计器。 在数据库设计器中,拖动 student表 “索引 ”下方的主索引 “学号 ”到 score1表中“索引 ”下方的普通索引 “学号 ”上,为两个表建立联系;拖动 course表 “索
6、引 ”下方的主索引 “课程号 ”到 score1表中 “索引 ”下方的普通索引 “课程号 ”上,为两个表建立联系; (2)右 击数据库设计器中的 “course”表,选择【修改】快捷菜单命令,打开 course表设计器,在表设计器 “字段 ”选项卡的 “字段名 ”列的最后一个空白文本框中输入字段名 “开课学期 ”,在 “类型 ”下拉框中选择 “数值型 ”,在 “宽度 ”文本框中输入 “2”,保存表结构修改。 (3)在数据库设计器中,右击 score1表,选择【修改】快捷菜单命令,打开score1表设计器,在 “字段 ”选项卡中选中 “成绩 ”,在 “字段有效性 ”的 “规则 ”文本框中输入:成
7、绩 =0,在 “信息 ”文本框中输入: ”成绩必须大于或等于零 ”。 (4)接 上小题操作,单击 “成绩 ”行中 “NULL”列的无符号按钮,使其按钮被选中 (被选中的按钮上会出现一个 “”符号 ),在 “默认值 ”文本框中输入: NULL。保存表结构修改。 【试题解析】 本大题考查了表结构的修改;有效性规则的建立;永久联系的建立。 对表中字段建立有效性规则和设置默认值是在表设计器中操作的,在操作时要注意先选中需要建立有效性规则的字段。 二、简单应用题 2 【正确答案】 (1) 步骤 1:在命令窗口执行命令: MODIFY COMMAND modil,打开程序文件,文件中的 命令代码如下: 1
8、 SET TALK OFF 2 USE student 3 LOCATE FOR政治面目 =“群众 “ 4 “*error* DO WHILE NOT FOUND() 5 IF性别 =“男 “ 6 CONTINUE 7 *error* BREAK 8 ENDIF 9 7姓名,班级 10 *error* SKIP 11 ENDDO 12 USE 13 SET TALK ON 修改程序中的错误行,修改后的程序如下: 1 SET TALK OFF 2 USE student &打开 student表 3 LOCATE FOR政治面目 =“群众 “ &查找当前记录的 “政治面目 ”为 “群众 ” 4
9、DO WHILE FOUND() &循环条件为找到 “政治而目 “为 “群众 “的记录时进入循环 5 IF性别 =“男 “ &如果性别为 “女 ”,继续执行下面的语句,否则执行 ENDIF语句之后的语句 6 CONTINUE &返回到循环体起始位置继续重新判断下一条记录 “政治面目 ”值是否为 “群众 ” 7 LOOP &返旧到循环体起始位置,即 DO WHILE处重新判断,不再执行后面的语句 8 ENDIF &当 IF处条件不成立时,直接执行该语句后面的命令 9 ?姓名,班级 &当前面的 IF条件语句不成立时,执行该语句,显示当前记录的 “姓名 ”和 “班级 ”值 10 CONTINUE &
10、返回到循环体起始位置继续重新判断下一条记录 “政治面目 “值是行为 “群众 “ 11 ENDDO &当 DO WHILE处条件不成立时,直接退出循环体,执行该语句后面的命令 12 USE &关闭当前打开的表 13 SET TALK ON 步骤 2:保存文件修改,在命令窗口执行命令: DO modil prg,执行程序文件。 (2) 步骤 1:在命令窗口执行命令: MODIFY COMMAND sprog,打开程序文件编辑器。 步骤 2:在程序文件编辑器中输入如下代码 (相关 SQL查询语句是通过查询设计器生成 ): 1 UPDATE student SET年龄 =YEAR (DATE() -
11、YEAR(出生日期 ) 2 SELECT STUDENT政治面目, COUNT (STUDENT学号 )AS人数, AVG(STUDENT年龄 )AS平均年龄; FROM student; 4 GROUP BY student政治面目; 5 INTO TABLE sqlresults dbf 步骤 3:保存文件修改,在命令窗口执行命令: DO sprog prg,执行程序文件。 【试题解析】 (1)本题主要考查的是利用 Visual FoxPro命令查询定位数据表中的记 录。此类型的题主要通过一个 DO WHILE循环语句对表中的记录逐条比较,对满足条件的记录进行相关的操作。 本题中第一处错误
12、是循环条件的错误,进入循环体的条件是逻辑值为真,第二处错误中属于命令短语错误, visual FoxPro中没有 BREAK命令,第三处错误是SKIP命令错误,该命令虽然可以将当前记录指针指向下一条记录,但不再执行LOCATE FOR处的条件判断,如果要包含判断功能,则要使用 CONTINUE短语。本题程段中各语句的功能可参考 “操作步骤 ”中对各条语句的注释说明,这里不再细说。 (2)本 题考查了 SQL数据更新功能和分组计算查询功能。本题数据更新语句可直接套用 SQL更新语句的命令格式;对数据进行分组计算查询时,用来计数的函数为COUNT(),用来求平均值的函数为 AVG(),通过 AS短
13、语可以指定新的字段名,另外,对记录进行分组时,分组字段要设置正确,根据题意,本题的分组字段应为 “学生 ”表中的 “政治面目 ”字段。 三、综合应用题 3 【正确答案】 步骤 1:在命令窗口执行命令: CREATE FORM GK,打开表单设计器新建表单。 步骤 2:从 “表单工具栏 ”中依次向表单添加两个标签、两个文本框、一 个表格控件和两个命令按钮控件。在 “属性 ”面板的下拉框中选择表单对象,在 “全部 ”选项卡中修改对象属性值。见表 3 12。步骤 3:双击命令按钮,编写各个命令按钮的 Click事件代码。各按钮代码如下: *“查询 ”按钮的 click事件代码 * 1 GKH=THI
14、SFORM TEXT1 VALUE 2 THISFORM GRID1 RECORDSOURCE=“ SELECT Order顾客号, order商品号, Comm商品名, Comm单价, Order数量,; 3 Comm单价 *Order数量 as金额; 4 FROM comm INNER JOIN order; 5 ON Comm商品号 =order商品号; 6 WHERE Order顾客号 =ALLTRIM(THIS FORRM TEXBT1 VALUE); 7 ORDER BY 2; 8 INTO TABLE tjb dbf“ 9 SELECT SUMN(金额 ) FEOM TJB IN
15、TO ARRAY A 10 THISFORM TEXT2 VALUE=A(1) *“退出 ”按钮的 Click事件代码 * THISFORM RELEASE 步骤 4:单击 “常用 ”工具栏中的 “运行 ”按钮运行表单,在文本框中输入 “010003”,单击 “查询 ”命令按钮,然后单击 “退出 ”命令按钮结束。 【试题解析】 本题主要考查了表单及控件的常用属性的设置; SQL的简单查询和联接查询。 对本题操作时,首先根据题意新建表单,添加控件并修改其相关属性。 本题中的 SQL程序设计部分考查的是 SQL联接查询,属于比较简单的查询语句,注意正确引用文本框中的值即可;本题的 “应付款 ”可以通过数组保存,然后再赋给第二个文本框用来显示。