1、国家二级 VF机试模拟试卷 93及答案与解析 一、基本操作题( 30分) 1 (1)打开 “订货管理 ”数据库设计器,其中两个表 “order_m”“order_d”中的索引已经建立,为这两个表建立永久性联系。 (2)设置 “目录 ”表中 “商品种类 ”字段的默认值为 “食品 ”。 (3)为 “商品信息 ”表增加字段:优惠价格 N(9, 2)。 (4)如果所有商品的优惠价格是在单价基础上减少 10,计算所有商品的优惠价格。 二、简单应用题( 40分) 2 (1)student是一个 “学生 ”表,其中包含学号 (C 8)、姓名 (C 8)、性别 (C 2)、政治面目 (C 4)、班级 (C 5
2、)等字段。考生文件夹下的 modi1 prg程序文件的功能是显示输出所有政治面目为 “群众 ”的 “男 ”生的姓名和班级,每行输出一个学生的信息;程序中有三处错误,请加以改正。 说明:程序中 *ERROR FOUND*的下一行即为错误所在行。请用改正后的程序行覆盖错误所在行,不要插入或删除任何程序行。 (2)建立命令文件 sprog prg,该命令文件包含如下两条语句: 第一条语句使用 SQL UPDATE 命令计算和更新 student 表的年龄字段值 (计算年龄的表达式是 year(dat()-yea(出生日期 )。 第二条语句使用 SQL SELECT 命令查询各种 “政治面目 ”的学生
3、人数和平均年龄,并将结果存储于表 sqlresults (字段名是政治面目、人数和平均年龄 )。 说明:以上命令文件必须执行,并产生所要求的结果。 三、综合应用题( 30分) 3 在考生文件夹下有 myform表单文件,将该表单设置为顶层表单,然后设计一个菜单,并将新建立的菜单应用于该表单 (在表单的 load事件中运 行菜单程序 )。 新建立的菜单文件名为 mymenu,结构如下 (表单、报表和退出是菜单栏中的 3个菜单项 ): 表单 浏览课程 浏览选课统计 报表 预览报表 退出 如图 1-4所示。各菜单项的功能如下: 选择 “浏览课程 ”时在表单的表格控件中显示 “课程 ”表的内容 (在过
4、程中完成,直接指定表名 )。 选择 “浏览选课统计 ”时在表单的表格控件中显示简单应用题建立的视图 sview的内容 (在过程中完成,直接指定视图名 )。 选择 “预览报表 ”时预览简单应用题建立的报表 creport(在命令中完成 )。 选择 “退出 ”时关闭和释放表单 (在命令中完成 )。 注意:最后要生成菜单程序,并注意该菜单将作为顶层表单的菜单。 国家二级 VF机试模拟试卷 93答案与解析 一、基本操作题( 30分) 1 【正确答案】 (1) 选择【文件】 【打开】命令,在 “打开 ”对话框的 “文件类型 ”下拉列表框中选择 “数据库 ”,选择 “订货管理 dbc”,单击 “确定 ”按
5、钮,打开数据库设计器。 在数据库设计器中,将 “order_m”表中 “索引 ”下面的 “订单编号 ”主索引字段拖曳到 “order_d”表中 “索引 ”下面的 “订单编号 ”索引字段上,建立了两个表之间的永久性 联系。 (2) 在 “数据库设计器 ”中,选择表 “目录 ”,单击右键,在弹出的快捷菜单中选择“修改 ”,打开表设计器。 单击 “商品种类 ”字段,在 “字段有效性 ”的 “默认值 ”文本框中输入 “食品 “”,单击 “确定 ”按钮关闭表设计器并保存表 “目录 ”结构。 (3) 在 “数据库设计器 ”中,选择表 “商品信息 ”,单击右键,在弹出的快捷菜单中选择 “修改 ”,打开表设计
6、器。 在 “表设计器 ”中,单击最后一行,单击右边 “插入 ”按钮增加一个字段,输入字段名 “优惠价格 ”, “类型 ”为 “数值型 ”, “宽度 ”为 “9”, “小数位 ”为 “2”。单击 “确定 ”按钮关闭表设计器并保存表 “商品信息 ”结构。 (4)在命令窗口中输入命令: UPDATE商品信息 SET优惠价格 =单价 *(1-0 1)(回车执行 )。 二、简单应用题( 40分) 2 【正确答案】 (1)步骤 1:在命令窗口执行命令: MODIFY COMMANDmodi1,打开程序文件,文件中的命令代码如下: SET TALK OFF USE student LOCATE FOR 政治
7、面目 =“群众 “ “*error* DO WHILE NOT FOUND() IF性别 =“男 “ CONT INUE *error* BREAK ENDIF ?姓名,班级 *error* SKIP ENDDO USE SET TALK ON 修改程序中的错误行,修改后的程序如下: SET TALK OFF USE student &打开 student表 LOCATE FOR 政治面目 =“群众 “&查找当前记 录的 “政治面目 ”为 “群众 ”DO WHILE FOUND() &循环条件为找到 “政治面目 ”为 “群众 ”的记录时进入循环 IF 性别 =“男 “ & 如果性别为 “女 ”
8、,继续执行下面的语句,否则执行 ENDIF语句之后的语句 CONTINUE &返回到循环体起始位置继续重新判断下一条记录 “政治面目 ”值是否为 “群众 ”LOOP &返回到循环体起始位置,即 DO WHILE处重新判断,不再执行后面的语句 ENDIF &当 IF处条件不成立时,直接执行该语句后面的命令 ? 姓名,班级 & 当 前面的 IF条件语句成立时,执行该语句,显示当前记录的“姓名 ”和 “班级 ”值 CONTINUE &返回到循环体起始位置继续重新判断下一条记录“政治面目 ”值是否为 “群众 ”ENDDO &当 DO WHILE处条件不成立时,直接退出循环体,执行该语句后面的命令 US
9、E &关闭当前打开的表 SET TALK ON 步骤 2:保存文件修改,在命令窗口执行命令: DO modil prg,执行程序文件。 (2)步骤 1:在命令窗口执行命令: MODIFY COMMAND Msprog,打开程序文件编辑器。 步骤 2:在程序文件编辑器中输入如下代码 (相关 SOL查询语句是通过查询设计器生成 ): UPDATE student SET 年龄 =YEAR(DATE()-YEAR(出生日期 ) SELECT STUDENT政治面目, COUNT(STUDENT学号 )AS人数,AVG(STUDENT年龄 ) AS 平均年龄; FROM student; GROUP
10、BY student政治面目; INTO TABLE sqlresults dbf 步骤 3:保存文件修改,在命令窗口执行命令: DO sprog prg,执行程序文件。 【试题解析】 (1)本题主要考查的是利用 VisualFoxPro命令查询定位数据表中的记录。此类型的题主要通过一个 DO WHILE循环语句对表中的记录逐条比较,对满足条件的记录进行相关的操作。 本题中第一处错误是循环条件的错误,进入循环体的条件是逻辑值为真,第二处错误中属于命令短语错误, visual FoxPro中没有 BREAK命令, 第三处错误是SKIP命令错误,该命令虽然可以将当前记录指针指向下一条记录,但不再执
11、行LOCATE FOR处的条件判断,如果要包含判断功能,则要使用 CONTINUE 短语。本题程段中各语句的功能可参考 “操作步骤 ”中对各条语句的注释说明,这里不再细说。 (2)本题考查了 SQL数据更新功能和分组计算查询功能。本题数据更新语句可直接套用 SQL更新语句的命令格式;对数据进行分组计算查询时,用来计数的函数为 COUNT(),用来求平均值的函数为 AVG(),通过 AS短语可以指定新的字段名,另外,对记录进行分组时, 分组字段要设置正确,根据题意,本题的分组字段应为 “学生 ”表中的 “政治面目 ”字段。 三、综合应用题( 30分) 3 【正确答案】 步骤 1:在命令窗口执行命
12、令: CREATE MENU mymenu,在弹出的 “新建菜单 ”对话框中单击 “菜单 ”图标按钮,打开菜单设计器。在菜单设计器 “菜单名称 ”列的文本框中依次输入 “表单 ”、 “报表 ”和 “退出 ”3个主菜单名, “结果 ”下拉枢中选择为 “子菜单 ”,单击 “表单 ”行的 “创建 ”按钮进入下级菜单设计。 步骤 2:在“菜单名称 ”列依次输入子菜单名 “浏览课程 ”和 “浏览选课统计 ”,选择 “结果 ”列都为“过程 ”,分别单击两个 “过程 ”后面的 “创建 ”按钮打开过程编辑器,编写过程代码。 “课程浏览 ”菜单命令的过程代码: Myform Grid1 RecordSource
13、Type=1 Myform Grid1 RecordSource=“课程 “ “选课统计浏览 ”菜单命令的过程代码。 OPEN DATABASE学生管理 Myform Grid1 RecordSourceType=0 Myform Grid1 RecordSourceType=“sview“ 步骤 3:通过 “菜单级 ”下拉框返回主菜单项设计界面, 以同样的方法,设计 “报表 ”菜单项的下级子菜单 “预览报表 ”,注意选择 “预览报表 ”的 “结果 ”项为 “命令 ”,然后在后面的文本框中输入以下命令代码: REPORT FORM creport PREVIEW 步骤 4:再次返回主菜单项设计
14、界面,选择 “退出 ”菜单命令的 “结果 ”项为 “命令 ”,并输入命令语句: myform RELEASE 步骤5;执行【显示】 【常规选项】菜单命令,在弹出的 “常规选项 ”对话框中勾选 “顶层表单 ”复选框,然后单击 “确定 ”按钮,保存修改。如图 2-23所示。步骤 6:执行【菜单】 【生成】菜单命令 ,在弹出的 Visual FoxPro对话框中单击 “是 ”按钮,接着系统会弹出“生成菜单 ”对话框,单击 “生成 ”按钮生成一个可执行的菜单文件,关闭菜单设计器。 步骤 7:在命令窗口执行命令: MODIFY FORMmyform,打开表单设计器。选中表单,在 “属性 ”窗口中修改表单
15、 (Form1)的 “ShowWindow”属性值设置为 “2-作为顶层表单 ”。 步骤 8:右击表单选择【数据环境】快捷菜单命令,在表单数据环境中单击右键选择【添加】快捷菜单命令,选择 “视图 ”单选项,将 svicw视图添加到数据环境中。 步骤 9;双击表单 (Form1)编写表单的 Load事件代码,代码如下: Do_mymenu mpr WITH THIS,“TTT“ 步骤 10:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 【试题解析】 本题主要考查的是菜单在顶层表单中的应用主要包括两大部分的操作,即菜单设计和表单设计。操作过程可按以下步骤进行:
16、 通过菜单设计器建立菜单,注意主菜单和子菜单的建立莱单设计有两个关键操作:一是在菜单设计器中勾选 “常规选项 ”对话框中的 “顶层表单 ”,表示此菜单存在项层表单中;二是在释放表 单时,要使用表单的文件名,即本题可以通过MAINFORM RELEASE命令释放 MAINFORM表单,注意:不要使用THISFORM RELEASE命令释放表单。 在表单设计过程中,要注意将表单设置为顶层表单,通过表单的 ShowWindow属性值可以进行设置,而在表单中调用菜单文件是在表单的 Load(或 INIT)事件中进行调用,还需要通过 THIS短语指定当前表单对象的引用。其基本格式为:DOWITH THIS“菜单内部名 “。