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

第十七套

一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分)

    在考生文件夹下完成如下操作:

   1. 创建一个新的项目"客户管理"。

   2. 在新建立的项目"客户管理"中创建数据库"订货管理"。

   3. 在"订货管理"数据库中建立表order_list,表结构如下:

      客户号     字符型(6)

      订单号     字符型(6)

      订购日期   日期型

      总金额     浮动型(15.2)

   4. 为order_list表创建一个主索引,索引名和索引表达式均是"订单号"。

本题主要考核点:

创建项目、建立数据库、在数据库中建立表、索引的建立

解题思路:

第一步:在Visual FoxPro主窗口下按组合键Ctrl+N,则系统弹出"新建"对话框,在文件类型中选择"项目",再点击"新建文件"按钮;

第二步:在弹出的"创建"对话框中,选定考生文件夹,在项目文件中填入"客户管理.pjx",再点击保存按钮;这样便新建了一个项目;

第三步:在弹出的项目管理器中先选择"数据"标签,再选择"数据库",最后点击"新建"按钮;

第四步:在弹出的"新建数据库"对话框中点击"新建文件";

第五步:在弹出的"创建"对话框中,选定考生文件夹,在"数据库名"中填入"订货管理.dbc",再点击保存按钮;这样便完成了数据库的添加;

第六步:在已新建的项目客户管理的项目管理器中先选择"数据"标签,再选择"表",最后点击"新建"按钮;

第七步:在弹出的"新建表"对话框中点击"新建表",并在弹出的"创建"对话框中,选定考生文件夹,在"输入表名"中填入"order_list.dbf",再点击保存,

第八步:在弹出的"表设计器中",按题所要求建立表的结构后,选择"索引"标签,在索引名列中填入"订单号",在索引类型列中选择"主索引",在索引表达式列中填入"订单号",点击"确定"按钮,保存表结构。

二、简单应用(2小题,每题20分,计40分)

    在考生文件夹下完成如下简单应用:

    1. 将order_list1表中的全部记录追加到order_list表中,然后用SQL SELECT

       语句完成查询:按总金额降序列出所有客户的客户号、客户名及其订单号和

       总金额,并将结果存储到results表中(其中客户号、客户名取自customer

       表,订单号、总金额取自order_list表)

    2. 打开form1表单,并按如下要求进行修改(注意:最后保存所做的修改):

    (1) 表单中有5个随机排列的命令按钮,不要移动或改变"基准按钮"位置(否则

        影响成绩),然后使其他命令按钮与"基准按钮"左部对齐;

    (2) 在这组命令按钮的右边添加一个表格控件,并将它的RecordSourceType属

        性设置为"表",然后设置另一个相关属性使在表格控件中显示customer表

        的记录。

本题主要考核点:

     SQL中的查询SELECT查询,联接查询,查询的排序,查询的结果的去向;以及INSERT语句,表单的建立、控件布局、向表单中添加数据环境、控件与数据源的绑定等知识

解题思路:

第一小题:将order_list1中的全部记录追加到order_list中,要将一个表的所有记录追加到另一个表中使用APPEND FROM 命令,首先打开order_list:USE ORDER_LIST,在APPEND FROM的后面是要追加到order_list的表名,这里是order_list1。查询表中的数据要用到SELECT命令,要查询的数据来源于 customer和order_list表,将它们置于FROM的后面,并用逗号隔开,并分别为它们指定一个别名Cu和ORD;由于是联接查询要指明查询的条件,将联接条件CU.客户号=ORD.客户号放在WHERE短语的后面,同时要对结果集按照总金额的降序进行排序,所以要将:总金额 DESC放在ORDER BY 短语的后面,结果集要存储到results表中,所以要将:results放在INTO TABLE 后面。由于查询的结果不是所有的属性,所以需要指明结果的属性,并且客户号在两个表中都存在,所以要特别指定此属性来自那一个源表(这里用表的别名来代替)。这样就形成了一个完整的查询语句:

SELECT CU.客户号,CU.客户名,ORD.订单号,ORD.总金额 ;

