1、国家二级 VF机试模拟试卷 198及答案与解析 一、基本操作题( 30分) 1 (1)打开考生文件夹下的表单 one(如图 1-11所示 ),编写 “显示 ”命令按钮的 Click事件代码,使表单运行时单、击该命令按钮的结果是在 Text1文本框中显示当前系统日期的年份 (提示:通过设置文本框的 Value属性实现,系统日期函数是 date,年份函数是 year)。 (2)打开考生文件夹下的表单 two(如图 1-12所示 ),选择 “表单 ”菜单中的 “新建方法程序 ”命令,在 “新建方法程序 ”对话框中,为该表单新建一个方法 test,然后双击 表单,选择该方法编写代码,该方法的功能是使
2、“测试 ”按钮变为不可用 (提示:即将该按钮的 Enabled属性设置为 f )。 (3)创建一个快速报表study_report,报表中包含 “课程表 ”中的所有字段。 (4)为 “教师表 ”的 “职工号 ”字段增加有效性规则:职工号的最左边三位字符是 110,表达式应为: LEFT(职工号,3)=“110“。 二、简单应用题( 40分) 2 (1)用 SQL语句查询至少有三门的课程成绩在 70分以上 (包括 70分 )的学生姓名,并将结果按升序存入表文件 results dbf,然后将该 SQL语句粘贴在SQL TXT文件的第二行 (只占一行 )。 (2)modi prg程序的功能是:先为
3、 “学生 ”表增加一个 “平均成绩 ”字段,数据类型为 N(6, 2):然后根据 “选课 ”表统计每个学生的平均成绩,并写入新添加的字段。 该程序有三处错误,请改正,使程序能正确运行 (在指定处修改,不允许增加或删除程序行 )。 三、综合应用题( 30分) 3 在考生文件夹下,打开公司销售数据库 SELLDB,完成如下综合应用: 设计一个表单控件名为 form one、表单文件名为 sd_select、表单标题名为 “部门 年度数据查询 ”的表单,其表单界面如图 1-5所示。其他要求如下: 为表单建立数据环境,向数据环境添加 s_t表 (Cursorl)。 当在 “年度 ”标签右边的微调控件中
4、 (Spinner1)选择年度并单击 “查询 ”按钮 (Command1)时,则会在下边的表格 (Grid1)控件内显示该年度各部门四个季度的销售额和利润。指定微调控件上箭头按钮 (SpinnerHighValue属性 )与下箭头按钮 (SpinnerLowValue属性 )值范围为 2010-1999,缺省值 (Value属性 )为 2003,增量 (Increment属性 )为 1。 单击 “退出 ”按钮 (Command2)时,关闭表单。 要求:表格控件的 RecordSourceType属性设置为 “4-SQL,说明 ”。例如,查询 2003年的记录。 国家二级 VF机试模拟试卷 19
5、8答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1) 在命令窗口执行命令: MODIFY FORM one,打开表单设计器修改表单。 双击 “显示 ”命令按钮。编写按钮的 Click事件代码: THISFORM TEXT1 VALUE=YEAR(DATE() 单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 (2) 在命令窗口执行命令: MODIFY FORM two,打开表单设计器修改表单。 执行【表单】 【新建方法程序】菜单命令,在弹出的 “新建方法程序 ”对话框的 “名称 ”文本框中输入 “test”,单击 “添加 ”按钮新增方法,然后关闭
6、对话框。 在 “属性 ”窗口中双击此方法,打开用户自定义过程代码框输入:THISFORM COMMAND1 ENABLED= F 。 单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 (3) 在命令窗口执行命令: USE课程表 ,打开 “课程 ”表。 在命令窗口执行命令: CREATE REPORT study_report,打开报表设计器,然后执行【报表】 【快速报表】菜单命令,在弹出的 “快速报表 ”对话框中单击 “确定 ”按钮新建快速报表,预览和保存报表设计。 (4)在命令窗口执行命令: ALTER TABLE 教师表 ALTER 职工号 SET CHE
7、CK LEFT(职工 号, 3)=“110“。 【试题解析】 本大题考查了表单属性和方法的设置;快速报袁的建立; SQL定义功能。 通过文本框的 Value属性可以指定文本框中显示的数据,本题要注意所涉及的函数的使用,求年份的函数为 YEAR(),求当前系统日期的函数为 DATE()。 在 visual FoxPro中,用户可以通过 “新建方法程序 ”对话框定义新方法名;然后定义该方法的功能代码:方法建立完毕后,用户可以像调用表单中其他方法一样调用新建的方法,通过设置控件的 Enabled属性可以指定控件是否可用。 快速报表的建立需要在报表设计器中进行,在报表设计器中可以通过菜单命令启动建立快
8、速报表的功能,建立快速报表前应先指定报表的数据源。 利用 SQL定义功能的表结构修改语句: ALTER TABLE 表名 ALTER ADD字段名 SET CHECK 表达式 可以设置表中指定字段的有效性规则。 二、简单应用题( 40分) 2 【正确答案】 (1) 在命令窗口输入如下 SQL查询代码 (以下 SQL查询语句是通过查询设计器生成 ): SELECT 学生姓名; FROM 成绩管理 !学生 INNER JOIN成绩管理 !选课; ON 学生学号 =选课学号; WHERE 选课成绩 =70; ORDER BY 学生姓名; GROUP BY 学生学号; HAVING COUNT(选课课
9、程号 ) =3; INTO TABLE results dbf 在命令窗口执行命令: MODIFY FILE SQL,打开文本文件编辑器。将命令窗口的查询语句复制到 SQL文本文件中。 (2)步骤 1:在命令窗口执行命令: MODIFY COMMAND modi,打开程序文件,文件中的命令代码如下: CLOSE ALL OPEN DATABASE 成绩管理 USE 选课 IN 0 USE 学生 EXCL IN 0 *Error* DO WHILE EOF() SELECT AVG(成绩 )FROM选课 WHERE学号 =学生学号 INTO ARRAY cj *Error* REPLACE 平均
10、成绩 =cj1 cj1=0 SKIP ENDDO 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 cj1 cj1=0 SKIP ENDDO CLOSE DATABASE 步骤 2:保存文件修改,在命令窗口
11、执行命令: DO MODI,执行程序文件。 【试题解析】 (1)本题主要考查的是 SQL分组计算的查询。根据题目要求, SQL语句主要设计思路如下: 首先对 “学生 ”和 “选课 ”表进行联接,联接条件为两个表中 “学号 ”相同的记录;接着筛选表中成绩大于 70的所有记录 (通过 WHERE短语指出 ),对筛选后的记录接 “学号 ”字段分组 (通过 GROUP BY短语分组 ),然后通过 HAVING语句进一步限定分组条件,要求统计每组学号中 “课程号 ”记录总数大于等于 3,这样便可得出至少有三门课程成绩在 70分以上的学生记录;查询结果最终保存在 results表中,输出字段只包括学生的
12、“姓名 ”字段。 (2)【本题主要考查了 SQL定义功能; SQL简单计算查询; DO WHILE循环;Visual FoxPro修改记录命令。题目所提供的源程序功能大致如下: 首先打开 “成绩管理 ”数据库,并打开库中的数据表 “选课 ”和 “学生 ”;接着利用SQL定义功能修改表结构;然后利用 DO WHILE循环,依次计算 “选课 ”表中每个学生的平均成绩,计算条件为 “选课 ”表中的 “学号 ”字段值等于 “学生 ”表中当前记录的 “学号 ”字段值,荆将均成绩保存到数组中;最后利用 Visual FoxPro修改记录命令 REPLACE将数组中的值赋给 “学生 ”表的 “平均成绩 ”字
13、段。 本题第一处错误是表结构修改语句的错误,为表增加字段的关键字是 ADD而不是 ALTER, ALTER只能用来修改已存在的字段;第二处错误是 DO WHILE循环格式错误,缺少 WHILE短语;第三处错误是修陡记录命令格式错误,指定修改值的短语为 WITH而不是 SET。 三、综合应用题( 30分) 3 【正确答案】 步骤 1:在命令窗口执行命令: CREATE FORMsd_select,打开表单设计器新建表单。从 “表单控件 ”工具栏中依次向表单添加一个标签、一个微调器、两个命令按钮和一个表格控件。 步骤 2:在 “属性 ”面板的下拉框中选择表单对象,在 “全部 ”选项卡中修改对象属性
14、值,见表 2-7。步骤 3:右击表单选择【数据环境】快捷菜单命令。在 “添加表或视图 ”对话框中双击 s_1表,将表添加到数据环境中 (如果没有弹出 “添加表或视图 ”对话框,则在表单数据环境中单击右键选择【添加】快捷菜 单命令打开 )。 步骤 4:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下: *“查询 ”按钮的 Click事件代码*THISFORM GRID1 RECORDSOURCE=“; SELECT * FROM s_t; WHERE 年度 =ALLTRIM(THISFORM SPINNER1 TEXT); &年度等于微调器中显示的数值 INTO CURSOR
15、temp“ *“退出 ”按钮的 Click 事件代码 * THISFORM RELEASE 步骤 5:单击 “常用 ”工具栏中 的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 【试题解析】 本大题考查了表单及控件的常用属性和方法的设置; SQL简单查询。 对本题操作时,首先根据题意新建表单、添加控件并修改相关属性。修改控件属性值时,要注意微调控件 (Spinner1)的 4个重要属性值的设置:上限值(SpinnerHighValtle属性 )、下限值 (SpinnerLowValue属性 )、缺省值 (value属性 )和每次单击微调器时数值的变化值 (Increment属性 )另外,由于表格 (Grid1)显示的是查询结果的值,因 此数据源类型 (RecordSourceType)应为 “4-SQL查询 ”,用来显示查询生成的临时表记录。 SQL程序设计部分考查的是 SQL简单查询,属于最简单的查询语句,只需注意在指定查询条件的时候,所查找的年度值要等于微调器中显示的数值,微调器的值可以通过 Text属性获得,注意不要与 Value属性混淆。