1、国家二级 VF机试模拟试卷 5及答案与解析 一、基本操作题( 30分) 1 (1)为各部门分年度季度销售金额和利润表 XL创建一个主索引和普通索引 (升序 ),主索引的索引名为 no,索引表达式为 “部门编号 +年份 ”;普通索引的索引名和索引表达式均为 “部门编号 ”。 (在 “销售 ”数据库中完成 ) (2)在 xl表中增加一个名为 “备注 ”的字段,字段数据类型为 “字符 ”,宽度为 50。 (3)使用 SQL的 ALTERTABLE语句将 xl表的 “年份 ”字段的默认值修改为“2003”,并将该 SQL语句存储到命令文件 bbs.prg中。 (4)通过 “部门编号 ”字段建立 xl表
2、和 ma表间的永久联系,并为该联系设置参照完整性约束:更新规则为 “级联 ”;删除规则为 “限制 ”;插入规则为 “忽略 ”。 二、简单应用题( 40分) 2 (1)在 “医院 ”数据库中有 “医生信息 ”表、 “处方信息 ”表和 “药信息 ”表。用 SQL语句查询开了药物 “银翘片 ”的医生的所有信息,将使用的 SQL语句保存在 my.txt中。 (2)在考生文件夹下有一个数据库 “医院 ”,其中有数据库表 “医生信息 ”,在考生文件夹下设计一个表单 ys,该表单为 “医生信息 ”表的窗口输入界 面,表单上还有一个标题为 “关闭 ”的按钮。单击该按钮,则退出表单。 三、综合应用题( 30分)
3、 3 现有医院数据库 doct3,包括 3个表文件: yisheng.dbf(医生 )、 yao.dbf(药品 )、chufang.dbf(处方 )。设计一个名为 chufang3的菜单,菜单中有两个菜单项 “查询 ”和“退出 ”。 程序运行时,单击 “查询 ”应完成下列操作:查询同一处方中,包含 “感冒 ”两个字的药品的处方号、药名和生产厂,以及医生的姓名和年龄,把查询结果按处方号升序排序存入 jg9资料表中。 jg9的结构为 (姓名,年龄 ,处方号,药名,生产厂 )。最后统计这些医生的人数 (注意不是人次数 ),并在 jg9中追加一条记录,将人数填入该记录的处方号字段中。 单击 “退出 ”
4、菜单项,程序终止运行。 (注:相关资料表文件存在于考生文件夹下 ) 国家二级 VF机试模拟试卷 5答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1)从菜单栏里单击 “文件 ”并选择 “打开 ”,或直接单击工具栏上的“打开 ”图标,在弹出的对话框中选择要打开的数据库文件 “销售 .dbc”。 在数据库设计器中,右键单击数据库表 xl,在弹出的快捷菜单中选择 “修 改 ”菜单命令,进入 x1的数据表设计器界面,然后单击 “索引 ”选项卡,此选项卡中的 “索引名 ”和 “索引表达式 ”分别改为 no和 “部门编号 +年份 ”,在 “索引类型 ”的下拉框中,选择 “主索引 ”。以同样的方
5、法建立普通索引。 (2)在 x1表设计器的 “字段 ”选项卡中,输入新的字段名 “备注 ”,类型选择 “字符 ”型,宽度设置为 “50”。 (3)在命令窗口输入命令: MODIFY COMMAND bbs,打开文件编辑器,输入如下语句: ALTER TABLE XL ALTER 年份 SET DEFAULT 2003 在命令窗口输入命令: DO bbs,执行文件。 (4)在数据库设计器中,将 ma表中 “索引 ”下面的 “部门编号 ”主索引字段拖到 xl表中 “索引 ”下面的 “部门编号 ”索引字段上,建立了两个表之间的永久性联系。 在数据库设计器中,选择菜单命令 “数据库 ”“清理数据库 ”
6、,右键单击 xl表和ma表之间的关系线,选择 “编辑参照完整性 ”快捷菜单命令,在参照完整性生成器中,根据题意,分别在 3个选项卡中设置参照完整性规则。 【试题解析】 本大题主要考查的是数据库和数据表之间的联系,对数据表的连接、以及字段索引、表 结构的修改,参照完整性的建立。建立索引表可以在数据表设计器中完成。对数据表进行连接及设置参照完整性都是在数据库设计器中完成。 二、简单应用题( 40分) 2 【正确答案】 (1)在命令窗口中输入命令: MODIFY FILE my.txt,在文本编辑器窗口输入如下程序段: *文件 my.txt中的程序段 *SELECT医生信息 .职工号 ,医生信息 .
7、姓名 ,医生信息 .职称 ,医生信息 .部门 ,医生信息 .年龄; FROM医生信息,处方信息,药信息; WHERE医生信息职工号:处方信息职工号; AND处方信息 .药编号 =药信息 .药编号; 药信息药名 =“银翘片 ”*在命令窗口输入命令: DO my.txt,程序运行结果如图 3-19所示。 (2)从菜单栏里单击 “文件 ”并选择 “新建 ”,或直接 单击工具栏上的 “新建 ”图标,在弹出的对话框中文件类型选择 “表单 ”,单击对话框右边的 “新建文件 ”图标,弹出了 Forml的表单设计器,单击工具栏上的 “保存 ”图标,以 ys名保存在考生文件夹下; 在表单设计器中,鼠标右键单击空
8、白表单,选择 “数据环境 ”快捷菜单命令,打开表单的数据环境,将数据表文件 “医生信息 ”添加到数据环境中,将数据环境中的 “医生信息 ”表拖放到表单中,可看到在表单中出现一个表格控件,此时实现了 “医生信息 ”表的窗口式输入界面,最后在 “表单控件 ”工具栏中,选中命令按钮控件添加到表单中,在 “属性 ”对话框修改 该命令按钮的 Caption属性值为 “关闭 ”,双击该命令按钮,在 Click事件中输入程序。 *命令按钮 Commandl(关闭 )的 Click事件代码 * Thisform.Release * 在命令窗口输入命令: DO FORM ys,运行表单,结果如图 3-20所示。
9、 【试题解析】 本大题 1小题考查了 SQL联接查询,设计过程中主要注意两个表之间进行关联的字段。 2小题考查的是在表单中设定数据环境,通过表单的数据环境快速建立表单控 件和数据之间的联系。 三、综合应用题( 30分) 3 【正确答案】 在命令窗口输入命令: CREATE MENU chufang3,系统弹出一个“新建菜单 ”对话框,在对话框中单击 “菜单 ”按钮,进入菜单设计器环境。根据题目要求,首先输入两个主菜单名称 “查询 ”和 “退出 ”,接着在 “查询 ”菜单行的 “结果 ”下拉列表中选择 “过程 ”选项 (用于编写程序 ),在 “退出 ”菜单行的 “结果 ”下拉列表中选择 “命令
10、”选项。 单击 “查询 ”菜单行中的 “查询 ”按钮,进入程序设计的编辑窗口,在命令窗口中输入如下程序段: *“查询 ”菜单命令的程序设计 * SET TALK OFF SET SAFETY OFF SELECT姓名,年龄,处方号,药名,生产厂; FROM yisheng,yao,chufang; WHERE chufang.药编号 =yao.药编号; AND chufang.职工号 =yisheng.职工号 AND药名 IN(“感冒 “); ORDER BY处方号; INTO TABLE js9 SELECT * FROM jg9 GROUP BY姓名 INTO cursor curtabl
11、e INSERT INTO jg9(处方号 )VALUES(J) 在 “退出 ”菜单项的 “命令 ”文本框中编写程序代码: SET SYSMENU TO DEFAULT。 选择菜单命令 “菜单 ”“生成 ”,生成一个菜单文件 chufang3.mpr。关闭设计窗口,在命令窗口输入命令: DO chufang3.mpr,看到 Visual FoxPro的菜单栏被新建的菜单所代替,单击 “退出 ”菜单命令将恢复系统菜单。 执行 “查询 ”菜单命令后,系统将查询结果自动 保存到表 jg9.dbf中。 【试题解析】 本大题考查的主要是利用 SQL语句进行多表查询,其中只要注意每两个表之间进行的关联字段即可,部分语句可以参考第二大题 2小题的设计,最后还要注意的是人数的统计,因为要统计的人数,不是人次数,因此可以通过姓名字段的排序,将排序结果存放到一个临时表中,然后通过 COUNT函数统计出人数 (此函数不统计相邻的重复出现的数据 )。