07年自考“数据库及其应用Foxpro”实验题(2)
第2组实验题
现有关于仓库管理数据库的模式如下:
仓库(仓库号,面积,地址,管理员)
货物(货号,货物名,单价,重量)
存放(仓库号,货物号,数量)
仓库与货物是多对多联系。一个仓库只设一名管理员。
要求完成如下操作:
1.按题目要求建立表结构,各表各个字段的名字、数据类型、长度等根据语义和查询的需要自行决定。根据查询需要建立索引。(15分)
答:见第2组实验题答案文件夹。
2.利用你所熟悉的方法向各表录入适量的、满足题目需要的数据。各数据项的取值范围应该合理、有效,并与查询要求相呼应。(10分)
答:见第2组实验题答案文件夹。
3.编写一个菜单程序。水平菜单项为:录入、删除、修改、查询。要求选择前三个菜单项后分别执行程序p_insert.prg、p_delete.prg和p_update.prg;选择查询菜单项后弹出下级菜单,其菜单项为:顺序查询、索引查询。(20分)
答:程序清单如下
set talk off
clear
define menu caidan
define pad luru of caidan prompt “录入”
define pad shanchu of caidan prompt “删除”
define pad xiugai of caidan prompt “修改”
define pad chaxun of caidan prompt “查询”
on selection pad luru of caidan do p_insert.prg
on selection pad shanchu of caidan do p_delete.prg
on selection pad xiugai of caidan do p_update.prg
on pad chaxun of caidan activate popup popchaxun
define popup popchaxun
define bar 1 of popchaxun prompt “顺序查询”
define bar 2 of popchaxun prompt “索引查询”
activate menu caidan
set talk on
return
4.用FoxPro语言或SQL语言编写程序完成以下查询。(以下三题依次为15分、20分、20分)
(1)列出仓库清单,要包含所有仓库的所有属性,且在更后一行显示:
所有仓库的总面积为 xxxxx平方米。
答:程序清单如下
set talk off
clear
use 第2组实验题答案文件夹\cangku
sum all 面积 to s1
list off
? “ 所有仓库的总面积为”+str(s1,10,2)+“平方米”
use
set talk on
return
(2)列出各个仓库的库存情况清单,包括的数据项为仓库号、货号、货物名、(每种)货物的总价。重量小于50千克的货物不在其内。以仓库号为第一序、货号为第二序,升序排列。
答:程序清单如下
set talk off
clear
select a.仓库号 as 仓库号,a.货号 as 货号,b.货物名 as 货物号,b.单价*a.数量_kg as 货物总价;
from 第2组实验题答案文件夹\cunfang a, 第2组实验题答案文件夹\huowu b;
where (a.货号=b.货号) and (a.数量_kg>=50);
order by a.仓库号,a.货号;
into table 第2组实验题答案文件夹\kuncun
use 第2组实验题答案文件夹\kuncun
list off
close databases
set talk on
return
(3)列出每个仓库的仓库号,以及每个仓库单位面积内所承受的平均重量,并按平均承重值从大到小排序。
答:程序清单如下
set talk off
clear
select a.仓库号 as 仓库号,sum(c.数量_kg*b.重量_kg) as 总重量,a.面积 as 面积;
from 第2组实验题答案文件夹\cangku a, 第2组实验题答案文件夹\huowu b,;
第2组实验题答案文件夹\cunfang c;
where a.仓库号=c.仓库号 and c.货号=b.货号;
group by a.仓库号;
into cursor tmp
select tmp.仓库号 as 仓库号,tmp.总重量/tmp.面积 as 平均承重;
from tmp;
into table 第2组实验题答案文件夹\pjchzh
close databases
use 第2组实验题答案文件夹\pjchzh
index on -平均承重 to 第2组实验题答案文件夹\pjchzh1
list off
use
set talk on
return