1、国家二级 VF机试(操作题)模拟试卷 329及答案与解析 一、基本操作题 1 (1)将当前史件夹下的自由表 class(班级表 )和 teacher (教师表 )添加到学牛数据库 sdb中。 (2)为班级表 class创建一个丰索引和普通索引 (升序 ),主索引的索引名和索引表达式均为 “班级号 ”;普通索引的索引名和索引表达式均为 “班主任号 ”。为教师表teacher创建个主索引,索引名和索引表达式均为 “教师号 ”。 (3)通过 “班级号 ”字段建立班级表 class和学牛表 student表间的永久联系。通过班级 表 class的 “班主任号 ”字段与敦师表 teacher的 “教师号
2、 ”字段建立班级表 class和教师表 teacher间的永久联系。 (4)为以上建立的两个联系设置参照完整性约束:更新规则为 “级联 ”;删除规则为 “限制 ”;插入规则为 “限制 ”。 二、简单应用题 2 (1)打开程序文件 cylinder prg,请按要求修改程序并运行程序。 (2)以表 employee dbf和 orders dbf中数据为基础,使用 SQL命令检索订单数最多的前 3名职工的职工号、姓名和订单数,检索结果按订单数降序排序存入 表ncweoun dbf,同时将所用 SQL命令存入文件 new txt中。 三、综合应用题 3 在考生文件夹下有 myform表单文件,将该
3、表单设置为项层表单,然后设计一个菜单,并将新建立的菜单应用于该表单 (在表单的 load事件中运行菜单程序 )。 新建立的菜单文件名为 mymenu,结构如下 (表单、报表和退出是菜单栏中的 3个菜单项 ): 表单 浏览课程 浏览选课统计 报表 预览报表 退出 如图 3-3所示。各菜单项的功能如下: 选择 “浏览课程 ”时在表单的表格控件中显示 “课程 ”表的内容 (在过程中完成,直接指定表名 )。 选择 “浏览选课统计 ”时在表单的表格控件中显示简单应用题建立的视图 sview的内容 (在过程中完成,直接指定视图名 )。 选择 “预览报表 ”时预览简单应用题建立的报表 creport(在命令
4、中完成 )。 选择 “退出 ”时关闭和释放表单 (在命令中完成 )。 注意:最后要生成菜单程序,并注意该菜单将作为顶层表单的菜单。 国家二级 VF机试(操作题)模拟试卷 329答案与解析 一、基本操作题 1 【正确答案】 【操作步骤】 (1) 命令窗口执行: MODIFY DATABASE sdb,打开数据库设计器。 右击数据库设计器,选择【添加表】,在 “打开 ”对话框中双击 “class”、 “teacher”表添加到数据库中。 (2) 右击数据库设计器中的 “class”表,选【修改】,打开 “class”表设计器, “字段 ”选项卡中选 “班级号 ”, “索引 ”列中选 “升序 ”,同
5、样方法为 “班主任号 ”建立 “升序 ”排序;在 “索引 ”选项卡中选 “班级号 ”,并修改其 “类型 ”为 “丰索引 ”,单击 “确定 ”按钮保存表结构修改。 参照上面的操作,为 “teacher”表建立 “教师号 ”字段的主索引。 (3) 在数据库 设计器中拖动 “class”表 “索引 ”下方的丰索引 “班级号 ”到 “student”表中 “索引 ”下方的普通索引 “班级号 ”上,为两个表建立联系。 以同样的方法,为 “teacher”表和 “class”表建立联系,这样便建立了 “student”、“class”和 “teacher”, 3个表之间的联系。 (4) 选中 “stude
6、nt”表和 “class”表之间的关联线 (被选中的连线会变粗 ),首先执行【数据库】 【清理数据库】菜单命令,清空数据表中带有删除标记的记录,然后执行【数据库】 【编辑参照完整性】菜单 命令。 在打开的 “参照完整性 ”对话框的表格中,选择 “更新 ”列下两个单元格中的内容都为 “级联 ”; “删除 ”列下两个单元格中的内容都为 “限制 ”; “插入 ”列下两个单元格中的内容都为 “限制 ”,单击 “确定 ”按钮保存参照完整性的修改。 二、简单应用题 2 【正确答案】 (1)模块是一个相对独立的程序段,它可以被其他模块调用,也可以去调用其他的模块。通常,把被其他模块调用的模块祢为子程序,把调
7、用其他模块而没有被其他模块调用的模块称为主程序。题中给出了两个模块,其中,上面的一部分,即第一个 “RETURN”前面 的代码是主程序,下面的模块 cya作为子程序被主程序调用。模块调用的格式有两种:一种是使用 DO命令: D0WITH, , ,本题中使用的就是这种方法: “DO cya WITH r, h,carea”,其中 cva是调用的子程序名, r, h、 carea是传递给子程序的实参,分别代表半径、高和表面积;而在子程序 cya中则定义了 a、 b、 c三个变量作为形参对应接收主程序传递过来的实参,并计算出表面积的值 c。在这种方法调用中,当实参为变量时,将按址传递,即不是将实参的
8、值传递给形参,而是将存放实参 的内存中的存储单元的地址传递给形参,因此形参和实参具有相同的存储单元地址,也就是说,形参和实参共用同一存储单元,实际上是同一个变量,这时,在调用子程序时,如果形参的值发生了改变,那么对应的买参的值也将随着改变。故在本题中,当子程序结束时,求出的 c的值即是主程序中 carea的值。另一种调用方法是函数调用的方法,格式为: (, , ) 。在这种调用方式中,默认情况下都是按值传递,即系统计算出实参的值,并把它们赋值给相应的形参变量。这样,当子程序结束时,形参变量被释放,计算的结果将会随 形参的消失而消失,而不能将运算后形参的值再传递给实参,实参的值并不会改变。所以,
9、在本题中,当用函数调用方式时,要想在主程序中输出 carea的值,应该在子程序的最后返回计算的表面积值 c。而在主程序中,应当将调用函数返回的值赋值给carea变量,即 “carea=area(r, h)”。这时,实参就变成了两个: r、 h,而子程序的形参有三个: a、 b、 c。这样是可以的。我们说在调用模块时,系统会自动把实参一一传递给对应的形参,形参的数目不能少于实参的数目,因为传递过来的每一个实参都要有对应的形参接收,如果形参的数目比实 参少,那多出来的实参就好像找不到地址的信件一样,不知该送去哪里,这时系统就会产生运行时错误。但是,形参的数目可以多于实参的数目,这时,多余的形参变量
10、取初值逻辑假 ( F )。 【操作步骤】 步骤 1:在命令窗口执行命令: MODIFY COMMANDcyinder!,打开cylinder prg程序,代码如下: *本程序的功能为输入圆柱体的半径和高,计算圆柱体表面积。 *请将程序修改为函数调用方式 (注意不得增删语句行 )。 SET TALK OFF CLEAR LOCAL carea INPUT”请输入圆柱体的半径 “TO r INPUT”请输入圆柱体的高 ”TO h DO cya WITH r, h, carea ?”圆柱体的表面积为: ”, carea RETURN PROCEDURE cya PARAMETERS a, b, c
11、LOCAL Pai pai=3 14159 c=2*(pai*a2)+2*pal*a*b RETURN ENDPROC 修改程序中的错误行,修改后的程序如下: SET TALK OFF CLEAR LOCAL carea 定义局部变量 local INPUT”输入圆柱体的半径: ”TO r 从键盘输入一个半径值 INPUT”输入圆柱体的高: “TO h 从键盘输入一个高值 carea=cya(r, h) 调用模块程序,转到 PROCEDURE命令行执行程序,按值方式传递参数 ?”圆柱体的表面积为: ” carea RETURN PROCEDURE cya 过程的开始,并命名过程名为 cya P
12、ARAMETERS a, b, c 声明的行参变量被看作是模块程序中的私有变量 LOCAL pai pai=3 14159 c=2*(pai*a2)+2*pai*a*b 计算圆柱体表面积的表达式 RETURN c 将计算的表达式值返回上级模块 ENDpROC 步骤 2:保存文件修改,在命令窗口执行命令: DOYZT PRG,执行程序文件。 (2)【审题分析】本题要求利用 SQL语句进行查询,用到了 emFloy和 order两张表,可以使用联接查询。因为要查找订单数最多的前两名职工,应该按职工号分组,并求出每一组中记录的个数,即是每个职工的订单数,要分别使用 group by短语和 count
13、()计数函数;另外,因为只查找最多的前两名,应该按 降序排序,并使用 top短语;将查询结果保存在永久表中,应使用 INTO TABLE短语。 【操作步骤】 步骤 1:在命令窗 r执行命令: MODIFY FILE new,打开文本编辑器编写 SQL命令。 步骤 2:在编辑器中输入如下程序代码 (以下程序是通过查询设计器生成 ): SELECT TOP 3 Employee职工号 Employee姓名, COUNT(*)订单数; FROM employee INNER JOIN orders; ON Employee职工号 =0rders职工号; GROUP BY Employee职工号; O
14、RDER BY 3 DESC; INTO TABLE newcoun dbf 步骤 3:在命令窗口执行命令: DO NEW: TXT,执行文件 (注意:执行文件时,文件后缀名 txt不能缺省 )。 三、综合应用题 3 【正确答案】 本题主要考查的是菜单在顶层表单中的应用。主要包括两大部分的操作,即菜单设计和表单设计。操作过程可按以下步骤进行: 通过菜单设计器建立菜单,注意主菜单和子菜单的建立。菜单设计有两个关键操作:一是在菜单设计器中勾选 “蒂规选项 ”对话 框中的 “顶层表单 ”,表示此菜单存在顶层表单中;二是在释放表单时,要使用表单的文件名,即本题可以通过 MAINFORM RELEASE
15、命令释放 MAINFORM表单,注意:不要使用 THIsFORIM RELEASE命令释放表单。 在表单设计过程中,要注意将表单设置为顶层表单,通过表单的 showwindow属性值可以进行设置,而在表单中调用菜单文件是在表单的 Load(或 INIT)事件中进行调用,还需要通过 THIS短语指定当前表单对象的引用。其基本格式为:DoWISTH THIs, ”。 【操作步骤】 步骤 1:在命 令窗口执行命令:CREATEMENUmymenu,在弹出的 “新建菜单 ”对话框中单击 “菜单 ”图标按钮,扣开菜单设计器。在菜单设计器 “菜单名称 ”列的文本框中依次输入 “表单 ”、 “报表 ”和“退
16、出 ”3个主菜单名, “结果 ”下拉框中选择为 “子菜单 ”,单击 “表单 ”行的 “创建 ”按钮进入下级菜单设计。 步骤 2:在 “菜单名称 ”列依次输入子菜单名 “浏览课程 ”和“浏览选课统计 ”,选择 “结果 ”列都为 “过程 ”,分别单击两个 “过程 ”后面的 “创建 ”按钮打开过程编辑器,编写过程代码。 “课程浏览 ”菜单命令的过程代码: Myform.Gridl.RecordSourceType=1 Myform.Gridl.RecordSource=“课程 ”: “选课统计浏览 ”菜单命令的过程代码: OPEN DATABASE 学生管理 Myform.Gridl.RecordS
17、ourceType=0 Myform.Gridl.RecordSource=“sview”: 步骤 3:通过 “菜单级 ”下拉框返回主菜单项设计界面,以同样的方法,设计 “报表 ”菜单项的下级子菜单 “预览报表 ”,注意选择 “预览报表 ”的 “结果 ”项为 “命令 ”,然后往后面的文本框中输入以下命令代码: REPORT FORM creport PREVIEW 步骤 4:再次返回土菜单项设汁界面,选择 “退出 ”菜单命令的 “结果 ”项为 “命令 ”,并输入命令语句: myform.RELEASE 步骤 5:执行【显示】 【常规选项】菜单命令,在弹出的 “常规选项 ”对话框中勾选 “项层表
18、单 ”复选框,然后单击 “确定 ”按钮,保存修改。如图4 17所示。 步骤 6:执行【菜单】 【生成】菜单命令,在弹出的 Visual FoxPro对话框中单击 “是 ”按钮,接着系统会弹出 “生成菜单 ”对话框,单击 “生成 ”按钮生成一个可执行的菜单文件,关闭菜单设计 器。 步骤 7:在命令窗口执行命令: MODIFY FORMmyform,打开表单设计器。选中表单,在 “属性 ”窗口中修改表单 (Forml)的 “ShowWindow”属性值设置为 “2-作为顶层表单 ”。 步骤 8:右击表单选择【数据环境】快捷菜单命令,在表单数据环境中单击右键选择【添加】快捷菜单命令,选择 “视图 ”单选项,将 sview视图添加到数据环境中。 步骤 9:双击表单 (Forml)编写表单的 Load事件代码,代码如下: DO mymenu mpr WITH THIS ”TTT” 步骤 10:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 【考点链接】为顶层表单添加菜单、容器类控件、表单数据环境。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1