1、国家二级 VF机试-试卷 114及答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_2.(1)建立项目文件,文件名为“xm”。 (2)将数据库“公司”添加到新建的项目中。 (3)为数据库中的表“职员信息”建立“候选索引”,索引名称和索引表达式均为“职员编号”。 (4)为“职员信息”表和“部门”表之间的关联设置完整性约束。要求:更新规则为“级联”,删除规则为“限制”,插入规则为“忽略”。(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:2.00)_4.(1)用 SQL语句查询
2、至少有三门的课程成绩在 70分以上(包括 70分)的学生姓名,并将结果按升序存入表文件 resultsdbf,然后将该 SQL语句粘贴在 SQLTXT 文件的第二行(只占一行)。 (2)modiprg 程序的功能是:先为“学生”表增加一个“平均成绩”字段,数据类型为 N(6,2):然后根据“选课”表统计每个学生的平均成绩,并写入新添加的字段。 该程序有三处错误,请改正,使程序能正确运行(在指定处修改,不允许增加或删除程序行)。(分数:2.00)_三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_6.(1)打开基本操作题中建立的“学生”数据库,将自由表“stude
3、nt”“score”和“course”添加到数据库中。 (2)在“student”数据库中建立反映学生选课和考试成绩的视图“viewsc”,该视图包括“学号”“姓名”“课程名称”和“成绩”4 个字段。 (3)打开表单文件“three”,完成下列操作: 为“生成数据”命令按钮(Command1)编写代码:用 SQL命令查询视图“viewsc”的全部内容,要求先按“学号”升序排列,若“学号”相同再按“成绩”降序排列,并将结果保存在“result”表中; 为“运行报表”命令按钮编写代码;预览报表; 为“退出”命令按钮(Command3)编写代码;关闭并释放表单。 最后运行表单“three”,并通过“
4、生成数据”命令按钮产生表“result”文件。(分数:2.00)_国家二级 VF机试-试卷 114答案解析(总分:12.00,做题时间:90 分钟)一、基本操作题(总题数:2,分数:4.00)1.基本操作题()(分数:2.00)_解析:2.(1)建立项目文件,文件名为“xm”。 (2)将数据库“公司”添加到新建的项目中。 (3)为数据库中的表“职员信息”建立“候选索引”,索引名称和索引表达式均为“职员编号”。 (4)为“职员信息”表和“部门”表之间的关联设置完整性约束。要求:更新规则为“级联”,删除规则为“限制”,插入规则为“忽略”。(分数:2.00)_正确答案:(正确答案:(1)选择【文件】
5、【新建】命令,选择“项目”,单击“新建文件”按钮,输入项目名称“xm”后单击“保存”按钮。 (2)在项目管理器中选择“数据”选项卡,然后选择列表框中的“数据库”,单击“添加”按钮,在“打开”对话框中选择数据库名“公司”,单击“确定”按钮将数据库“公司”添加到新建的项目“xm”中。 (3)在项目管理器中,依次展开“数据库”“公司”“表”分支,选择表“职员信息”,单击“修改”命令按钮,打开表设计器。 在表设计器的“索引”选项卡的“索引名”中输入“职员编号”,选择索引类型为“候选索引”,索引表达式为“职员编号”。 单击“确定”按钮关闭表设计器并保存表“职员信息”结构。 (4)在项目管理器中,选择“公
6、司”数据库,单击“修改”按钮,在数据库设计器中,将“部门”表中“索引”下面的“部门编号”主索引字段拖曳到“职员信息”表中“索引”下面的“部门编号”索引字段上,建立两个表之间的永久性联系。 在数据库设计器中,选择【数据库】【清理数据库】命令清理数据库。 右键单击“部门”表和“职员信息”表之间的关系线,在弹出的快捷菜单中选择“编辑参照完整性”命令,打开参照完整性生成器。 单击“更新规则”选项卡,选择“级联”;单击“删除规则”选项卡,选择“限制”;单击“插入规则”选项卡,选择“忽略”;单击“确定”按钮,保存参照完整性设置。)解析:二、简单应用题(总题数:2,分数:4.00)3.简单应用题()(分数:
7、2.00)_解析:4.(1)用 SQL语句查询至少有三门的课程成绩在 70分以上(包括 70分)的学生姓名,并将结果按升序存入表文件 resultsdbf,然后将该 SQL语句粘贴在 SQLTXT 文件的第二行(只占一行)。 (2)modiprg 程序的功能是:先为“学生”表增加一个“平均成绩”字段,数据类型为 N(6,2):然后根据“选课”表统计每个学生的平均成绩,并写入新添加的字段。 该程序有三处错误,请改正,使程序能正确运行(在指定处修改,不允许增加或删除程序行)。(分数:2.00)_正确答案:(正确答案:(1)在命令窗口输入如下 SQL查询代码(以下 SQL查询语句是通过查询设计器生成
8、): SELECT 学生姓名; FROM 成绩管理!学生 INNER JOIN 成绩管理!选课; ON 学生学号=选课学号; WHERE 选课成绩=70; ORDER BY 学生姓名; GROUP BY 学生学号; HAVING COUNT(选课课程号)=3; INTO TABLE resultsdbf 在命令窗口执行命令: MODIFY FILE SQL ,打开文本文件编辑器。将命令窗口的查询语句复制到 SQL文本文件中。 (2)步骤 1:在命令窗口执行命令:MODIFY COMMAND modi ,打开程序文件,文件中的命令代码如下: CLOSE ALL OPEN DATABASE 成绩管
9、理 USE 选课 IN 0 USE 学生 EXCL IN 0 *Error* DO WHILE EOF() SELECT AVG(成绩)FROM 选课WHERE学号=学生学号 INTO ARRAY cj *Error* REPLACE 平均成绩=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() SEL
10、ECT AVG(成绩)FROM 选课 WHERE学号=学生学号 INTO ARRAY cj REPLACE 平均成绩 WITH cj1 cj1=0 SKIP ENDDO CLOSE DATABASE 步骤 2:保存文件修改,在命令窗口执行命令: DO MODI ,执行程序文件。)解析:解析:(1)本题主要考查的是 SQL分组计算的查询。根据题目要求,SQL 语句主要设计思路如下: 首先对“学生”和“选课”表进行联接,联接条件为两个表中“学号”相同的记录;接着筛选表中成绩大于 70的所有记录(通过 WHERE短语指出),对筛选后的记录接“学号”字段分组(通过 GROUP BY短语分组),然后通过
11、 HAVING语句进一步限定分组条件,要求统计每组学号中“课程号”记录总数大于等于 3,这样便可得出至少有三门课程成绩在 70分以上的学生记录;查询结果最终保存在 results表中,输出字段只包括学生的“姓名”字段。 (2)【本题主要考查了 SQL定义功能;SQL 简单计算查询;DO WHILE 循环;Visual FoxPro修改记录命令。题目所提供的源程序功能大致如下: 首先打开“成绩管理”数据库,并打开库中的数据表“选课”和“学生”;接着利用 SQL定义功能修改表结构;然后利用 DO WHILE循环,依次计算“选课”表中每个学生的平均成绩,计算条件为“选课”表中的“学号”字段值等于“学
12、生”表中当前记录的“学号”字段值,荆将均成绩保存到数组中;最后利用 Visual FoxPro修改记录命令REPLACE将数组中的值赋给“学生”表的“平均成绩”字段。 本题第一处错误是表结构修改语句的错误,为表增加字段的关键字是 ADD而不是 ALTER,ALTER 只能用来修改已存在的字段;第二处错误是 DO WHILE循环格式错误,缺少 WHILE短语;第三处错误是修陡记录命令格式错误,指定修改值的短语为 WITH而不是 SET。三、综合应用题(总题数:2,分数:4.00)5.综合应用题()(分数:2.00)_解析:6.(1)打开基本操作题中建立的“学生”数据库,将自由表“student”
13、“score”和“course”添加到数据库中。 (2)在“student”数据库中建立反映学生选课和考试成绩的视图“viewsc”,该视图包括“学号”“姓名”“课程名称”和“成绩”4 个字段。 (3)打开表单文件“three”,完成下列操作: 为“生成数据”命令按钮(Command1)编写代码:用 SQL命令查询视图“viewsc”的全部内容,要求先按“学号”升序排列,若“学号”相同再按“成绩”降序排列,并将结果保存在“result”表中; 为“运行报表”命令按钮编写代码;预览报表; 为“退出”命令按钮(Command3)编写代码;关闭并释放表单。 最后运行表单“three”,并通过“生成数
14、据”命令按钮产生表“result”文件。(分数:2.00)_正确答案:(正确答案:选择【文件】【打开】命令,选择“学生”数据库,在数据库设计器中单击右键,在弹出的菜单中选择“添加表”,将“student”“score”“course”表添加到数据库中。 在数据库设计器中单击右键,在弹出的菜单中选择“新建本地视图”,选择“新建视图”,打开视图设计器,将“student”表和“course”表添加到视图中。选择“字段”按钮,将“student学号”“student姓名”“course课程名称”“score成绩”添加到视图中。单击“保存”按钮,在弹出的“另存为”对话框中输入表单文件名“viewsc”
15、。 选择【文件】【新建】命令,选择“报表”,选择“报表向导”,将 VIEWSC添加到报表中,修改报表样式为简报式,点击保存按钮,在弹出的“另存为”对话框中输入表单文件名“three”。 选择【文件】【打开】命令,打开表单“three”,在表单设计器中,双击“生成数据”命令按钮,在 Click事件中输入代码: SELECT*FROM viewsc ORDER BY 学号,成绩 DESC INTO TABLE result 双击“运行报表”命令按钮,在 Click事件中输入代码: report form three preview 双击“退出”命令按钮,在 Click事件中输入代码: thisformrelease 选择【表单】【执行表单】命令,运行表单。)解析: