1、二级 VISUAL+FOXPRO 机试 80 及答案解析(总分:100.00,做题时间:90 分钟)一、B一 基本操作题/B(总题数:1,分数:30.00)1.打开数据库 prod_m 及数据库设计器,其中的两个表的必要的索引已经建立,为这两个表建立永久性联系。 2设置 category 表中“种类名称”字段的默认值为“食品”。 3为 products.表增加字段:优惠价格 N(9,2)。 4如果所有商品的优惠价格是在进货价格基础上减少 10%,计算所有商品的优惠价格。(分数:30.00)_二、B二 简单应用题/B(总题数:1,分数:40.00)2.在考生文件夹下有一个数据库 gcs,其中 g
2、ongch 表结构如下: gongch(编号 C(4),姓名 C(10),性别C(2),工资 N(7,2),年龄 N(2),职称 C(10) 现在要对 gongch 表进行修改,指定编号为主索引,索引名和索引表达式均为编号;指定职称为普通索引,索引名和索引表达式均为职称;年龄字段的有效性规则在 2565 之间(含 25 和 65),默认值是 45。 2在考生文件夹中有数据库 gcs,其中有数据库表gongch。在考生文件夹下设计一个表单,该表单为 gcs 库中 gongch 表窗口式输入界面,表单上还有一个名为 cmdclose 的按钮,标题名为“关闭”,点击该按钮,使用 ThisForm.R
3、elease 退出表单。最后将表单存放在考生文件夹中,表单文件名足 form_window。 提示:在设计表单时,打开 gcs 数据库设计器,将gongch 表拖入到表单中就实现了 gongch 表的窗口式输入界面,不需要其他设置或修改。(分数:40.00)_三、B三 综合应用题/B(总题数:1,分数:30.00)3.在考生文件夹下有仓库数据库 gz3,其中包括如下两个表文件: zg(仓库号 C(4),职工号 C(4),工资N(4) dgd(职工号 C(4),供应商号 C(4),订购单号 C(4),订购日期 D,总金额 N(10) 首先在 gz3 库中建立工资文件数据表 gj(职工号 C(4)
4、,工资 N(4)。设计一个名为 chaxun 的菜单,菜单中有两个菜单项“查询”和“退出”。程序运行时,单击“查洵”应完成下列操作:检索出与供应商 S7、S4 和 S6 都有业务联系的职工的职工号和工资,并按工资降序存放到所建立的 gj 文件中。单击“退出”单项,程序终止运行。 (注:相关数据表文件存在于考生文件夹下)(分数:30.00)_二级 VISUAL+FOXPRO 机试 80 答案解析(总分:100.00,做题时间:90 分钟)一、B一 基本操作题/B(总题数:1,分数:30.00)1.打开数据库 prod_m 及数据库设计器,其中的两个表的必要的索引已经建立,为这两个表建立永久性联系
5、。 2设置 category 表中“种类名称”字段的默认值为“食品”。 3为 products.表增加字段:优惠价格 N(9,2)。 4如果所有商品的优惠价格是在进货价格基础上减少 10%,计算所有商品的优惠价格。(分数:30.00)_正确答案:()解析:启动 Visual FoxPro 后,在命令窗口输入命令:MODIFY DATABASE prod_m 命令,打开 prod_m 数据库设计器,将 category 表中“索引”下面的“分类编号”主索引字段拖到 products 表中“索引”下面的“分类编号”索引字段上,建立两个表之间的永久性联系。 2在数据库设计器中,右击 category
6、 数据表选择“修改”快捷菜单命令,打开表设计器,在“字段”选项卡中选中“种类名称”字段,在“字段有效性”的“默认值”文本框中输入“食品”,为该字段设置默认值。 3在数据库设计器中,右击product 数据表选择“修改”快捷菜单命令,打开表设计器,在“字段”选项卡列表框内的“进货价格”字段后插入一个新的字段。输入新的字段名“优惠价格”,选择“类型”为“数值型”,“宽度”为9,“小数位数”为 2。 4在 products 表设计器中选中“优惠价格”字段,接着在下面的“默认值”文本框中输入“进货价格*0.9”,由系统自动计算每种商品的“优惠价格”字段值。 解析 本大题考查的主要是数据库中数据的完整性
7、,包括实体完整性、域完整性和参照完整性,例如为表设置默认值,这属于域完整性范畴。二、B二 简单应用题/B(总题数:1,分数:40.00)2.在考生文件夹下有一个数据库 gcs,其中 gongch 表结构如下: gongch(编号 C(4),姓名 C(10),性别C(2),工资 N(7,2),年龄 N(2),职称 C(10) 现在要对 gongch 表进行修改,指定编号为主索引,索引名和索引表达式均为编号;指定职称为普通索引,索引名和索引表达式均为职称;年龄字段的有效性规则在 2565 之间(含 25 和 65),默认值是 45。 2在考生文件夹中有数据库 gcs,其中有数据库表gongch。在
8、考生文件夹下设计一个表单,该表单为 gcs 库中 gongch 表窗口式输入界面,表单上还有一个名为 cmdclose 的按钮,标题名为“关闭”,点击该按钮,使用 ThisForm.Release 退出表单。最后将表单存放在考生文件夹中,表单文件名足 form_window。 提示:在设计表单时,打开 gcs 数据库设计器,将gongch 表拖入到表单中就实现了 gongch 表的窗口式输入界面,不需要其他设置或修改。(分数:40.00)_正确答案:()解析:1在命令窗口输入两条命令:USE gongch &打开数据表 gongchMODIFY STRUCTURE &修改数据表结构打开表设计器
9、后,在“字段”选项卡中为“编号”字段选择一个索引排序,然后单击“索引”选项卡,在此选项卡中,字段索引名默认为“编号”,在“索引”下拉框中选择索引类型为“主索引”,建立表的主索引;以同样的方法为“职称”字段建立普通索引。在 gongch 表设计器的“字段”选项卡中,选中“年龄”字段,根据题意,在“字段有效性”的“规则”文本框中输入“年龄=25”,限定字段的取值范围。在“默认值”文本框中输入“45”,建立该字段的默认值,如图 5-1 所示。2利用菜单命令“文件”“新建”,或单击常用工具栏的“新建”图标按钮,打开“新建”对话框,选择“表单”单选项,然后单击“新建文件”图标按钮,打开表单设计器。在表单
10、设计器中,鼠标右键单击空白表单,选择“数据环境”快捷菜单命令,打开表单的数据环境,将数据库表文件 gongch 添加到数据环境中,将数据环境中的 gongch 表拖放到表单中,可看到在表单中出现一个表格控件,此时实现了 gongch 表的窗口式输入界面,如图 5-2 所示。三、B三 综合应用题/B(总题数:1,分数:30.00)3.在考生文件夹下有仓库数据库 gz3,其中包括如下两个表文件: zg(仓库号 C(4),职工号 C(4),工资N(4) dgd(职工号 C(4),供应商号 C(4),订购单号 C(4),订购日期 D,总金额 N(10) 首先在 gz3 库中建立工资文件数据表 gj(职
11、工号 C(4),工资 N(4)。设计一个名为 chaxun 的菜单,菜单中有两个菜单项“查询”和“退出”。程序运行时,单击“查洵”应完成下列操作:检索出与供应商 S7、S4 和 S6 都有业务联系的职工的职工号和工资,并按工资降序存放到所建立的 gj 文件中。单击“退出”单项,程序终止运行。 (注:相关数据表文件存在于考生文件夹下)(分数:30.00)_正确答案:()解析:在命令窗口输入命令:MODIFY DATABASE gz3,打开数据库设计器,右击数据库,选择“新建表”快捷菜单命令,表名为 sj 保存到考生文件夹下,接着在表设计器中根据题意,设置两个字段的字段名、类型及宽度。 在命令窗口
12、输入命令:CREATE MENU chaxun,系统弹出一个“新建菜单”对话框,在对话框中单击“菜单”图形按钮,进入菜单设计器环境。根据题目要求,首先输入两个主菜单名称“查询”和“退出”,接着在“查询”菜单行的“结果”下拉框中选择“过程”选项,在“退出”菜单行的“结果”下拉框中选择“命令”选项。 单击“查询”菜单行中的“创建”按钮,进入程序设计的编辑窗口,在程序编辑器中输入如下程序段: *“查询”菜单命令的程序设计* SELECT DISTINCT zg.职工号,zg.工资 FROM zg,dgd; WHERE zg职工号=dgd.职工号; ANDzg.职工号 IN; (SELECT 职工号F
13、ROM dgd WHERE 供应商号=“S4“); AND zg.职工号 IN(SELECT 职工号 FROM dgd WHERE 供应商号=“S6“); AND zg.职工号 IN(SELECT 职工号 FROM dgd WHERE 供应商号=“S7“); ORDER BY zg.工资 DESC; INTO ARRAY arr INSERT INTO gj FROM ARRAY arr * 在“退出”菜单项的“命令”文本框中编写程序代码 SET SYSMENU TO DEFAULT。 选择菜单命令“菜单”“生成”,:生成一个菜单文件 chaxun.mpr。关闭设计窗口,在命令窗口输入命令:DO CHAXUNmpr,看到 Visual FoxPro 的菜单栏被新建的菜单所代替,单击“退出”菜单命令将恢复系统菜单。 执行“查询”菜单命令后,查询结果将保存到 gj.dbf 表中。 解析 本大题主要考查的是利用 SQL中特殊运算符进行多表的连接查询,本题中可使用 IN 运算符进行包含查询,将查询结果写入新表时,由于表已经存在于数据库中,因此不能直接使用 SQL 直接输出到表的短语,但可以将结果先写入数组,然后通过数组将查询结果插入到新表 gj 中。