计算机等级考试二级VFP机试试题21
来源:优易学  2010-1-15 19:17:42   【优易学:中国教育考试门户网】   资料下载   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.。确定即可

第四步:关闭数据库,在Visual FoxPro主窗口中按下组合键Ctrl+N。系统弹出"新建"对话框,在"文件类型"中选择表,在弹出的对话框中选择"新建表",并在弹出"创建"对话框中选定考生文件夹,在输入表名中填入"customer",再点击保存。

第四步:在弹出的表设计器中按题面的要求依次输入各个字段的定义,点击"确定"按钮,保存表结构。

二、简单应用(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保存程序文件在考生文件夹下,并运行程序。

责任编辑:小草

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