1、1河南理工大学计算机学院数据库课程设计任务书及题目一 数据库课程设计目的和要求1.目的:1)复习巩固数据库系统原理课程的基础知识,进一步加深对数据库的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。2.要求:1)选题合理,难宜适中,一人一题或两人合作。2)对系统进行功能模块分析,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;3)系统设计要实用,编程简练,可用,功能全面;4)要求采用模块
2、化及面向对象程序设计方法,要求上机调试通过并生成可执行程序。5)设计报告中必须包含 ER 图分析及模块结构图,要写清楚数据库的逻辑结构设计。6)数据库中每个基本表的测试实例不能少于 10 条记录。7)两人合作同一题目的必须分工明确,设计报告主要写自己所做功能模块分析,雷同的课程设计报告按不及格评定。8)课程设计上交内容:每人设计报告一份(按格式书写) ;班级源程序光盘一张(能编译成可执行文件并能正常运行) 。2二 数据库系统原理课程设计选题数据库系统原理课程设计题目设计题目 设计题目1、学生信息管理系统2、图书借阅管理3、工资管理系统4、物资管理系统5、客户管理系统6、学生成绩管理系统7、人事
3、管理系统8、班级信息管理9、学生教材定购系统10、学生选课信息系统11、在线新闻管理系统12、宾馆客房信息管理系统13、超市商品销售管理14、旧货交易系统15、机房实验设备管理系统16、上机排课系统17、学生火车票定购系统18、学生奖学金评定系统19、试卷生成系统20、俱乐部会员管理系统除以上列出的参考题目外,学生可根据社会实际需要设计符合要求的新题目。3三、设计时间安排(第 18 周 2011 年 1 月 3 日-9 日)1、 时间安排第一阶段:1.班级分组,选定课题,查阅相关资料 2.划分模块、小组成员分工,编制源程序 第二阶段:上机调试,修改、完善系统 第三阶段:撰写、上交课程设计说明书
4、(1 份/人),上交系统设计程序代码光盘(由班长或学习委员统一收齐和设计说明书一起交)。2、 集中上机时间地点:(最后两次为学生答辩阶段)地点:1 号教学楼 5 楼机房 503 时间:第 18 周周一下午 3 节;周二上午 4 节;周三上午 4 节;周四下午 3 节;周五上午前 2 节3、上交课程设计报告时间:2011 年 1 月 14 日(第 19 周)四、考核内容和方式1、在设计期间,学生要按时上机,设计结束根据记录的设计材料整理成设计说明书。设计说明书中应写出自己的主要工作及收获,要求对问题有一定的分析,行文流畅。2、结合学生的动手能力,独立分析解决问题的能力和创新精神,设计成绩由指导教
5、师根据考勤、设计说明书质量以及程序代码按五级分制综合评定。成绩分为: 优、良、中、及格和不及格五等。4说 明:1)按规定的模板封面输出,不准自定义封面格式。2)软件:需提供源程序,并能正常运行。 3)对于程序中未能实现的部分需要加以说明。4)两人合作同一题目的必须分工明确,设计报告主要写自己所做功能模块分析,雷同的课程设计报告按不及格评定。五、课程设计报告参考格式(一) 、封面(见下页模版) ;(二) 、目录;(三) 、摘要(说明系统实现的主要功能)(四) 、课题组成员及本人任务;(五) 、需求分析(包括设计工具的选择和简单介绍) ;(六) 、概念结构设计(必须有总体 ER 图)(七) 、逻辑
6、结构设计(数据库中各基本表的设计)(八) 、系统功能实现(包括功能结构图,要有系统运行抓图及主要代码分析)(九) 、设计总结(心得体会)(十) 、参考文献(不少于 5 条)(十一) 、附录:主要源代码(可选)5河南理工大学万方科技学院课程设计报告2010 2011 学年 第 一 学期课程名称 数据库系统原理 设计题目 学生姓名 学 号 专业班级 指导教师 刘艳霞 年 月 日6附录 1:典型题目分析1设计题目:图书借阅管理背景资料:1) 图书室有各种图书一万多册。2) 每种图书都有书名、书号(ISBN) 、一名或多名作者(译者) 、出版社、定价和内容简介。3) 借书证记录有借阅者的姓名、所在单位
7、、职业等。4) 凭借书证借书,每次最多能借 8 本书。借书期限最长为 30 天。设计要求:1) 进行需求分析,编写数据字典。2) 设计 E-R 图。3) 实现新进图书的数据录入。4) 实现对所有购进图书的分类查询和分类统计。5) 能够按书名、作者等分类查询现有图书的数量。6) 记录借阅者的个人资料和所借图书的书名、书号数据等。2设计题目:工资管理系统背景资料:1)某单位现有 1000 名员工,其中有管理人员、财务人员、技术人员和销售人员。2)该单位下设 4 个科室,即经理室、财务科、技术科和销售科。3)工资由基本工资、福利补贴和奖励工资构成,失业保险和住房公积金在工资中扣除。4) 员工的基本资
8、料有姓名、性别、年龄、单位和职业(如经理、工程师、销售员等) 。5) 每月个人的最高工资不超过 3000 元。工资按月发放,实际发放的工资金额为工资减去扣除。设计要求:1) 进行需求分析,编写数据字典。2) 设计 E-R 图。3) 实现按照科室录入个人的基本资料、工资和扣除金额的数据。4) 计算个人的实际发放工资。5) 按科室、职业分类统计人数和工资金额。6) 实现分类查询。7) 能够删除辞职人员的数据。3设计题目:物资管理系统背景资料:1)一个存放商品的仓库,每天都有商品出库和入库。2)种商品都有名称、生产厂家、型号、规格等。73)出入库时必须填写出入库单据,单据包括商品名称、生产厂家、型号
9、、规格、数量、日期、时间、入库单位(或出库单位)名称、送货(或提货)人姓名。设计要求:1) 进行需求分析,编写数据字典。2) 设计 E-R 图。3) 设计出入库单据的录入。4) 实现按商品名称、出入库日期的查询。5) 实现分别按日、月和年对出入库商品数量的统计。附录 2:学生成绩管理系统实现简介(VFP)1. 系统组成 本系统由 1 个数据库、3 个查询,14 个表单、3 个报表、1 个菜单、6 个程序和 2 个自由表组成。 数据库组成:(1)数据表 3 个: 学生表(5 个字段: xh, xm, xb, csrq, bj),其中有 4 个班各 5 名学生的记录课程表(4 个字段:kch,kc
10、m, js, xf),其中有 4 门课程的记录;成绩表(3 个字段:xh, kch, cj),其中有 80 条学生成绩的记录。(2)本地视图 1 个: 基于以上 3 张表创建,输出字段为:xh, xm, xb, bj, kcm, cj查询组成:查询学生、按班级查询成绩、按课程查询成绩 表单组成: 主界面表单、退出表单、学生表单、课程表单、成绩表单(可按学号分类和按课程分类)、 查询学生表单、查询成绩表单、总浏览表单、浏览学生表单、浏览成绩表单、系统信息表单、 设置口令表单集、修改表单界面。 菜单组成:主菜单由系统维护、浏览、查询、报表、帮助、退出 6 项组成。报表组成:学生一览表、课程一览表、
11、成绩一览表(可按课程分类和按学号分类)。程序组成:主程序、统计全体学生概况、按班级统计学生概况、统计全体成绩概括、按班级统计各门课的成绩、按课程统计各班学生的成绩。自由表组成:密码表、系统信息表。82. 系统功能 本系统的主要功能分别通过主菜单中的以下各项来实现: 通过系统维护菜单实现数据表记录的维护、数据表结构的修改、系统口令的更改、表单的修改; 通过浏览菜单实现对学生表、课程表和成绩表的总浏览和相关统计信息的浏览; 通过查询菜单实现对学生和成绩的各种查询; 通过报表菜单实现学生、课程和成绩的打印输出; 通过退出菜单退出本系统。3数据库组成数据库名称 数据表名称 数据表结构 记录 表 xs
12、Xh c7,xm c8,xb c2,csrq d,bj c10 4 个班,每班 5 名学生 表 kc Kch c5,kcm c20,js c8,xf n3.1 至少 4 门课 数据 test 表 cj Xh c7,kcm c20,cj n5.1 每人至少 2 门课成绩 本地视图:表 xscj Xh,xm,xb,bj,kcm,cj 4表单组成 表单名称 功能 设计方法 表 xs.scx 表 kc.scx 表 cj.scx 用于数据表的维护, 通过这 3 个表单对 3 个基本数据表进行记录的修改、删除、增加、查看等操作 先用表单向导生成基本表单,再在表单设计器中进行适当修改,制作成自己满意的样式。
13、 查询学生.scx 根据用户设置的条件对学生表进行各种情况的查询 查询成绩.scx 根据用户设置的条件对学生成绩表进行查询 在表单设计器中利用数据环境生成表格,再从表单控制中调出系统类库,将文本按钮组添加到表单中,去掉多余部分,只留下查找按钮即可。 9总浏览表.scx 以页面形式将 3 张数据表的全部内容集中展现在一个表单中,以便用户了解系统总的情况。 在表单设计器中利用页框控件生成 3 个页面,再利用数据环境将3 张数据表分别拖到各页面上,生成相应表格,调至合适大小即可。 浏览学生.scx 以页面形式将学生表的内容按班级分组显示,以便阅览。第1 页为全体学生概况,第 2 页为各班学生情况。
14、在表单设计器中利用页框控件生成 2 个页面,第 1 页设计 8 个标签和 7 个文本框,并在其Activate 过程中调用程序 sumstud.prg;第 2 页设计 5 个标签,3 个文本框,1 个组合框,1 个表格,在组合框的InteractiveChange 过程中调用程序 clastud.prg 和查询 student.qpr。 浏览成绩.scx 以页面形式将成绩表的内容按班级和课程分组显示,以便阅览。第 1 页为全体学生成绩概况,第 2 页为按班级显示学生各门课的成绩情况,第 3 页为按课程显示各班学生的成绩情况。 在表单设计器中利用页框控件生成 3 个页面,第 1 页设计 8 个标
15、签和 7 个文本框,并在其Activate 过程中调用程序 sumcj.prg;第 2 页设计 5 个标签,3 个文本框,1 个组合框,1 个表格,在组合框的InteractiveChange 过程中调用程序 clacj.prg 和查询 cla_cj.qpr; 第 3 页设计 5 个标签,3 个文本框,1 个组合框,1 个表格,在组合框的InteractiveChange 过程中调用程 subcj.prg 和查询 sub_cj.qpr。 5. 报表组成报表名称 功能 设计方法 表 xs.frx 为用户提供系统数据的书面输出先用报表向导生成基本报表,再在报表设计器中进行适当10表 kc.frx
16、表 cj.frx 形式。 修改,制作成自己满意的样式。 6程序文件清单文件名 作用 程序内容 主程序:sjmain.prg 设置系统环境 确定系统口令 调用主界面 set talk offset safety offset deleted on set defa to d:sjrvfp60 课程设计set sysmenu off_screen.caption=“学生成绩管理系统“_screen.backcolor=RGB(157,214,225)_screen.icon=“大自然 .ico“_screen.windowstate=2 Public passw,n use passw.dbf g
17、o bottom passw=alltrim(password)use Do form 主界面read events 在浏览学生表单第 1 页中调用的程序:Sumstud.prg 统计全体学生概况,包括:学生总数: S1 男生总数: S3 女生总数: S4 各班学生总数: S2、S5、S6、S7 close datapublic cs1, s1,s2,s3,s4,s5,s6,s7open data 数据 testuse 表 xscount to s1count for xb=“男“ to s3count for xb=“女“ to s4count for bj=“98 数教“ to s2cou
18、nt for bj=“98 英语“ to s5count for bj=“98 英教“ to s6count for bj=“98 日语“ to s7use 11在浏览学生表单第 2 页中调用的程序:Clastud.prg 根据输入的班级名称 CS1,显示该班学生情况,并统计该班的:学生总数: CS2男生总数: CS3女生总数: CS4 close datapublic cs2,cs3,cs4open data 数据 testuse 表 xsset filter to bj=cs1count to cs2count for xb=“男“ to cs3count for xb=“女“ to cs
19、4set filter touse 在浏览成绩表单第 1 页中调用的程序:Sumcj.prg 统计全体学生成绩概况,包括:学生总平成绩: C1 男生总平成绩: C3 女生总平成绩: C4 各班学生总平成绩:C2、C5、C6、C7close datapublic cc1, c1,c2,c3,c4,c5,c6,c7 open data 数据 testuse 表 xscjcalculate avg(cj) to c1calculate avg(cj) for xb=“男“ to c3calculate avg(cj) for xb=“女“ to c4calculate avg(cj) for bj=
20、“98 数教“ to c2calculate avg(cj) for bj=“98 英语“ to c5calculate avg(cj) for bj=“98 英教“ to c6calculate avg(cj) for bj=“98 日语“ to c7use在浏览成绩表单第 2 页中调用的程序:clacj.prg 根据输入的班级名称 CC1,统计该班的: 学生平均分: CC2男生平均分: CC3女生平均分: CC4并通过执行查询 (cla_cj.qpr)在表格中显示该班各门课的平均分、最高close datapublic cc2,cc3,cc4open data 数据 testuse 表 x
21、scjset filter to bj=cc1calculate avg(cj) to cc2calculate avg(cj) for xb=“男“ to cc3calculate avg(cj) for xb=“女“ to cc4set filter touse 12分、最低分。 在浏览成绩表单第 3 页中调用的程序:Subcj.prg 根据输入的课程名称 SC1,统计该课程的: 平均分: SC2最高分: SC3 最低分: SC4并通过执行查询(sub_cj.qpr)在表格中显示该课程各班的平均分、最高分、最低分。 close datapublic sc2,sc3,sc4 open dat
22、a 数据 testuse 表 xscjset filter to kcm=sc1calculate avg(cj) to sc2calculate max(cj) to sc3calculate min(cj) to sc4set filter touse 7、138. 主菜单组成149浏览成绩表单的设计示例:一. 表单的组成对象本表单由一个包含 3 个页面的页框组成,主要用来浏览成绩表中的统计信息。1. 表单 主要属性为:Name = “browecj“ Caption = “浏览成绩情况“Icon = “大自然 .ico“ AutoCenter = .T.2. 页框 主要属性为:Name
23、= “Pageframe1“ PageCount = 3 Page1.Name = “Page1“ Page2.Name = “Page2“ Page3.Name = “Page3“Page1.Caption = “学生成绩概况“Page2.Caption = “按班级浏览“Page3.Caption = “按课程浏览“(1)页面 1 的组成:15(2)页面 2 的组成(3)页面 3 的组成16此页面中组合框的主要属性为:Name = “Combo1“RowSourceType = 1RowSource = “计算机,英语,体育,大学语文“ 二. 事件代码页框 pageframe1 中Page
24、1 的Activate 事件do sumcj.prg thisform.pageframe1.page1.text1.value=c1 thisform.pageframe1.page1.text2.value=c2 thisform.pageframe1.page1.text3.value=c3 thisform.pageframe1.page1.text4.value=c4 thisform.pageframe1.page1.text5.value=c5 thisform.pageframe1.page1.text6.value=c6 thisform.pageframe1.page1.t
25、ext7.value=c7 page2 中组合框combo1 的InteractiveChange事件cc1=this.valuedo clacj.prg thisform.pageframe1.page2.text2.value=cc2 thisform.pageframe1.page2.text3.value=cc3 thisform.pageframe1.page2.text4.value=cc4 do cla_cj.qpr thisform.pageframe1.page2.grid1.recordsource=“class_cj“17thisform.pageframe1.page2
26、.refresh page3 中组合框combo1 的InteractiveChange事件sc1=this.valuedo subcj.prgthisform.pageframe1.page3.text2.value=sc2 thisform.pageframe1.page3.text3.value=sc3 thisform.pageframe1.page3.text4.value=sc4 do sub_cj.qpr thisform.pageframe1.page3.grid1.recordsource=“sub_cj“thisform.pageframe1.page3.refresh 三
27、. 程序文件和查询文件的内容sumcj.prgclose datapublic c1,c2,c3,c4,c5,c6,c7 open data 数据 testuse xscj calculate avg(cj) to c1calculate avg(cj) for xb=“男“ to c3calculate avg(cj) for xb=“女“ to c4calculate avg(cj) for bj=“99 英教 2“ to c2calculate avg(cj) for bj=“99 英语“ to c5calculate avg(cj) for bj=“99 英教 1“ to c7calc
28、ulate avg(cj) for bj=“99 日语“ to c6useclacj.prgclose datapublic cc2,cc3,cc4 open data 数据 testuse xscjset filter to bj=cc1calculate avg(cj) to cc2calculate avg(cj) for xb=“男“ to cc3calculate avg(cj) for xb=“女“ to cc4set filter tousecla_cj.qprSELECT 表 cj.kch AS 课程号, 表 kc.kcm AS 课程名称,;表 kc.js AS 任课教师,表
29、kc.xf AS 学分,AVG(表 cj.cj) as 平均分, ;MAX(表 cj.cj) as 最高分,MIN(表 cj.cj) as 最低分;FROM 数据 test!表 xs INNER JOIN 数据 test!表 cj;18INNER JOIN 数据 test!表 kc ;ON 表 kc.kch = 表 cj.kch ;ON 表 xs.xh = 表 cj.xh;WHERE 表 xs.bj = CC1;GROUP BY 表 cj.kch;ORDER BY 表 cj.kch;INTO TABLE class_cj.dbfsubcj.prgclose datapublic sc2,sc3
30、,sc4 open data 数据 testuse xscjset filter to kcm=sc1calculate avg(cj) to sc2calculate max(cj) to sc3calculate min(cj) to sc4set filter tousesub_cj.qprSELECT 表 xs.bj AS 班级名称,COUNT(表 xs.xh) as 班级人数,;AVG(表 cj.cj) as 平均分, MAX(表 cj.cj) as 最高分,;MIN(表 cj.cj) as 最低分; FROM 数据 test!表 xs INNER JOIN 数据 test!表 cj;INNER JOIN 数据 test!表 kc ;ON 表 kc.kch = 表 cj.kch ;ON 表 xs.xh = 表 cj.xh;WHERE 表 kc.kcm = SC1;GROUP BY 表 xs.bj;ORDER BY 表 xs.bj;INTO TABLE sub_cj.dbf19