一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分)
1、在考生文件夹下建立项目SALES_M。
2、把考生文件夹中的数据库CUST_M加入SALES_M项目中。
3、为CUST_M数据库中CUST表增加字段:联系电话C(12),字段值允许"空"
4、为CUST_M数据库中ORDER1表"送货方式"字段设计默认值为"铁路"。
本题的主要考核点:
项目的建立、将数据库添加到项目中、字段的添加、为字段设置默认值。
解题思路:
1.建立项目
创建项目可用"文件"菜单中的"新建"命令。
2.将数据库加入到项目中:
在项目管理器的"数据"选项卡选择数据库,单击"添加",在"打开"对话框中选择要添加的数据库
3.打开CUST表的表设计器,将光标移动到最后的空字段格中,输入新的字段名、字段类型及长度。字段值允许为空,则选中"NULL"项。
4.在表设计器中,选中"送货方式"字段,在"字段有效性-默认值"中填入"铁路"(此处要双引号),单击确认。
二、简单应用(2小题,每题20分,计40分)
1、在考生文件夹下,有一个数据库SDB,其中有数据库表STUDENT、SC和
COURSE。表结构如下:
STUDENT(学号,姓名,年龄,性别,院系号)
SC(学号,课程号,成绩,备注)
COURSE(课程号,课程名,先修课程号,学分)
在表单向导中选取一对多表单向导创建一个表单。要求:从父表STUDENT中
选取字段学号和姓名,从子表SC中选取字段课程号和成绩,表单样式选
"浮雕式",按钮类型使用"文本按钮",按学号降序排序,表单标题为"学生
成绩" ,最后将表单存放在考生文件夹中,表单文件名是form1。
2、在考生文件夹中有一数据库SDB,其中有数据库表STUDENT,SC和COURSE。建
立成绩大于等于60分,按学号升序排序的本地视图GRADELIST,该视图按顺
序包含字段学号、姓名、成绩和课程名,然后使用新建立的视图查询视图中
的全部信息,并将结果存入表v_grade。
第1题,本题的主要考核点是使用表单向导制作表单。
启动表单向导可在"文件"菜单中选择"新建"或者单击工具栏上的"新建"按钮,打开"新建"对话框,文件类型选择表单,单击向导按钮。或者在"工具"菜单中选择"向导"子菜单,选择"表单",或直接单击工具栏上的"表单向导"图标按钮。在"向导选取"对话框中选择"一对多表单向导"。然后按照表单向导提示及题目要求操作即可。
第2题,本题的主要考核点是建立视图。
先打开数据库SDB,在数据库设计器中单击右键,选择"建立本地视图",打开"视图设计器"。将数据库的三个表添加到视图中,按提示建立联接。选择字段学号、姓名、成绩和课程名,在"筛选"栏中的字段名中选择"sc.成绩",条件中选择">=",实例中输入"60" (不要双引号),关闭并保存。在数据库设计器中打开视图,用copy to v_grade 命令或在"文件"菜单中选择"导出",将结果存入新表v_grade。
三、综合应用(1小题,计30分)
在考生文件夹下有股票管理数据库stock_4,数据库中有stock_mm表和stock_cc
表,stock_mm的表结构是股票代码C(6)、买卖标记L(.T.表示买进,.F.表示卖
出),单价N(7.2)、本次数量N(6)。stock_cc的表结构是股票代码C(6),持仓
数量N(8)。 stock_mm表中一只股票对应多个记录,stock_cc表中一只股票对应
一个记录(stock_cc表开始时记录个数为0)。
请编写并运行符合下列要求的程序:
设计一个名为menu_lin的菜单,菜单中有两个菜单项"计算"和"退出"。
程序运行时,单击"计算"菜单项应完成下列操作:
(1)根据stock_mm统计每只股票的持仓数量,并将结果存放到stock_cc表。计算
方法:买卖标记为.T.(表示买进),将本次数量加到相应股票的持仓数量;
买卖标记为.F.(表示卖出),将本次数量从相应股票的持仓数量中减去。
(注意:stock_cc表中的记录按股票代码从小到大顺序存放)。
(2)将stock_cc表中持仓数量最少的股票信息存储到自由表stock_x中(与
stock_cc表结构相同)。
单击"退出"菜单项,程序终止运行。
本题主要考核点:
菜单的建立、结构化查询语言(SQL)中的联接查询、查询的排序、临时表的概念、查询结果的去向等知识点。
本题解题思路:
第一步:利用菜单设计器定义两个菜单项,在菜单名称为"计算"的菜单项的结果列中选择"过程",并通过单击"编辑"按钮打开一个窗口来添加"计算"菜单项要执行的命令。在菜单名称为"退出"的菜单项的结果列中选择"命令",并在后面的"选项"列中输入以下退出菜单的命令: SET SYSMENU TO DEFAULT
第二步:在单击"计算"菜单项后面的"编辑"按钮所打开的窗口中添加如下的过程代码:
SET TALK OFF &&在程序中常常要关闭命令结果的显示
OPEN DATABASE STOCK_4 &&打开数据库文件STOCK_4
SELECT 股票代码,SUM(本次数量) AS 持仓数量 FROM STOCK_MM;
WHERE 买卖标记 GROUP BY 股票代码;
INTO CURSOR CurTable1
&&
SELECT 股票代码,SUM(本次数量) AS 持仓数量 FROM STOCK_MM;
WHERE NOT 买卖标记 GROUP BY 股票代码;
INTO CURSOR CurTable2
SELECT CurTable1.股票代码,(CurTable1.持仓数量-CurTable2.持仓数量) AS 持仓数量;
FROM CurTable1,CurTable2 ;
WHERE CurTable1.股票代码=CurTable2.股票代码;
ORDER BY CurTable1.股票代码;
INTO ARRAY AfieldsValue
&&由于每种股票的买进的数量的和与卖出的数量的和在两个不同的临时表CurTable1和
&&CurTable2中。因此要想得到两者之间的差,需要进行联接查询,可以通过"股票代码"来
&&做为联接的条件,置于WHERE的后面;可以用ORDER BY 子句来确定查询的排序依据,
&&这里以股票代码的升序进行排序:ORDER BY 股票代码;可以利用INTO ARRAY 数组名子句
&&将SELECT语句的查询结果放在一个数组中,以备后面的程序利用
DELETE FROM STOCK_CC
&&删除STOCK_CC表中以前的记录
&&DELETE SQL语句可以将满足指定条件的记录加上删除标记
&&DELETE FROM [DatabaseName!]TableName
&&[WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]
INSERT INTO STOCK_CC FROM ARRAY AfieldsValue
&&将所得到每支股票的代码和持仓数量的数组插入到表STOCK_CC中
&&INSERT SQL语句可以向指定的表追加一条新的记录
&&INSERT 可以直接将一个数组中的值做为记录值追加到表中,
&&利用FROM ARRAY 数组变量名来实现
CLOSE ALL
USE STOCK_CC
PACK
&&物理删除加上删除标记的记录
USE
SELECT * TOP 1 FROM STOCK_CC ORDER BY 持仓数量 INTO TABLE STOCK_X
&&SELECT语句中可以通过TOP来限制返回结果集中行数 TOP n[PERCENT] n指定返回的行数。&&如果未指定 PERCENT,n 就是返回的行数。如果指定了 PERCENT,n 就是返回的结果集行的&&百分比;INTO TABLE 表名 可以将结果集生成一个表
SET TALK ON
第三步:保存所编辑的菜单为menu_lin.mnx,并生成菜单menu_lin.mpr,运行。
责任编辑:小草