VFP课程设计报告.doc

上传人:laozhun 文档编号:4122838 上传时间:2023-04-06 格式:DOC 页数:7 大小:68KB
返回 下载 相关 举报
VFP课程设计报告.doc_第1页
第1页 / 共7页
VFP课程设计报告.doc_第2页
第2页 / 共7页
VFP课程设计报告.doc_第3页
第3页 / 共7页
VFP课程设计报告.doc_第4页
第4页 / 共7页
VFP课程设计报告.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《VFP课程设计报告.doc》由会员分享,可在线阅读,更多相关《VFP课程设计报告.doc(7页珍藏版)》请在三一办公上搜索。

1、VFP课程设计报告目录第一题3第二题3第三题5第四题6第五题7 1.题目假设使用如下三个数据库表学生表:S(学号,姓名,性别,出生日期,院系)课程表:C(课程号,课程名,学时)选课成绩表:SC(学号,课程号,成绩)在上述表中,出生日期数据类型为日期型,学识和成绩为数值型,其他均为字符型。(1) 用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名;(2) 用SQL语言检索选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成绩降序排序。问题分析在第(1)小题中,要查询的是学号和姓名,限定条件是要求“选修的每门课程的成绩都高于或等于85分”。在第(2)小题中,要

2、查询的是学号、姓名和平均成绩,限定条件是要求“选修课程在5门以上(含5门)”,并要求将结果按照平均成绩的降序进行排序。数据库设计在第(1)小题中,用SELECT从学生表中查询学号和姓名,使用WHERE语句,根据选课成绩表中的“成绩”筛选不符合要求的部分即成绩小于85的部分。在第(2)小题中,用SELECT从学生表和选课成绩表中查询学号、姓名、平均成绩,其中使用AVG语句计算平局成绩。使用GROUP BY语句,根据学号进行分组。使用COUNT语句从选课成绩表中查询选课的门数,将选修课程在5门以下的排除。再使用DESC语句,将查询出来的结果按照平均成绩的降序排序。程序清单(1) SELECT 学号

