1、国家二级 VF机试模拟试卷 13及答案与解析 一、基本操作题( 30分) 1 (1)在考生文件夹下建立项目 stsc_m。 (2)把数据库 stsc加入到 stsc_m项目中。 (3)从 student表中查询 “金融 ”系学生信息 (student表全部字段 ),按 “学号 ”升序存入新表 new。 (4)使用视图设计器在数据库中建立视图 new_view:视图包括 student表全部字段(字段顺序和 student表一样 )和全部记录 (元组 ),记录按 “学号 ”降序排序。 二、简单应用题( 40分) 2 (1)用 SQL语句查询课 程成绩在 60分以上的学生姓名,并将结果按姓名降序存
2、入表文件 res.dbf中。 (2)编写 my.prg程序,实现的功能:先为 “学生成绩 ”表增加一个 “学生平均成绩 ”字段,类型为 N(6, 2),根据 “学生选课 ”表统计每个学生的平均成绩,并写入 “学生成绩 ”表新的字段中。 三、综合应用题( 30分) 3 在考生文件夹下有职员管理数据库 staff_8,数据库中有 yuangong表和 zhicheng表。 yuangong的表结构:职工编码 C(4)、姓名 C(10)、职称代码 C(1)、工资N(10, 2) zhigong的 表结构:职称代码 C(1)、职称名称 C(8)、增加百分比 N(10)然后编写并运行符合下列要求的程序:
3、 设计一个名为 staff_m的菜单,菜单中有两个菜单项 “计算 ”和 “退出 ”。程序运行时,单击 “计算 ”菜单项应完成下列操作: 在表 yuangong中增加一新的字段:新工资 N(10, 2)。 现在要给每个人增加工资,请计算 yuangong表的新工资字段,方法是根据zhicheng表中相应支撑的增加百分比来计算: 新工资 =工资 *(1+增加百分比 /100) 单击 “退出 ”菜单项对应命令 SET SYSMENU TO DEFAULT,用于返回到系统菜单,程序终止运行。 国家二级 VF机试模拟试卷 13答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1)在命令窗口输入
4、命令: CREATE PROJECT stsc _ m,建立一个新的项目管理器。 (2)在新建的项目管理器中,单击 “数据 ”选项卡,然后选中列表框中的 “数据库 ”,单击选项卡右边的 “添加 ”命令按钮,将考生文件下的 stsc数据库文件添加到项目管理器中。 (3)在命令窗口输入命令: SELECT*FROM student WHERE student院系 =“金融 ”; ORDER BY Student.学号 INTO TABLE new 查询结果自动保存到新表 new中。 (4)在 “数据 ”选项卡中,单击 “数据库 ”前面的 “+”,依次展开 “数据库 ”“stsc”,选中stsc分支
5、下的 “本地视图 ”,单击项目管理器右边的 “新建 ”命令按钮,打开视图设计器。首先将 student数据表添加到视图设计器中,在视图设计器中的 “字段 ”选项卡中,将 “可用字段 ”列表框中的字段全部添加到右边的 “选定字段 ”列表框中,然后在“排序依据 ”选项卡中将 “选定字段 ”列表框中的 “student.学号 ”字段添加到右边的 “排序条件 ”中,在 “排序选项 ”中选择 “降序 ”,完成视图设计,将视图以 new view文件名保存在考生文件夹下。 【试题解析】 本大题考查的主要是项目管理器中 “数据 ”选项卡里面所包含的 3个重要内容的设计,包括数据库、视图和查询。需要注意的是新
6、建视图文件时,首先应该打开相应的数据库,且视图文件在磁盘中是找不到的,直接保存在数据库中。 二、简单应用题( 40分) 2 【正确答案】 (1)在命令窗口中输入命令: MODIFY COMMAND query1,在 程序文件编辑器窗口输入如下程序段: *文件 query1.prg中的程序段* SELECT DISTINCT(姓名 )AS姓名; FROM 课程,学生选课,学生成绩; WHERE 学生成绩 .学号 =学生选课 .学号; AND 学生选课,课程号=课程 .课程号; AND 成绩 65; ORDER BY姓名 DESC; INTO TABLE res * 在命令窗口输入命令: DO q
7、uery1,运行程序,通过 BROWSE命令可查看结果,如图 3-41所示。 (2)在命令窗口中输入命令: MODIFY COMMAND my,在程序文件编辑器窗口输入如下程序段: *文件 my.prg中的程序段 * ALTER TABLE学生成绩ADD平均成绩 N(6, 2) SELECT学号, AVG(成绩 )AS平均成绩; FROM学生选课; GROUP BY学号; INTO CURSOR atemp DO WHILE NOT EOF() UPDATE学生成绩 SET平均成绩 =atemp.平均成绩; WHERE学生成绩 .学号 =atemp.学号 SKIP ENDDO * 在命令窗口输
8、入命令: DO my,运行程序。执行程序后, “学生成绩 ”中的记录,如图 3-42所示。 【试题解析】 本大题两个小题主要考查的是 SQL语句的应用,设计过程中可利用临时表来存放查询结果,再利用 DO循环语句对表中的记录逐条更新。 三、综合应用题( 30分) 3 【正确答案】 在命令窗口输入命令: CREATE MENU staff_m,系统弹出一个“新建菜单 ”对话框,在对话框中单击 “菜单 ”按钮,进入菜单设计器环境。根据题目要求,首先输入两个主菜单名称 “计算 ”和 “退出 ”,接 着在 “计算 ”菜单行的 “结果 ”下拉框中选择 “过程 ”选项 (用于编写程序 ),在 “退出 ”菜单
9、行的 “结果 ”下拉框中选择 “命令 ”选项。 单击 “计算 ”菜单行中的 “编辑 ”按钮,进入程序设计的编辑窗口,在命令窗口中输入如下程序段: *“计算 ”菜单命令的程序设计 * SET TALE OFF USE zhicheng IN 2 USE yuangong IN 1 ALTER TABLE yuangong.ADD新工资 N(10,2) SELECT 2 DO WHILE NOT EOF() &遍历 zhicheng表中的每一条记录 SELECT 1 UPDATE yuangong SET新工资 =工资 *(1+(zhicheng.增加百分比 /100); WHERE yuango
10、ng职称代码 =zhicheng.职称代码 SELECT 2 SKIP ENDDO SET TALK ON * 在 “退出 ”菜单项的 “命令 ”文本框中编写程序代码 : SET SYSMENU TO DEFAULT。 选择菜单命令 “菜单 ”“生成 ”,生成一个可执行菜单文件 staff_m.mpr。关闭设计窗口,在命令窗口输入命令: DO staff_m.mpr,看到 Visual FoxPro的菜单栏被新建的菜单所代替,单击 “退出 ”菜单命令将恢复系统菜单。 执行 “计算 ”菜单命令后,系统生成一个新的字段,并将计算结果自动保存到新字段中。 【试题解析】 本大题考查了菜单的设计,主要注意 “结果 ”下拉框中的选项选择即可,用于编写程序段的菜单命令应该选择 “过程 ”,在菜单 命令的过程设计中,注意正确使用 SQL数据定义 (新增字段 )和数据更新 (插入记录 )语句,利用 DO循环来执行每条记录的新工资字段内容的插入。