计算机等级考试:二级VFP机试第21套
来源:优易学  2011-12-9 20:48:34   【优易学:中国教育考试门户网】   资料下载   IT书店

第二十一套 
一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分) 
   在考生文件夹下完成如下操作: 
   1. 打开"订货管理"数据库,并将表order_detail添加到该数据库中。 
   2. 为表order_detail的"单价"字段定义默认值为NULL。 
   3. 为表order_detail的"单价"字段定义约束规则:单价 > 0 ,违背规则时的提 
      示信息是:"单价必须大于零"。 
   4. 关闭"订货管理"数据库,然后建立自由表customer,表结构如下: 
      客户号      字符型(6) 
      客户名      字符型(16) 
      地址        字符型(20) 
电话        字符型(14) 
本题主要考核点: 
将一个自由表添加到数据库中、为字段建立约束规则、设置字段的默认值、建立表的结构等知识点 
本题解题思路: 
 第一步:打开考生文件夹下的"订货管理"数据库 
第二步:打开数据库菜单选择"添加表(A)",在弹出的"打开"对话框中,选定考生文件夹下的order_detail表,再点击"确定"即可,这样表order_detail就添加到了"订货管理"数据库中 
第三步:在数据库设计器中选中"order_detail"表,选择数据库菜单下的"修改(V)",弹出表设计器,在表设计器中点击"单价"所在的行,单击Null列上的按钮,确认按钮上出现对号,在字段有效性的规则字段中输入:单价>0,在信息框中输入: "单价必须大于0",在默认值框中输入:.NULL.。确定即可 
 
二、简单应用(2小题,每题20分,计40分) 
    在考生文件夹下完成如下简单应用: 
    1. 列出总金额大于所有订购单总金额平均值的订购单(order_list)清单(按 
       客户号升序排列),并将结果存储到results表中(表结构与order_list表 
       结构相同)。 
    2. 利用Visual Foxpro的"快速报表"功能建立一个满足如下要求的简单报表: 
    (1) 报表的内容是order_detail表的记录(全部记录,横向); 
    (2) 增加"标题带区",然后在该带区中放置一个标签控件,该标签控件显示报 
        表的标题"器件清单"; 
    (3) 将页注脚区默认显示的当前日期改为显示当前的时间; 
(4) 最后将建立的报表保存为report1.frx。 
本题主要考核点: 
     SQL中的查询SELECT查询、联接查询、查询的排序、查询的结果的去向等;报表的建立方法等知识点. 
解题思路: 
第一小题:为了能得到所有总金额大于平均总金额的订购单信息,应该首先得到总金额的平均值,利用:SELECT AVG(总金额) FROM ORDER_LIST INTO ARRAY AFieldsValue,并将总金额的平均值放到一个数组变量之中AFieldsValue;下一步就可以以总金额>AFieldsValue为条件得到总金额大于平均总金额的订购单信息,将这一条件放在WHERE子句的后面,查询结果的排序要用到ORDER BY子句,ORDER BY 客户号;查询结果要放入一个永久表中要用到INTO TABLE子句,结果保存到RESULTS表中所以要用INTO TABLE RESULTS.本题由两条SQL语句组成: 
SELECT AVG(总金额) FROM ORDER_LIST INTO ARRAY AFieldsValue 
SELECT * FROM ORDER_LIST WHERE 总金额>AFieldsValue; 
ORDER BY 客户号; 
INTO TABLE RESULTS 
第二小题: 
第一步:在Visual FoxPro主窗口按下组合键Ctrl+N,系统弹出"新建"对话框,在"文件类型"中选择"报表",再点击新建文件按钮,系统弹出报表设计器 
第二步:单击主窗口"报表"菜单下的"快速报表(O)",系统弹出"打开"对话框,选择考生文件夹下的 order_detail.dbf表,单击"确定",系统弹出"快速报表"对话框,单击"确定"按钮后便生成了一个报表,将报表文件以文件名 report1.frx保存在考生文件夹下。 
第三步:选择主菜单"报表"下的"标题/总结(T)",弹出"标题/总结"对话框,在"报表标题"类型中选择"标题带区 ",单击"确定"按钮,这样就在报表中加入了一个"标题带区",打开"报表控件工具栏",在打开的"报表控件"中选择"标签"控件,在标题带区点击鼠标,输入"器件清单" 
第四步:双击"页注脚"中的显示当前日期的域控件,打开"报表表达式",在"表达式"文本框中将原来的DATE()用TIME()来代替。点击"确定" 
第五步:以文件名report1.frx将报表文件保存在考生文件夹下。

三、综合应用(1小题,计30分) 
    首先将order_detail表全部内容复制到od_bak表,然后对od_bak表编写完成如下 
    功能的程序: 
    1. 把"订单号"尾部字母相同并且订货相同 ("器件号"相同)的订单合并为一张订 
       单,新的"订单号"就取原来的尾部字母,"单价"取最低价,"数量" 取合计; 
    2. 结果先按新的"订单号"升序排序,再按"器件号"升序排序; 
    3. 最终记录的处理结果保存在od_new表中; 
4. 最后将程序保存为prog1.prg,并执行该程序。 
本题主要考核点: 
程序的建立方法、程序中循环结构的使用、SQL查询语句的使用、记录的修改方法;报表的建立方法等知识点 
本题解题思路: 
第一步:在VisualFoxPro主窗口下按组合键Ctrl+N,系统弹出"新建"对话框,在"文件类型"中选择"程序",再点击"新建文件"按钮,则系统弹出程序编辑窗口; 
第二步:在弹出的窗中中输入以下代码: 
SET TALK OFF 
SET SAFETY OFF 
sele * from order_detail into table od_bak 
&&复制一个表用来存放结果 
USE OD_BAK 
COPY STRUCTURE TO OD_NEW 
&&首先得到所有的新定单号和器件号: 
SELECT RIGHT(订单号,1) AS 新订单号,器件名,器件号,; 
RIGHT(订单号,1)+器件号 AS NEWNUM; 
FROM OD_BAK; 
GROUP BY NEWNUM; 
ORDER BY 新订单号,器件号; 
INTO CURSOR CurTable 
DO WHILE NOT EOF() 
   &&得到单价和数量 
   SELECT MIN(单价) AS 最低价,SUM(数量) AS 数量合计; 
   FROM OD_BAK; 
   WHERE RIGHT(订单号,1)=CurTable.新订单号 AND 器件号=CurTable.器件号; 
   INTO ARRAY AFieldsValue 
   INSERT INTO OD_NEW VALUES; 
   (CurTable.新订单号,CurTable.器件号,CurTable.器件名,AFieldsValue(1,1),AFieldsValue(1,2)) 
   SKIP 
ENDDO 
CLOSE ALL 
SET TALK ON 
SET SAFETY ON 
第三步:单击"保存"工具栏按钮,以文件名prog1.prg保存程序文件在考生文件夹下,并运行程序。 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训