1、国家二级 VF机试(操作题)-试卷 145及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.在考生文件夹下,有一个学生数据库 sdb,打开该数据库,完成如下操作:(1)为学生表 student的“性别”字段增加约束:性别$”男女”,出错提示信息为“性别必须是男或女”,默认值为“女”。 (2)为学生表 student创建一个主索引,主索引的索引名为 sid,索引表达式为学号。为课程表 course创建一个主索引,主索引的索引名为 cid,索引表达式为课程号。为选课表 sc创建一个主索引和两个普通索引(升序),主索引的索引名为 scid,索引表达式为
2、“学号+课程号”;一个普通索引的索引名为 sid,索引表达式为学号;另一个普通索引的索引名为 cid,索引表达式为课程号。 (3)通过“学号”字段建立选课表 sc和学生表 student表间的永久联系。通过“课程号”字段建立选课表 sc与课程表 course间的永久联系。并为以上建立的联系设置参照完整性约束:更新规则为“级联”;删除规则为“限制”;插入规则为“限制”。 (4)使用报表向导建立一个简单报表。要求选择学生表 student表中所有字段;记录不分组;报表样式为“随意式”:列数为“1”,字段布局为“列”,方向为“纵向”;排序字段为“学号”,升序;报表标题为“学生基本情况一览表”;报表文
3、件名为 onefrx。(分数:2.00)_二、简单应用题(总题数:1,分数:2.00)2.(1)歌手比赛分为四个组,“歌手表”中的“歌手编号”字段的左边两位表示了该歌手所在的组号。考生文件夹下的程序文件 fiveprg 的功能是:根据“歌手表”计算每个组的歌手人数,将结果填入表onedbf,表 onedbf 中有两个字段:“组号”和“歌手人数”。程序中有 3处错误,请修改并执行程序。注意:只能修改标有错误的语句行,不能修改其他语句,数组名 A不允许修改。 (2)建立一个数据库文什“歌手人奖赛dbc”,并将“歌手表”、“评委表”和“评分表”3 个自由表添加到该数据库中。使用视图没计器建立视图 s
4、onger_view,该视图根据“歌手表”、“评委表”和“评分表”建立,视图中的字段项包括:“评委姓名”、“歌手姓名”、 “分数”,视图中的记录按“歌手姓名”升序、“分数”降序排列。(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.在考生文件夹下,打开招生数据库 sdb,完成如下综合应用: 创建文件名为 form的表单,将表单标题改为:录取研究生。 在表单中设计“录取”和“退出”两个按钮。两个按钮功能分别如下: . 在“录取”按钮(Command1)中,编写程序,查询总成绩大于或等于 330分的考生的“考生号”、“姓名”、“性别”、“单位”和该生的“政治成绩”、“外语成绩”、
5、“高数成绩”(即高等数学成绩)、“专业课成绩”、“总成绩”,并将结果按“总成绩”降序排序存储到表 four中。表 four(需要自己创建或生成)的字段名为:“考生号”、“姓名”、“性别”、“单位”、“政治成绩”、“外语成绩”、“高数成绩”、“专业课成绩”、“总成绩”(各成绩字段的类型为 N(5,1),其他字段的类型与原表中一致)。 . 单击“退出”按钮(Command2)时,关闭表单。 表单设计完成后,运行表单,单击“录取”按钮进行统计,然后单击“退出”按钮关闭表单。 注:在考试科目代码表 dm中存储了各考试科目与考试科目名对应关系。(分数:2.00)_国家二级 VF机试(操作题)-试卷 14
6、5答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.在考生文件夹下,有一个学生数据库 sdb,打开该数据库,完成如下操作:(1)为学生表 student的“性别”字段增加约束:性别$”男女”,出错提示信息为“性别必须是男或女”,默认值为“女”。 (2)为学生表 student创建一个主索引,主索引的索引名为 sid,索引表达式为学号。为课程表 course创建一个主索引,主索引的索引名为 cid,索引表达式为课程号。为选课表 sc创建一个主索引和两个普通索引(升序),主索引的索引名为 scid,索引表达式为“学号+课程号”;一个普通索引的索引名为
7、sid,索引表达式为学号;另一个普通索引的索引名为 cid,索引表达式为课程号。 (3)通过“学号”字段建立选课表 sc和学生表 student表间的永久联系。通过“课程号”字段建立选课表 sc与课程表 course间的永久联系。并为以上建立的联系设置参照完整性约束:更新规则为“级联”;删除规则为“限制”;插入规则为“限制”。 (4)使用报表向导建立一个简单报表。要求选择学生表 student表中所有字段;记录不分组;报表样式为“随意式”:列数为“1”,字段布局为“列”,方向为“纵向”;排序字段为“学号”,升序;报表标题为“学生基本情况一览表”;报表文件名为 onefrx。(分数:2.00)_
8、正确答案:(正确答案:(1)命令窗口执行: MODIFY DATABASE sdb ,打开数据库设计器。 数据库设计器中,右击 student表,选择【修改】,打开表设计器,“字段”选项卡中选中“性别”,“字段有效性”的“规则”中输入:性别$“男女“,“信息”框中输入:”性别必须是男或女”,“默认值”文本框中输入:“女“。 (2)接上题,在 student表设计器中,“字段”选项卡中选中“学号”,“索引”列中选“升序”,在“索引”选项卡中修改“索引名”为“sid”,修改“类型”为“主索引”,单击“确定”按钮保存表结构修改。 与上题同样的方法为 course表建立名为“cid”,的“主索引”,单
9、击“确定”按钮保存表结构修改。 数据库设计器中,右击 sc表选择【修改】,打开表设计器,“索引”选项卡中,“索引名”下方的文本框中输入“scid”,“索引”选项卡中将“类型”选择为“主索引”,“表达式”下方的文本框中输入“学号+课程号”,建立主索引。 接第步,在 SC表设计器的“索引“选项卡中,第二行的“索引名”文本框中输入“sid”,将“类型”选择为“普通索引”,“表达式”下方的文本框中输入“学号”,建立一个普通索引;在第三行的“索引名”文本框中输入“cid”,“类型”选择为“普通索引”,“表达式”中输入“课程号”,建立普通索引,单击“确定”保存修改。 (3)在数据库设计器中,拖动 stud
10、ent表“索引”下方的主索引“sid”到 sc表中“索引”下方的普通索引“sid”上,为两个表建立联系。 拖动 course表“索引”下方的主索引“scid”到 Sc表中“索引”下方的普通索引“cid”上,为两个表建立联系。 选中 student和 sc两个表之间的关联线(被选中的线会变粗),首先执行【数据库】【清理数据库】菜单命令,清空数据库表中带有删除标记的记录,然后执行【数据库】【编辑参照完整性】菜单命令。在打开的“参照完整性”对话框的表格中,将其中的两对关系均做如下操作:选择“更新”下的单元格内容为“级联”;“删除”下的单元格内容为“限制”;“插入”下的单元格内容为“限制”。单击“确定
11、”按钮保存参照完整性的修改。 (4)命令窗口执行:OPEN DATABASE sdb,打 开 sdb数据库。 执行【文件】【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在弹出的“新建”对话框中选中“报表”选项,单击“向导”按钮,弹出“向导选取”对话框,选中“报表向导”项,单击“确定”按钮,启动报表向导。 “步骤 1字段选取”的“数据库和表”下选student表,将“可用字段”中的字段全部添加到“选定字段”中,单击“下一步”按钮。 “步骤2分组记录”中,单击“下一步”按钮。 “步骤 3选择报表样式”的“样式”下选择“随意式”,单击“下一步”按钮。 “步骤 4定义报表布局”的“列数”下输入
12、“1”,在“字段布局”下选“列”,在“方向”下选“纵向”,单击“下一步”按钮。 “步骤 5排序记录”中双击“可用的字段或索引标识”中的“学号”字段到“选定字段”中,再选择“升序”,单击“下一步”按钮。 “步骤6完成”中“报表标题”下方文本框中输入“学生基本情况一览表”,单击“完成”按钮。 在“另存为”对话框的“保存报表为:“框中输入报表文件名 one,单击“保存”按钮。)解析:解析:本题考查字段有效性规则的建立;表索引的建立;数据库表间永久联系的建立和参照完整性约束的设置;报表向导的使用。 建立有效性规则和设置默认值是在表设计器中操作的,要注意先选中需要建立有效性规则的字段。在表设计器的“字段
13、”选项卡中,可以选择“排序”下拉框中的“升序”或“降序”为指定的字段建立一个索引名与索引表达式相同的普通索引,“索引”选项卡中可改变索引名或索引类型。 参照完整性是针对两个表进行设置的,要先建立两个表的关联,且有一个表中必须建立关联字段的主索引(或候选索引),另一个表要建立普通索引,建立两个表联系后要先清理数据库,然后再设置参照完整性。二、简单应用题(总题数:1,分数:2.00)2.(1)歌手比赛分为四个组,“歌手表”中的“歌手编号”字段的左边两位表示了该歌手所在的组号。考生文件夹下的程序文件 fiveprg 的功能是:根据“歌手表”计算每个组的歌手人数,将结果填入表onedbf,表 oned
14、bf 中有两个字段:“组号”和“歌手人数”。程序中有 3处错误,请修改并执行程序。注意:只能修改标有错误的语句行,不能修改其他语句,数组名 A不允许修改。 (2)建立一个数据库文什“歌手人奖赛dbc”,并将“歌手表”、“评委表”和“评分表”3 个自由表添加到该数据库中。使用视图没计器建立视图 songer_view,该视图根据“歌手表”、“评委表”和“评分表”建立,视图中的字段项包括:“评委姓名”、“歌手姓名”、 “分数”,视图中的记录按“歌手姓名”升序、“分数”降序排列。(分数:2.00)_正确答案:(正确答案:(1) 步骤 1:在命令窗口执行命令: MODIFY COMMAND five
15、,打开程序文件,文件中的命令代码如下: &根据“歌手表“计算每个组的歌手人数 CLOSE DATA USE one GO TOP WHILENOTEOF() &错误 zuhao=组号 SELECT COUNT(*)FROM 歌手表 WHERE歌手表歌手编号=zuhao INTO ARRAY A &错误 REPLACE 歌手人数 INTO A &孳揿 SKIP ENDDO 修改程序中的错误行,修改后的程序如下: CLOSE DATA USE one GO TOP DO WHILE NOT EOF() zuhao=组号 SELECT COUNT(*)FROM 歌手表 WHERE LEFT(歌手表歌
16、手编号,2)=zuhao INTO ARRAY A REPLACE 歌手人数 WITH A1 SKIP ENDDO 步骤2:保存文件修改,在命令窗口执行命令: DO five ,执行程序文件。 (2) 步骤 1:在命令窗口执行命令: MODIFY DATABASE 歌手大奖赛 ,新建并打开数据库设计器。右击鼠标,选择【添加表】,在“打开”对话框中双击“歌手表”添加到数据库中;同样的方法,将“评委表”和“评分表,添加到数据库中。 步骤 2:在数据库设计器中右击,选择【新建本地视图】打开视图设计器,在“新建本地视图”中单击“新建视图”按钮,在“添加表或视图”中依次双击“歌手表”、“评分表”和“评委
17、表”(按顺序添加),添加到视图设计器中。 步骤 3:双击“评委表”中的“评委姓名”字段,“歌手表”中的“歌手姓名”字段和“评分表”中的“分数”字段,将 3个字段添加到“选定字段”中。 步骤 4:“排序依据”选项卡中双击“选定字段”列表框中的“歌手表歌手姓名”字段,添加到“排序条件”列表框中;再双击“选定字段”中的“评分表分数”字段添加到“排序条件”列表框中, “排序选项”中选择“降序”;以 songer_view名保存视图。)解析:解析:(1)本题考查了 DO WHILE循环语句;SQL 简单计算查询;visual FoxPro 表记录修改命令。 本题的第一处错误是 DO WHILE循环语句的
18、入口语句格式错误,DO 短语是必须的,不可缺少;第二处错误根据题意得知,“歌手编号”字段的左边两位表示该歌手所在的组号,因此,要通过字符串截取函数才能从“歌手编号”字段中得到歌手的组号;第三处错误是 REPLACE语句的格式错误,使用数组修改当前记录时,应使用 WITH短语,而不是 INTO短语。 (2)本题考查了数据库和表的基本操作;利用视图设计器建立视图。 本题的关键是向数据库设计器中按照一定的顺序依次添加各表,即按照表间联系依次添加表,这样可以保证视图设计器中的各表都存在联接关系。 对 SQL熟悉的考生,可以通过命令方式建立该视图。三、综合应用题(总题数:1,分数:2.00)3.在考生文
19、件夹下,打开招生数据库 sdb,完成如下综合应用: 创建文件名为 form的表单,将表单标题改为:录取研究生。 在表单中设计“录取”和“退出”两个按钮。两个按钮功能分别如下: . 在“录取”按钮(Command1)中,编写程序,查询总成绩大于或等于 330分的考生的“考生号”、“姓名”、“性别”、“单位”和该生的“政治成绩”、“外语成绩”、“高数成绩”(即高等数学成绩)、“专业课成绩”、“总成绩”,并将结果按“总成绩”降序排序存储到表 four中。表 four(需要自己创建或生成)的字段名为:“考生号”、“姓名”、“性别”、“单位”、“政治成绩”、“外语成绩”、“高数成绩”、“专业课成绩”、“
20、总成绩”(各成绩字段的类型为 N(5,1),其他字段的类型与原表中一致)。 . 单击“退出”按钮(Command2)时,关闭表单。 表单设计完成后,运行表单,单击“录取”按钮进行统计,然后单击“退出”按钮关闭表单。 注:在考试科目代码表 dm中存储了各考试科目与考试科目名对应关系。(分数:2.00)_正确答案:(正确答案:步骤 1:在命令窗口执行命令:CREATE FORM form,打开表单设计器新建表单。向表单添加两个命令按钮。 步骤 2:选择表单对象,修改属性值,见表 325。 )解析:解析:本题主要考查的是表单的建立、常用属性的设置、DO WHILE 循环结构和 SQL分组计算查询、S
21、QL定义功能、visual FoxPro 修改记录命令。 本题基本解题思路可按以下步骤进行: 第一步,根据ksb和 kscjb两张表,利用分组计算查询求出总成绩大于等于 330分的考生的考生号、姓名、性别、单位和总成绩,将结果保存到一个临时表 temp1中。这里,总成绩用 SUM函数实现。 第二步,通过临时表temp1查找出“考生号”、“姓名”、“性别”、“单位”4 个字段,并按总成绩降序排序,将结果保存到表 FOUR中。在这里,这四个字段正是题目中要求的 FOUR表的前四个字段。 第三步,分别用五个“ALTER TABLE”语句为 FOUR表增加五个字段:政治成绩、外语成绩、高数成绩、专业课
22、成绩和总成绩。为表增加字段的关键字是 ADD。此时,题目所要求的 FOUR表的结构已经完成,并且前四个字段的值也已经按要求完成了,下面的任务就是将后五个字段的值填充完整。 第四步,根据 dm和 kscjb两张表求出所有考生的考生号、考试科目名和成绩,将结果保存到临时表 temp2中。 第五步,将 FOUR表作为当前表,将记录指针指向文件首,然后开始执行 DO WHILE循环对 FOUR表中的每条记录进行处理。DO WHILE 语句的循环条件是当记录指针没有到达 FOUR表末尾时,执行循环体中的语句。循环体功能:用 SQL简单查询从临时表 temp2中求出与 FOUR表当前所指记录“考生号”相同并且“考试科目名”是“政治”的“成绩”字段值,将该值保存到数组 a1中,再通过 REPLACE命令修改 four表当前记录的“政治成绩”字段值。参照以上操作,可以将 four表当前记录的“外语成绩”、“高数成绩”和“专业课成绩”三个字段值进行修改。而当前记录的“总成绩”字段值可以由当前记录的“政治成绩”、“英语成绩”、“高数成绩”和“专业课成绩”的和得到。修改完毕后,four 表的记录指针指向下一条记录,叉开始继续判断表指针是否到达表末尾,如果没有,则进入循环体继续同样的操作,直到 four表的记录指针指向表末尾,处理完four表中的所有记录,程序结束。