1、国家二级 VF机试(操作题)模拟试卷 132及答案与解析 一、基本操作题 1 (1)考生文件夹下完成如下操作 (自由表 employee中存放着职员的有关数据 ): 利用表设计器为 employee表创建一个普通索引,索引表达式为 “姓名 ”,索引名为 xm。 打开考生文件夹下的表单文件 formone scx,然后设置表单的 Load事件代码:打开 employee表,并将索引 xrn设置为当前索引。 (2)建立表单,表单文件名和表单控件名均为 formtest,表单标题为 “考试系统 ”,表单背景为灰 色 (BackColor=192, 192, 192),其他要求如下: (3)在 tes
2、tb表单中编写 “退出 ”按钮的事件代码,单击 “退出 ”按钮,关闭表单。 (4)打开考生文件夹下的表单 two,选择 “表单 ”菜单中的 “新建方法程序 ”命令,在“新建方法程序 ”对话框中,为该表单新建一个方法 test,然后双击表单,选择该方法编写代码,该方法的功能是使 “测试 ”按钮变为不可用 (提示:即将该按钮的Enabled属性设置为 f)。 二、简单应用题 2 (1)将 order detaill表中的全部记录追加到 order detail表中,然后用 SQL SELECT语句完成查询:列出所有订购单的 “订单号 ”、 “订购日期 ”、 “器件号 ”、 “器件名 ”和“总金额
3、”(按 “订单号 ”升序, “订单号 ”相同再按 “总金额 ”降序 ),并将结果存储到results表中 (其中 “订单号 ”、 “订购日期 ”、 “总金额 ”取自 order list表, “器件号 ”、“器件名 ”取自 order detail表 )。 (2)打开 modil prg命令文件,该命令文件包含 3条 SQL语句,每条 SQL语句中都有一个错误,请改正 (注意:在出现错误的地方直接改正,不可以改变 SQL语句的结构和 SQL短语的顺序 )。 三、综合应用题 3 在考生文件夹下创建一个下拉式菜单 mymenu mnx,并生成菜单程序enu mpr。运行该菜单程序时会在当前 VFP
4、系统菜单的末尾追加一个 “考试 ”子菜单,如图 3-13所示。菜单命令 “统计 ”和 “返回 ”的功能都通过执行过程完成。 菜单命令 “统计 ”的功能是统计 2007年有关客户签订的订单数。统计结果依次包含 “客户名 ”和 “订单数 ”两个字段,其中客户名即为客户的姓名 (在 customers表中 )。各记录按订单数降序排序、订单数相同按客户名升序排序,统计结 果存放在 tabletwo表中。 菜单命令 “返回 ”的功能是恢复标准的系统菜单。 菜单程序生成后,运行菜单程序并依次执行 “统计 ”和 “返回 ”菜单命令。 国家二级 VF机试(操作题)模拟试卷 132答案与解析 一、基本操作题 1
5、 【正确答案】 (1)步骤 1:建立表索引。 步骤 2:在命令窗口执行命令: MODIFY FORM formone,打开表单设计器修改表单。 步骤 3:双击表单 (Forml),编写表单的 Load事件代码,内容如下: USE employee SET ORDER To xm (2)步骤 1:在命令窗 口执行命令: CREATE FORMformtest,打开表单设计器新建表单。 步骤 2:在 “属性 ”面板的下拉框中选择表单对象,在 “全部 ”选项卡中修改对象属性值,见表2-4。 (3)打开 testb表单设计器,在设计环境下双击 “退出 ”命令按钮 (Commandl),在 Click事
6、件中编写程序代码: (4)步骤 1:在命令窗口执行命令: MODIFY FORMtwo,打开表单设计器修改表单。 步骤 2:执行【表单】 【新建方法程序】菜单命令,在弹出的 “新建方法程序 ”对话框的 “名称 ”文本框中输入 “test”,单击 “添加 ”按钮新增方法,然后关闭对话框。 步骤 3:在 “属性 ”窗口中双击此方法,打开用户自定义过程代码框输入:步骤 4:单击 “常用 ”工具栏中的 “运行 ”按钮查看结果,将表单文件保存到考生文件夹下。 二、简单应用题 2 【正确答案】 (1)步骤 1:在命令窗口执行命令: SELECT*FROM order detail INTO ARRAY t
7、emp INSERT INTO order detail FROM ARRAY temp 将 detaill表中的记录全部复制到 detail表中。 步骤 2:在命令 窗口执行如下 SQL命令语句完成查询: 1 SELECT order-list订单号, order-list 订购日期, order-detail器件号, order-detail器件名, order-list总金额; 2 FROM订货管理 !order-liSt INNER JOIN 订货管理 !order-detail ; 3 ON order-list订单号 =order-detail 订单号; 4 ORDER BY or
8、derlist订单号, order-list 总金额 DESC; 5 INTO TABLE resultS dbf (注意:以上 SQL语句是根据查询文件生成的,大家也可以通过查询设计器完成本题操作。 ) (2)步骤 1:在命令窗口执行命令: MODIFY COMMAND modil,打开modil程序文件,文件中的命令代码如下: 所有器件的单价增加 5元 1 UPDATE order-detaill SET单价 WITH单价 +5 计算每种器件的平均单价 2 SELECT器件号, AVG(单价 )AS平均价 FROM order-detaill ORDER BY器件号 INTO CURSOR
9、 lsb 查询平均价小于 500的记录 3 SELECT*FROM 1sb FOR平均价 DO modil prg,执行程序文件。 【试题解析】 (1)本题考查了 SQL的简单查询和联接查询。进行联接查询时主要是判断查询输出字段来自哪个数据表 (本题都已指明 ),再正确设置联接条件。 (2)本题考查了 SQL更新功能;分组计算查询和简单查询。 第一处错误属于 SQL更新命令格式错误,通过 SQL命令给字段赋新值是通过“=”号设置的。 第二处错误是分组短语与排序短语混淆了,这也是改错题中经常设置错误的地方。 第三处错误是查询语句的命令格式错误, SQL查询中筛选条件通过 WHERE短语指出。 三
10、、 综合应用题 3 【正确答案】 步骤 1:在命令窗口执行命令: CREATE MENU mvmenu,在弹出的 “新建菜单 ”对话框中单击 “菜单 ”图标按钮,打开菜单设计器。 步骤 2:在菜单设计器 “菜单名称 ”列的文本框中输入 “考试 ”主菜单名, “结果 ”下拉框中选择为 “子菜单 ”,单击 “创建 ”按钮进入下级菜单设计,在 “菜单名称 ”列的第l、 2行文本框中依次输入子菜单名 “统计 ”和 “返回 ”,将这 2个子菜单的 “结果 ”都设置为 “过程 ”,分别单击 2个过程后面的 “创建 ”按钮打开过程编辑器,编写过程代码。 步骤 3:两个过程代码如下: “统计 ”菜单命令的过程
11、代码: 1 SELECT customers姓名 as 客户名, COunt(*)as订单数; 2 FROM customers INNER JOIN orders ; 3 ON customers客户号 =Orders客户号; 4 WHERE year(Orders签订日期 )=2007 ; 5 GROUP BY customers姓名; 6 ORDER BY 2 DESC, customers姓名; 7 INTO TABLE tabletwo dbf “返回 ”菜单命令的过程代码: 1 SET sYSMENU NOSAVE 2 SET SYSMENU TO DEFAULT 步骤 4:执行【
12、显示】 【常规选项】菜单命令,在弹出的 “常规选项 ”对话框中选择 “位置 ”中的 “追加 ”单选钮,然后单击 “确定 ”按钮,保存修改。 步骤 5:执行【菜单】 【生成】菜单命令,在弹出的 Visual FoxPro对话框中单击 “是 ”按钮,接着系统会弹出 “生成菜单 ”对话框,在 “输出文件 ”对话框中修改输出的文件名为: enu mpr,单击 “生成 ”按钮生成一个可执行的菜单文件。 步骤 6:在命令窗口执行命令: DO enu mpr,运行菜单程序,依次执行 “统计 ”和 “返回 ”菜单命令。 【试题解析】 本题主要考查了菜单设计器的使用; SQL分组计算查询。 本题的关键是 “统计 ”菜单项的过程设计部分,是一个 SQI。分组计算查询语句,查询的两个表文件是 customers和 orders表,查询条件中要通过 year()函数获得具体的年份值,分组条件为 customers的姓名字段,利用 ORDERBY短语指定排序方式,最后通过工 NTO TABLE短语指定输出去向。