1、国家二级 VF机试模拟试卷 84及答案与解析 一、基本操作题( 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 在考生文件夹下,打开招生数据库 sdb,完成如下简单应用: (1)使用一对多表单向导选择 ksb表和 kscb表生成一个名为 two的表单。要求从父表 ksb中选择所有字段,从子表 kscjb中选择所有字段,使用 “考生号 ”建立两表之间的关系,样式为阴
3、影式;按钮类型为图片按钮;排序字段为考生号 (来自 ksb),升序:表单标题为 “考生数据输入维护 ”。 (2)在考生文件夹下打开命令文件 three prg,该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号和姓名。并将查询结果存储到表 three中。注意,该命令文件在第 3行、第 6行、第 9行有错误,打开该命令文件,直接在错误处修改,不可改变 SQL语句的结构和短语的顺序,不允许增加、删除或合并行。 三、综 合应用题( 30分) 3 (1)请编写名称为 “cx”的命令程序并执行,该程序实现下面的功能:将 “商品信息 ”进行备份,备份文件名为 “b_商品信息 dbf”;将 “商品信
4、息 ”中 “商品编号 ”后两位编号小于 “03”(不含 03)的商品的 “价格 ”修改为原价的 95;使用 “价格调整 ”表对商品信息的部分商品价格进行修改 (按 “商品编号 ”相同为条件 )。 (2)设计一个名称为 “bd2”的表单,上面有 “调整价格 ”和 “关闭 ”两个命令按钮。单击 “调整价格 ”命令按钮时,凋用 “cx”命令程序实现商品价格调整;单击 “关闭 ”命令按钮时, 关闭表单。 注意:以上两个命令按钮均只含一条语句,不可以有多余的语句。 国家二级 VF机试模拟试卷 84答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1) 在命令窗口执行命令: MODIFY FOR
5、M one,打开表单设计器修改表单。 双击 “显示 ”命令按钮。编写按钮的 Click事件代码: THISFORM TEXT1 VALUE=YEAR(DATE() 单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 (2) 在命令窗口执行命令: MODIFY FORM two,打开表单设计器修改表单。 执行【表单】 【新建方法程序】菜单命令,在弹出的 “新建方法程序 ”对话框的 “名称 ”文本框中输入 “test”,单击 “添加 ”按钮新增方法,然后关闭对话框。 在 “属性 ”窗口中双击此方法,打开用户自定义过程代码框输入:THISFORM COMMAND1 E
6、NABLED= F 。 单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 (3) 在命令窗口执 行命令: USE课程表 ,打开 “课程 ”表。 在命令窗口执行命令: CREATE REPORT study_report,打开报表设计器,然后执行【报表】 【快速报表】菜单命令,在弹出的 “快速报表 ”对话框中单击 “确定 ”按钮新建快速报表,预览和保存报表设计。 (4)在命令窗口执行命令: ALTER TABLE 教师表 ALTER 职工号 SET CHECK LEFT(职工号, 3)=“110“。 【试题解析】 本大题考查了表单属性和方法的设置;快速报袁的建立
7、 ; SQL定义功能。 通过文本框的 Value属性可以指定文本框中显示的数据,本题要注意所涉及的函数的使用,求年份的函数为 YEAR(),求当前系统日期的函数为 DATE()。 在 visual FoxPro中,用户可以通过 “新建方法程序 ”对话框定义新方法名;然后定义该方法的功能代码:方法建立完毕后,用户可以像调用表单中其他方法一样调用新建的方法,通过设置控件的 Enabled属性可以指定控件是否可用。 快速报表的建立需要在报表设计器中进行,在报表设计器中可以通过菜单命令启动建立快速报表的功能, 建立快速报表前应先指定报表的数据源。 利用 SQL定义功能的表结构修改语句: ALTER T
8、ABLE 表名 ALTER ADD字段名 SET CHECK 表达式 可以设置表中指定字段的有效性规则。 二、简单应用题( 40分) 2 【正确答案】 (1)步骤 1:在命令窗口执行命令: OPEN DATABASE sdb,打开SDB数据库。 步骤 2:执行【文件】 【新建】菜单命令,或单击 “常用 ”工具栏的 “新建 ”按钮,在弹出的 “新建 ”对话框中选中 “表单 ”选项,然后单击 “向 导 ”图标按钮,系统弹出 “向导选取 ”对话框,选中 “一对多表单向导 ”项,单击 “确定 ”按钮,启动表单向导。如图 2-38所示。 步骤 3:在表单向导的 “步骤 1-从父表选择字段 ”界面的 “数
9、据库和表 ”下选中 “kbs”表,将 “可用字段 ”中的字段全部添加到 “选定字段 ”中,单击 “下一步 ”按钮。 步骤 4:在表单向导的 “步骤 2-从子表选择字段 ”界面的 “数据库和表 ”下选中 “kscjb”表,将 “可用字段 ”中的字段全部添加到 “选定字段 ”中,单击 “下一步 ”按钮。 步骤 5:在表单向导的 “步骤 3-建立表之间的关系 ”界面中系统自动建立两个表的联系,单击 “下一步 ”按钮。 步骤 6:在表单向导的 “步骤 4-选择表单样式 ”界面的 “样式 ”下选中 “阴影式 ”,在 “按钮类型 ”下选 择 “图片按钮 ”,单击 “下一步 ”按钮。 步骤 7:在表单向导的
10、 “步骤 5-排序次序 ”界面中双击 “可用的字段或索引标识 ”中的 “考生号 ”字段到 “选定字段 ”列表中,再选择 “升序 ”,单击 “下一步 ”按钮。 步骤 8:在表单向导的 “步骤 6-完成 ”界面中的 “请键入表单标题 ”下方文本框中输入 “考生数据输入维护 ”,单击 “完成 ”按钮。 步骤 9:在 “另存为 ”对话框的 “保存表单为: ”框中输入表单文件名 two,单击 “保存 ”按钮。 (2)步骤 1:在命令窗口执行命令: MODIFY COMMAND three,打开恤three prg程序,命令 中的命令代码如下: *该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号
11、和姓名。并将查询结果存储到表 THREE中。 *谈命令文件在笫 3行、第 6行、第 9行有错误,打开该命令文件。 *直接在错误处修改,不可改变 SQL语句的结构和短语的顺序,不允许增加、删除或合并行。SELECT AVG(成绩 ); FROM kscjb; INTO CURSOR tem SELECT 考生号,姓名;FROM ksb; WHERE 考生号 EXISTS; ( SELECT *; FROM kscjb; WHERE 成绩 tem(1),考生号 =ksb考生号 ); INTO TABLE three修改程序中的错误行,修改后的程序如下: SELECT AVG(成绩 ); FROM
12、kscjb, INTO ARRAY tem &将平均成绩存放到数组 array中 SELECT 考生号,姓名, &外查询,在 ksb表中将每一个考生编号与内查询的结果做比较 FROM ksb; WHERE NOT EXISTS;(SELECT*; &在内查询中的 kscjb表中判断是否该考生编号有一门成绩小于平均成绩 FROM kscjb; WHERE成绩 tem(1) and 考生 号 =ksb考生号 ); INTO TABLE three 步骤 2:保存文件修改,在命令窗口执行命令: DO three prg,执行程序文件。 【试题解析】 (1)本题主要考查的是表单向导的使用。操作比较简单
13、,只需根据向导提示一步步完成操作即可。 (2)本题主要考查的是 SQL简单查询和嵌套查询本题先用一个 SQL简单查询获得平均分,由于平均分是一个数字,并且以后还要将考生成绩与谊平均分进行比较,所以应将其存放在一个数组中,而不是存放在临时表中,所以应将第一处错误 INTO CURSOR temp改 为 INTO ARRAY temp。 题中第二个 SQL语句为嵌套查询,使用了 exists谓词,用来检查子查询中是否有结果返回根据本题要求,要查找所有成绩都高于或等于平均分的学生的考生号和姓名,换句话说,也就是只要考生有一门成绩小于平均分,该考生就不符合条件查询的基本过程是:对于外查询中的 ksb表
14、中的每个考生号,在内查询中的kscjb表中判断是否谊考生编号有一门成绩小于平均成绩,只要有一门成绩小于平均成绩,谊考生号都不该被查找出来,故第二处错误是在外查询中的条件中应使用 not exits,而不是 exists。在内查询中,条件 “成绩 temp(1)”和 “考生号=ksb考生号 ”应该用 AND联接。 三、综合应用题( 30分) 3 【正确答案】 (1)在命令窗口中输入命令: MODI COMM cx(回车执行 ),打开程序文件编辑窗口,在程序文件编辑窗口中输入以下程序代码: SELECT*INTO TABLE b_商品信息 FROM商品信息 UPDATE商品信息 SET价格 =价格
15、 *0 95 WHERE RIGHT(商品编号, 2) “03“ USE价格调整 GO TOP DO WHILE NOT EOF() aa=商品编号 bb=价格 UPDATE商品信息 SET价格 =bb WHERE商品编号 =aa SELECT价格调整 SKIP ENDDO CLOSE ALL 关闭程序文件编辑窗口并保存程序文件。 (2) 选择【文件】 【新建】命令,选择 “表单 ”,单击 “新建文件 ”按钮打开表单设计器,单击表单控件工具栏上的 “命令按钮 ”控件图标,为表单添加两个命令按钮Command1和 Command2。 在按钮属性窗口中将命令按钮 Command1的 Caption属性值修改为 “调整价格 ”,将命令按钮 Command2的 Caption属性值修改为 “关闭 ”。 双击 “调整价格 ”命令按钮,在 Click事件中输入代码: DO cx,用来执行工资调整程序。 双击 “关闭 ”命令按钮,在 Click事件中输入代码: ThisForm Release,用来关闭表单。 选择【表单】 【执行表单】命令,系统首先要求保存该表单文件,在弹出的“另存为 ”对话框中输入表单文件名 “bd2”,保存在考生文件夹下,然后运行 表单。