3、,姓名 FROM S NOT EXISTS (SELECT * FROM SC WHERE SC.学号=S.学号 AND 成绩=5 ORDER BY 平均成绩 DESC测试分析在第(1)小题中,最初的语句为:SELECT 学号,姓名 FROM S WHERE SC.学号=S.学号 AND 成绩=85,这样显示出来的结果是只要其中一门课程的成绩高于或等于85分的学生的学号和姓名,并不是题中要求的“每门课程的成绩都高于或等于85分”。经过从书上寻扎解决方法,我发现了EXISTS语句。在第(2)小题中,最初在计算平均成绩的时候没有加上“AS 平均成绩”,结果显示“找不到列”;在把结果进行降序排序的时

4、候,开始时直接在HAVING语句后面加上DESC,但这样是不正确的,在书上我发现,DESC要和ORDER BY 语句搭配使用。2.题目有如下表的数据:部门表部门号部门名称40家用电器部10电视录摄像机部20电话手机部30计算机部商品表部门号商品名商品名称单价数量产地400101A牌电风扇200.0010广东400104A牌微波炉350.0010广东400105B牌微波炉600.0010广东201032C牌传真机1000.0020上海400107D牌微波炉420.0010北京200110A牌电话机200.0050广东200112B牌手机2000.0010广东400202A牌电冰箱3000.002

5、广东301041B牌计算机6000.0010广东300204C牌计算机10000.0010上海(1) 用SQL语句按部门号查询商品名;(2) 用SQL语句查询某产地提供的商品种类数;(3) 用SQL语句统计各部门商品金额总和;(4) 用SQL语句查询家用电器部和电话手机部价格在420到1000之间的商品信息问题分析在第(1)小题中,要查询的是商品名,限定条件是要求按部门查询。在第(2)小题中,要查询的是商品种类数,限定条件是要求按产地查询。在第(3)小题中,要查询的是商品金额总和,限定条件是要求按部门统计。在第(4)小题中,要查询的是商品信息,限定条件是商品是家用电器部或电话手机部的商品,并且

6、要求价格在420到1000之间。数据库设计在第(1)小题中,用SELECT从商品表中查询商品名,使用WHERE语句锁定需要查询的部门号。在第(2)小题中,用SELECT从商品表中查询商品种类,使用RIGHT语句截取商品名称中的后3个字,进行对比分类。使用DISTINCT语句,将相同的部分去除,得到商品的种类。使用COUNT语句数出一共多少种。使用WHERE语句将范围限定在需要查询的产地。在第(3)小题中,用SELECT从商品表和部门表中查询部门名称、金额总和。使用SUM语句计算金额总和。使用GROUP BY 按部门号进行分类。在第(4)小题中,用SELECT从商品表和部门表中查询部门号、部门名

7、称、商品号、商品名称、单价、数量、产地。使用WHERE语句添加限定条件“部门号是40或部门号是20”。使用HAVING语句将范围缩小到单价在420到1000之间的部分。程序清单(1) SELECT 商品名称 FROM 商品表 WHERE 部门号=”40”(2) SELECT COUNT(DISTINCT RIGHT(ALLTRIM(商品名称),6) FROM 商品表 WHERE 产地=”广东”(3) SELECT 部门表.部门名称,SUM(VAL(数量)*单价) AS 金额总和 FROM 商品表,部门表 WHERE 商品表.部门号=部门表.部门号 GROUP BY 商品表.部门号(4) SEL

8、ECT 商品表.部门号,部门名称,商品号,商品名称,单价,数量,产地 FROM 部门表,商品表 WHERE 部门表.部门号=商品表.部门号 AND (商品表.部门号=”40” OR 商品表.部门号=”20”) HAVING 单价 BETWEEN 420 AND 1000测试分析在第(2)小题中,最初的语句为:SUM(数量*单价) AS 金额总和,但是无法正常显示,经过反复检查后发现,因为在建表的时候“数量”设定为字符型,“单价”为数值型,因而不能进行计算,将语句改为SUM(VAL(数量)*单价)后可以得到正确结果。在第(3)小题中,最初的语句为:COUNT(商品名称),但这样输出来的只是商品名

9、称并非商品种类,因为存在相同的商品只可划分为同一种类,所以要截取商品名称的后3个字进行比较分类,于是改为:COUNT(RIGHT(商品名称,6)。然而这样仍不能正常运行,原因在于,商品名称中存在着空格,需要把空格都去掉,因此将语句再改为:COUNT(DISTINCT RIGHT(ALLTRIM(商品名称,6)),得到正确的查询结果。在第(4)小题中,因为涉及的查询项目很多,所以总是出现项不唯一的情况,经过逐个排除最后能够得到正确的结果。6.题目某数据库中有两个数据库表:物资表(WZB.DBF)和领用表(LYB.DBF),两个表具有一对多关系。完善下面的SELECT语句,使其实现查询近10天内各

10、部门的各种物资领用数量。物资表(WZB.DBF)字段号类型宽度物资代号C6物资名称C12领用表(LYB.DBF)字段名类型宽度物资代号C6领用部门C20领用数量N3领用日期D8SELECT 物资代号,物资名称,领用部门,_ AS 领用数量;FROM WZB,LYB;WHERE WZB.物资代码=LYB.物资代码 AND _GROUP BY 1,3;ORDER BY 3,1问题分析首先要在两个表之间建立起一对多的关系。查询累计的领用数量。领用日期要大于等于当前日期之前10天之前的日期。数据库设计建立一对多关系:在“窗口”菜单中选定“数据工作期”命令,然后用“打开”按钮分别打开物资表和领用表。在“

11、别名”列表框中选定领用表,选定“属性”按钮,在“工作区属性”对话框中选定“修改”按钮,在“表设计器”窗口中单击字段名为“物资代号”的行的“索引”列。组合框中选定升序,选定“确定”按钮返回“工作区属性”对话框,选定“确定”按钮返回“数据工作期”窗口。在“别名”列表框中选定表物资表,选定“关系”按钮,在“别名”列表框中选定表物资表,在“设置索引顺序”对话框中选定“确定”按钮,建立一对多关系。使用SUM语句累计计算领用数量。使用DATE语句将日期限定在最近10天之内。程序清单USE 领用表 IN 0 EXCLUSIVEUSE 物资表 IN 0 EXCLUSIVESELECT 2SET ORDER T

12、O TAG 物资代号 OF 领用表 IN 领用表SET RELATION TO 物资代号 INTO 领用表 ADDITIVESET SKIP TO 领用表SELECT 物资代号,物资名称,领用部门,SUM(领用数量) AS 领用数量;FROM WZB,LYB;WHERE WZB.物资代码=LYB.物资代码 AND 领用日期=DATE()-10GROUP BY 1,3;ORDER BY 3,1测试分析在查询近10天的物资领用情况时,最初的语句是:DATE()-10,这样查询出的只是10前的这一天的情况,并不是一段时间的。所以加上了“领用日期=DATE()-10”,得出正确的查询结果。7.题目设有

13、表文件CJB.DBF,表中共有30条记录,记录内容如下表所示:学号XH课程代号KCDH成绩CJ学号XH课程代号KCDH成绩CJ学号XH课程代号KCDH成绩CJ99020101789902020595990302038999020102809902020684990302049899020103809902010163990203056899020104739902010262990203068499020105829902010382990203018799020106959902010493990203027899020201639902010595990203038599020202629

14、9020106769902030480990202036999020201789902040151990202049399020202809902040386(1) 求班级每门课程表的最高分和最低分;(2) 求每门课程的平均分问题分析在第(1)小题中,要查询的是最高分和最低分。在第(2)小题中,要查询的是平均成绩。数据库设计在第(1)小题中,用SELECT从表CJB中查询最高分和最低分,使用GROUP BY 语句按课程代号分组。在第(2)小题中,用SELECT从表CJB中查询平均成绩,其中使用AVG语句计算平均成绩。使用GROUP BY 语句按课程代号分组。程序清单(1) SELECT 课程代

15、号,MAC(成绩),MIN(成绩) FROM CJB GROUP BY 课程代号(2) SELECT 课程代号,AVG(VAL(成绩) FROM CJB GROUP BY 课程代号测试分析在第(2)小题中,最初的命令是:AVG(成绩),但是无法正常运行,经过反复检查发现因为在建表的时候“成绩”设定为字符型,所以不能直接用函数求平均值,因而加上“AVG(VAL(成绩)”才能查询出正确结果。8.题目有图书管理数据库:图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2) 读者(借书证好C(4),单位C(8),姓名C(6),职称C(6),地址C(20

16、) 借阅(借书证号C(4),总编号C(6),借书日期D(8)(1) 对图书管理数据库,查询由“清华大学出版社”或“电子工业出版社”出版,并且单价不超出20元的书名;(2) 查询所藏图书中,各个出版社的图书最高单价、平均单价和册数;(3) 求共借出多少书问题分析在第(1)小题中,要查询的是书名,限定条件是要求“由“清华大学出版社”或“电子工业出版社”出版,并且单价不超出20元”。在第(2)小题中,要查询的是最高单价、平均单价和册数,要求按出版社分组。在第(3)小题中,要查询的是共借出多少书数据库设计在第(1)小题中,用SELECT从表图书中查询书名。使用WHERE语句添加限定条件由“清华大学出版

17、社”或“电子工业出版社”出版,并且单价不超出20元。使用GROUP BY语句按照书名分组。在第(2)小题中,用SELECT从表图书中查询最高单价、平均单价和册数。使用MAX语句求出最高单价。使用AVG语句求出平均单价。使用COUNT语句数出册数。使用GROUP BY语句按照出版单位分组。在第(3)小题中,用SELECT从表借阅中查询共借出多少书。使用COUNT数出接出书的数量。程序清单(1) SELECT 书名 FROM 图书 WHERE(出版单位=“清华大学出版社” OR出版单位=“电子工业出版社”) AND 单价=20 GROUP BY 书名(2) SELECT 出版单位,MAX(单价),AVG(单价),COUNT(VAL(出版单位) AS 册数 FROM 图书 GROUP BY 出版单位(3) SELECT COUNT(总编号) AS 借出册数 FROM 借阅测试分析在第(2)小题中,最初的命令是:COUNT(出版单位),但是无法正常运行,经过反复检查发现因为在建表的时候“出版单位”设定为字符型,所以不能直接用COUNT,因而加上“COUNT(VAL(出版单位)”才能查询出正确结果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号