1、国家二级 VF机试(操作题)模拟试卷 174及答案与解析 一、基本操作题 1 (1)打开表单 one,向其中添加一个组合框 (Combo1),并将其设置为下拉列表框。 (2)在表单 one中,通过 RowSource和 RowSourceType属性手工指定组合框Comb01的显示条目为 “上海 ”、 “北京 ”(不要使用命令指定这两个属性 )。 (3)向表单 one中添加两个命令按钮 Command1和 Command2,其标题分别为 “统计 ”和 “退出 ”。为 “退出 ”命令按钮的 Click事件写一条命令,执行该命 令时关闭和释放表单。 (4)为表单 one中的 “统计 ”命令按钮的
2、Click事件写一条 SQL命令,执行该命令时,将 “歌手表 ”中所有 “歌手出生地 ”与组合框 (Combo1)指定的内容相同的歌手的全部信息存入自由表 birthplace中。 二、简单应用题 2 (1)用 SQL语句查询至少有三门的课程成绩在 70分以上 (包括 70分 )的学生姓名,并将结果按升序存入表文件 results dbf,然后将该 SQL语句粘贴在 SQL TXT。文件的第二行 (只占一行 )。 (2)modi prg程序的功能是:先 为 “学生 ”表增加一个 “平均成绩 ”字段,数据类型为 N(6, 2);然后根据 “选课 ”表统计每个学生的平均成绩,并写入新添加的字段。
3、该程序有三处错误,请改正,使程序能正确运行 (在指定处修改,不允许增加或删除程序行 )。 三、综合应用题 3 score manager数据库中含有 3个数据库表 student、 score1和 course。 为了对 score manager数据库数据进行查询,设计一个表单 myform3(控件名为form1,表单文件名为 myform3)。表单标题为 “成绩查询 ”;表单有 “查询 ”(名称为commandl)和 “退出 ”(名称为 command2)两个命令按钮。表单运行时,单击 “查询 ”按钮,查询每门课程的最高分,查询结果中含 “课程名 ”和 “最高分 ”字段,结果按课程名升序保
4、存在表 new_table3。 单击 “退出 ”按钮,关闭表单。 注意:完成表单设计后要运行表单的所有功能。 国家二级 VF机试(操作题)模拟试卷 174答案与解析 一、基本操作题 1 【正确答案】 (1) 命令窗口执行: MODIFY FORM one,打开表单设计器新建表单。 通过 “表单控 件 ”工具栏向表单添加一个组合框 (Combo1),修改组合框的 Style属性值为: 2-下拉列表框。 (2)接上题,修改组合框 (Combo1)的 RowSourceType属性值为: 1-值; RowSource属性值为:上海,北京。 (3) 向表单添加两个命令按钮,修改命令按钮 (Comman
5、d1)的 Caption属性值为:统计;修改命令按钮 (Command2)的 Caption属性值为:退出。 “退出 ”按钮 Click事件代码: THISFORM RELEASE。 (4)“统计 ”按钮 (Command1)Click事件代码: 1 SELECT*FROM歌手表; 2 WHERE 歌 手 出 生 地 =THISFORM COMBO1 DISpLAYVALUE; 3 INTO DBF birthplace 【试题解析】 本题考查了表单控件的常用属性、事件和方法; SQL简单查询。 通过 “表单控件 ”工具栏可以向表单添加控件,在 “属性 ”面板中可以修改表单及控件的属性值,关闭
6、和释放表单的方法是 RELEASE。 SQL简单查询 中,可通过组合框的 DIsPLAYVALUE属性获得的值作为筛选条件。 二、简单应用题 2 【正确答案】 (1) 在命令窗口输入如下 SQL查询代码 (以下 SQL查询语句是通过查询设计器生成 ): 1 SELECT 学生姓名; 2 FROM 成绩管理 !学生 INNER JOIN成绩管理 !选课; 3 ON学生学号 =选课学号; 4 WHERE选课成绩 =70; 5 ORDER BY学生姓名; 6 GROUP BY学生 学号; 7 HAVING COUNT(选课课程号 )=3; 8 INTO TABLE results dbf 在命令窗口
7、执行命令: MODIFY FILE SQL,打开文本文件编辑器。将命令窗口的查询语句复制到 SQL文本文件中。 (2) 步骤 1:在命令窗口执行命令: MODIFY COMMAND modi,打开程序文件,文件中的命令代码如下: l CLOSE ALL 2 OPEN DATABASE 成绩管理 3 USE选课 IN 0 4 USE学生 EXCl, IN 0 5 *Error* MODIFY TABLE学生 ADD平均成绩 N(6, 2) 6 SELECT学生 7 *Error* DO WHILE EOF() 8 SELECT AVG(成绩 )FROM选课 WHERE 学号 =学生学号 INTO
8、 ARRAY cj 9 *Error* REPLACE平均成绩 =cj1 10 cj1=0 11 SKIP 12 ENDDO 13 CLOSE DATABASE 修改程序中的错误行,修改后的程序如下: CLOSE ALL OPEN DATABASE成绩管理 USE选课 IN 0 USE学生 EXCL IN 0 ALTER_TABLE学生 ADD平均成绩 N(6, 2) SELECT 学生 DO WHILE NOT EOF() SELECT AVG(成绩 ) FROM选课 WHERE学号 =学生学号 INTO ARRAY cj REPLACE平均成绩 WITH cj【 1】 cj1=0 SKIP
9、 ENDDO CLOSE DATABASE 步骤 2:保存文件修改,在命令窗口执行命令: DO MODI,执行程序文件。 【试题解析】 (1)本题主要考查的是 SQL分组计算的查询。根据题目要求, SQL语句主要设计思路如下: 首先对 “学生 ”和 “选课 ”表进行联接,联接条件为两个表中 “学号 ”相同的记录;接着筛选表中成绩 大于 70的所有记录 (通过 WHERE短语指出 ),对筛选后的记录按 “学号 ”字段分组 (通过 GROUP BY短语分组 ),然后通过 HAVING语句进一步限定分组条件,要求统计每组学号中 “课程号 ”记录总数大于等于 3,这样便可得出至少有三门课程成绩在 70
10、分以上的学生记录;查询结果最终保存在 results表中,输出字段只包括学生的 “姓名 ”字段。 (2)本题主要考查了 SQL定义功能; SQL简单计算查询; DO WHILE循环;visual FoxPro修改记录命令。题目所提供的源程序功能大致如下: 首先打开 “成 绩管理 ”数据库,并打开库中的数据表 “选课 ”和 “学生 ”;接着利用SQL定义功能修改表结构;然后利用 DO WHILE循环,依次计算 “选课 ”表中每个学生的平均成绩,计算条件为 “选课 ”表中的 “学号 ”字段值等于 “学生 ”表中当前记录的 “学号 ”字段值,并将平均成绩保存到数组中;最后利用 visual FoxP
11、ro修改记录命令 REPLACE将数组中的值赋给 “学生 ”表的 “平均成绩 ”字段。 本题第一处错误是表结构修改语句的错误,为表增加字段的关键字是 ADD而不是 AITER, ALTER只能用来修改已存在的字段;第二处错误是 DO WHILE循环格式错误,缺少 WHILE短语;第三处错误是修改记录命令格式错误,指定修改值的短语为 WITH而不是 SET。 三、综合应用题 3 【正确答案】 步骤 1:命令窗口执行: OPEN DATABASE score_manager,打开score manager数据库。 步骤 2:命令窗口执行: CREATE FORM myform3,打开表单设计器新建
12、表单。 步骤 3:向表单添加两个命令按钮控件。修改对象属性值。见表 3-33。 步骤 4:编写各个命令按钮的Click事件代码如下: *“查询 ”按钮 的 Click事件代码 *SELECT Course课程名, MAX(score1成绩 )as最高分; FROM score_manager!course INNERJOIN score_manager!score1 ; ON Course课程号 =score1课程号; GROUP BY score1课程号; ORDER BY Course课程名; INTO TABLE new table3 dbf *“退出 ”按钮的 Click事件代码 * THISFORM RELEASE 步骤 5:单击 “常用 ”工具栏中的 “运行 ”按钮运行表单。 【试题解析】 本题主要考查了表单及控件的常用属性的设置; SQL联接查询和分组计算查询。 SQL查询用了 score1和 course两张表,求每门课程的最高分,按照 “课程号 ”分组,求最大值用 MAX函数。