FROM CUSTOMER CU,ORDER_LIST ORD ;

WHERE CU.客户号=ORD.客户号 ;

ORDER BY 总金额 DESC ;

INTO TABLE RESULTS

第二题:打开考生文件夹下FROM1窗体,拖动鼠标选中5个随机放置的按钮和"基准按钮"控件,点击"布局" 工具栏中的"左边对齐",便完成了所有按钮的左对齐。在表单上放置一表格控件,为表单"数据环境"设置为customer表,并设置表格控件的 RecordSourceType属性设置为"表",RecordSource属性设置为"customer",这样表格控件便可以显示表 customer的内容。

三、综合应用(1小题,计30分)

    当order_detail表中的单价修改后,应该根据该表的"单价"和"数量"字段修改

    order_list表的总金额字段,现在编写程序实现此功能,具体要求和注意事项

    如下:

   (1) 根据order_detail表中的记录重新计算order_list表的总金额字段的值;

   (2) 一条order_list记录可以对应几条order_detail记录;

   (3) 在编程前应保证在基础操作中正确地建立了order_list表,在简单应用中为

       该表追加了记录(注意只能追加一次);

   (4) 最后将order_list表中的记录按总金额降序排序存储到od_new表中(表结构

       与order_list表完全相同);

   (5) 将程序保存为prog1.prg文件。

本题主要考核点:

程序的建立方法、程序中循环结构的使用、SQL查询语句的使用、记录的修改方法等知识点

本题解题思路:

第一步:打开项目客户管理,在项目管理器中先选择"代码"标签,再选择"程序",最后点击"新建"按钮。

第二步:在弹出的窗中中输入以下代码:

SET TALK OFF   &&在程序运行模式下关闭命令结果的显示

SET SAFETY ON  &&关闭文件重名时的提示

CLOSE ALL      

SELECT 订单号,SUM(数量*单价) AS 总金额;

FROM ORDER_DETAIL;

GROUP BY 订单号;

INTO CURSOR CurTable

&&这里首先得到每一个订单的总金额,由于每一个订单对应有多项记录,

&&所以我们要得到每一个订单的总金额需要用到SUM函数,SUM(数量*单价) AS 总金额

&&放在SELECT的后面,并和订单号用逗号隔开;要以订单号做为分组的依据,将订单号放在

&&ORDER BY 的后面;将结果集放入一个临时表CurTable中用INTO CURSOR CurTable

OPEN DATABASE 订货管理

&&打开数据库文件

SELECT 2

&&选择工作区

USE ORDER_LIST

&&在新的工作区中打开表ORDER_LIST

DO WHILE NOT EOF()                 &&遍历ORDER_LIST中的每一条记录

SELECT CurTable.总金额 FROM CurTable;

WHERE CurTable.订单号=order_list.订单号;

INTO ARRAY AFieldsValue

&&以ORDER_LIST的当前记录的订单号做为查询的条件在临时表中得到此订单的总金额

&&由于在临时表中和当前工作区表中都存在订单号字段,所以要在订单号字段前加上表名

&&所以查询的条件CurTable.订单号=order_list.订单号放在WHERE子句的后面;查询的结

&&果放入数据变量AFieldsValue中,INTO ARRAY AFieldsValue

REPLACE 总金额 WITH AFieldsValue

&&利用得到的新的总金额来代替当前记录的总金额字段

SKIP

ENDDO

CLOSE ALL

SELECT * FROM ORDER_LIST;

ORDER BY 总金额 DESC;

INTO TABLE OD_NEW

&&以总金额的降序,所以要将总金额 DESC放在ORDER BY 子句的后面;将结果集

&&放入一个永久表OD_NEW,OD_NEW 放在子句INTO TABLE的后面。

SET SAFETY ON

SET TALK ON

第三步:单击"保存"工具栏按钮,以文件名prog1.prg保存程序文件

第四步:在项目管理器中"代码"选项卡的程序中选择"prog1",点击"运行"按钮,执行程序。

责任编辑:小草

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