1、数据库系统原理课程设计指导书 作者: 日期:2 个人收集整理 勿做商业用途 数据库系统原理课程设计指导书一、课程设计目的数据库原理及应用课程设计是为配合数据库系统原理课程的教学而独立开设的实践性课程,对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要.通过。本课程设计的主要目标是:1通过课程设计使学生进一步巩固所学的知识,加深对数据库系统、程序设计语言的理论知识的理解和综合应用水平。2通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。3培养学生自主学习、独立设计、独立调试程序的能力。4培养学生初步的软件设计能力,
2、形成良好的编程风格。二、课程设计要求1、在对数据库理论及知识理解的基础上;重点是针对具体的实际问题选择并设计合适的数据库表加以应用,并在此基础上完成相关的算法与程序。2、给出系统的概要设计、详细设计。包括:数据流图,ER图,数据库表、程序流程图、功能模块图的设计、编码实现等。4、撰写规范化的课程设计报告。5、在选题时除了提供的参考项目外,大家也可根据自己现实工作或生活的实际需要和能力,选择课程设计题目,要求难易适中,业务情况容易了解,涉及其他专业的专业性”不要太强。6、考虑到设计工作量大,可以2-3个同学一组共同协作完成一个项目的设计与实现,但各成员的工作必须有明确的分工,各组题目不得重复。三
3、、课程设计内容1系统分析与数据库设计阶段1) 通过社会调查,选择一个实际应用数据库系统的课题。2)进行系统需求分析和系统设计,写出系统分析和设计报告。3)设计数据模型并进行优化,确定数据库结构、功能结构和系统安全性和完整性要求.2应用程序设计阶段1)完成数据库定义工作,实现系统数据的数据处理和数据录入。2)实现应用程序的设计、编程、优化功能,实现数据安全性、数据完整性和并发控制技术等功能,并针对具体课题问题提出解决方法。3系统集成调试阶段对系统的各个应用程序进行集成和调试,进一步优化系统性能,改善系统用户界面。4课程设计报告撰写阶段该阶段应完成以下文档资料的撰写:1)课程设计的题目、系统的总功
4、能和各子模块的功能。2)主要算法简述。3)程序流程图,数据流程图,E-R关系图。4)使用的数据库表结构的详细情况。5)课程设计的总结,主要包括以下内容。l 课程设计中遇到的主要问题和解决方法。l 创新和得意之处。l 课程设计中存在的不足,需进一步改进的设想.l 课程设计的感想和心得体会.以上内容要求干净整洁,符合课程设计的要求和规范.四、步骤与安排依照教学计划课程设计时间为2周,具体安排可参考下表。序号设计内容内容时间(天)要求1选题与收集资料选择课题,进行系统设计的准备工作。1在小组内进行分工,并进行系统调查,收集相关资料,进一步熟悉开发工具.2系统需求分析与功能设计根据课题的要求进行简单的
5、需求分析,设计相应的数据流图,得出相应的系统功能需要1系统数据流图3总体设计根据功能需求,设计系统的总体结构2系统总体功能模块图菜单的设计4数据库设计完成数据库的概念设计、逻辑设计,按数据库设计方法和规范化理论得出符合3NF的逻辑模型2ER图设计ER图转化为相应的关系模式设计数据库的逻辑模型(以表格),在机器上完成数据库的物理设计5应用程序设计设计并编写输入输出、查询统计、数据维护等功能模块的应用程序.5根据个人能力,可以选用VB、VC等高级编程语言设计界面,并实现与数据库的连接,最终实现系统的全部功能。6程序调试与测试自行调试程序,成员交叉测试程序.1记录测试情况.7设计报告与成果提交撰写设
6、计报告并提交相应资料与成果2报告按要求规范书写。五、考核方式与成绩评定课程设计的成绩根据学生在课程设计期间的态度、课程设计的完成后演示情况和难易程度,课程设计说明书的质量综合评定。不符合要求的设计报告,抄袭的设计报告或者在设计中完全未参与者将按不及格处理。考核成绩按优、良、中、及格和不及格五个等级打分(使用百分制参照:优:90-100,良:80-80,中:7079,及格:60-69,不及格:60以下).各阶段的图表与文档、数据库作为考核的内容,成绩计分按优、良、中、及、不及格5级评定。【说明】1要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作.2、既要虚心接受老师的指导,又要
7、充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容。课题相同者,内容不能相同,否则成绩以不及格计.4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。六、课程设计参考题目题目1:进销存管理系统的设计与实现系统概述:通过对典型的小型流通型企业的进货、销售、库存的业务流程进行分析,完成具有进货管理、销售管理、库存管理等相关功能的数据库管理应用系统。基本要求:1、完成进货单(盘盈)、出货单(盘亏)的维护2、完成库存表的浏览查找 3、完成库存结转功能4、按时间、按商品类别、
8、顾客、供应商进行进、出货单的统计5、完成库存表的按时间、按类别进行统计6、完成客户、供应商的管理本题目所需的知识点:ER关系图;数据库表设计,数据库表维护等.题目2:学生成绩管理系统的设计与实现系统概述:通过对学校日常教学管理中的课程、选课、学生、教师、成绩等相关内容进行分析,完成具有学生管理、成绩管理、课程管理等相关功能的小型数据库管理应用系统.基本要求:1、完成进学生、班级、课程表的维护2、完成成绩表的浏览查找 3、完成成绩表的维护4、按班级、按课程计算平均成绩、最高成绩、最低成绩、及格率5、统计某学生、某学期的所有课程的平均成绩。6、完成用户管理功能7、完成数据备份与恢复功能本题目所需的
9、知识点:ER关系图;数据库表设计,数据库表维护等.题目3:工资管理系统的设计与实现系统概述:通过对人事管理管理部门中的职称、工资、员工、部门、工资类别等相关内容进行分析,完成具有人员管理、工资管理、部门管理等相关功能的小型数据库管理应用系统,系统需要具备增减工资中应发、应扣类别的灵活性,以适应将来需求的变化。基本要求 :1、完成进人员、部门、工资类别、职称表的维护2、根据需要对工资类别进行添加3、完成工资表的生成,并计算相关数据,进行查询。 4、按部门计算平均工资5、按人、年统计平均工资6、完成用户管理功能本题目所需的知识点:E-R关系图;数据库表设计,数据库表维护等。题目4:食品消费管理系统
10、的设计与实现系统概述:通过对学生在学校餐厅的消费流程进行分析,完成具有食品管理、消费管理、餐厅管理等相关功能的小型数据库管理应用系统.基本要求 :1、完成进人员、餐厅、食品价目表的维护2、完成消费表的生成,并计算消费折扣. 3、按人员、时间、餐厅统计计算消费总额4、按食品类别、时间、餐厅统计计算消费总额5、完成用户管理功能6、完成数据备份与恢复功能本题目所需的知识点:E-R关系图;数据库表设计,数据库表维护等。题目5:机票预定信息系统的设计与实现系统功能的基本要求:航班基本信息的录入,包括航班的编号、飞机名称、机舱等级等。机票信息,包括票价、折扣、当前预售状态及经手业务员等.客户基本信息,包括
11、姓名、联系方式、证件及号码、付款情况等。按照一定条件查询、统计符合条件的航班、机票等;对结果打印输出。题目6:长途汽车信息管理系统的设计与实现系统功能的基本要求:路信息,包括出发地、目的地、出发时间、所需时间等。汽车信息:包括汽车的种类及相应的票价、最大载客量等.票价信息:包括售票情况、查询、打印相应的信息.题目7:人事信息管理系统的设计与实现系统功能基本要求:员工各种信息:包括员工的基本信息,如编号、姓名、性别、学历、所属部门、毕业院校、健康情况、职称、职务、奖惩等;员工各种信息的修改;对转出、辞退、退休员工信息的删除;按照一定条件,查询、统计符合条件的员工信息;教师教学信息的录入:教师编号
12、、姓名、课程编号、课程名称、课程时数、学分、课程性质等。科研信息的录入:教师编号、研究方向、课题研究情况、专利、论文及著作发表情况等。按条件查询、统计,结果打印输出。题目8:超市会员管理系统的设计与实现系统功能的基本要求:加入会员的基本信息,包括:成为会员的基本条件、优惠政策、优惠时间等.会员的基本信息,包括姓名、性别、年龄、工作单位、联系方式等。会员购物信息:购买物品编号、物品名称、所属种类,数量,价格等.会员返利信息,包括会员积分的情况,享受优惠的等级等。对货物流量及消费人群进行统计输出。题目9:客房管理系统的设计与实现系统功能的基本要求:客房各种信息,包括客房的类别、当前的状态、负责人等
13、;客房信息的查询和修改,包括按房间号查询住宿情况、按客户信息查询房间状态等。以及退房、订房、换房等信息的修改。对查询、统计结果打印输出.题目10:药品进销存信息管理系统的设计与实现系统功能基本要求:药品信息,包括药品编号、药品名称、生产厂家、生产日期、保质期、用途、价格、数量、经手人等;员工信息,包括员工编号、姓名、性别、年龄、学历、职务等;客户信息,包括客户编号、姓名、联系方式、购买时间、购买药品编号、名称、数量等。入库和出库信息,包括当前库存信息、药品存放位置、入库数量和出库数量的统计。题目11:学生选课管理信息系统的设计与实现系统功能基本要求:教师信息,包括教师编号、教师姓名、性别、年龄
14、、学历、职称、毕业院校,健康状况等。学生信息,包括学号、姓名、所属院系、已选课情况等。教室信息,包括,可容纳人数、空闲时间等。选课信息,包括课程编号、课程名称、任课教师、选课的学生情况等。成绩信息,包括课程编号、课程名称、学分、成绩。按一定条件可以查询,并将结果打印输出。题目12:图书管理系统的设计与实现系统功能基本要求:图书信息,包括图书编号、图书名称、所属类别等;读者信息,包括读者编码、姓名、性别、专业等;借还书信息,包括图书当前状态、被借还次数、借阅时间等。题目13:教室管理信息系统的设计与实现系统功能基本要求:教室信息,包括教室容纳人数、教室空闲时间、教室设备等;教师信息,包括教师姓名
15、、教授课程、教师职陈、安排上课时间等;教室安排信息,包括何时空闲、空闲的开始时间、结束时间等。按照一定条件查询,统计,将结果打印输出。题目14:职工考勤管理信息系统的设计与实现系统功能基本要求:职工信息,包括职工编号、职工姓名、性别、年龄、职称等;出勤记录信息,包括上班打卡时间,下班打开时间,缺勤记录等;出差信息,包括出差起始时间、结束时间、统计总共天数等;请假信息,包括请假开始时间,结束时间,统计请假天数等;加班信息,包括加班开始时间、结束时间、统计加班总时间。题目15:个人信息系统的设计与实现系统功能基本要求:通讯录信息,包括通讯人姓名、联系方式、工作地点、城市、备注等;备忘录信息,包括什
16、么时间、事件、地点等;日记信息;包括时间、地点、事情、人物等;个人财物管理,包括总收入,消费项目、消费金额、消费时间、剩余资金等。附:课程设计报告参考实例学生成绩管理系统的设计与实现一、绪论(绪论是整篇文章的开始,应简要说明选题的缘由,设计与研究工作的目的、范围,相关领域以及前人的工作和知识空白,理论基础的分析、研究方法、研究内容、实验方法,预期结果和意义.)二、系统需求分析学生成绩管理工作是学校学生管理工作的重要组成部分,现在相当一部分学校的学生成绩管理工作仍沿用手工方式。随着学校规模的扩大、学生人数的增加,效率低下、容易出错的手工方式越来越不适应实际管理工作的需要,按照软件工程原理和数据库
17、技术开发学生成绩管理系统已成为学生管理部门的迫切需要。本实验实现的学生成绩管理系统主要包括以下功能:1 完成数据的录入和修改,并提交数据库保存.其中的数据包括:学生信息、课程设置、学生成绩以及操作员信息等;2实现信息查询。主要包括:学生信息查询、课程信息查询和成绩查询等;3具备一定的安全性管理功能。包括操作员的权限设置、密码设置、重新登录和修改口令等功能。三、系统设计3。1系统总体设计 本系统采用C/S体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,采用PowerBuilder9作为开发工具;服务器端则用于提供数据服务,采用SQL Server2000作为数据库管理系统.
18、本系统按照功能划分为以下四个模块:学生管理(包括学生信息录入和学生信息查询)、课程管理(包括课程设置和课程查询)、成绩管理(包括成绩录入和成绩查询)和系统管理(包括口令更改、重新登录和操作员管理等)。系统的功能模块图如图1所示:学生成绩管理系统图1 系统的功能模块图3。2数据库设计3。2。1数据库概念结构设计本系统主要有学生和课程两个实体集,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,两个实体集之间是多对多联系,联系上有选课成绩。为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户的编号、姓名、密码和权限。本系统的ER图如图2所示:学号选修成绩学生nm姓名所在系出生日期性
19、别课程课程代码课程名称先行课号学分操作员操作员编号操作员姓名名密码权限图2 系统的E-R图3.2.2数据库逻辑结构设计根据关系模型的转换原则,上面的E-R图可转换为如下所示的关系模型:Student(Sno,Sname,Sex,Sbirth,Sdept)其中各项含义分别为:学生(学号,姓名,性别,出生日期,所在系)Course(Cno,Cname,Cpno,Credit)其中各项含义分别为:课程(课程代码,课程名称,先行课号,学分)SC(Sno,Cno,Grade)其中各项含义分别为:选修(学号,课程代码,成绩)Operator(Operator_id,Operator_name,Passwo
20、rd,Permission)其中各项含义分别为:操作员(操作员编号,操作员姓名,密码,权限)根据上面的ER图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:表1 学生信息表Student的表结构主码列 名数据类型宽度小数位空否备 注PkSnoChar5N学号SnameChar8Y姓名SexChar2Y性别SbirthSmallDatetimeY出生日期SdeptChar20Y所在系表2 课程信息表Course的表结构主码列 名数据类型宽度小数位空否备 注PkCnoChar3N课程代码CnameChar20Y课程名称CpnoChar3Y先行课号CreditDecimal31Y
21、学分表3 选课成绩表SC的表结构主码列 名数据类型宽度小数位空否备 注PkSnoChar5N学号CnoChar3N课程代码GradeDecimal51Y成绩表4 操作员表Operator的表结构主码列 名数据类型宽度小数位空否备 注PkOperator_idChar4N操作员编号Operator_nameChar12Y操作员姓名PasswordChar10Y密码PermissionChar20Y权限下面在系统实施阶段就可以物理实现数据库了,本系统使用前面实验已经建好的服务器端SQL Server数据库Student,具体创建方法见前面实验。四、系统实现结合PowerBuilder进行数据库应用
22、开发的特点,设计过程可按如下步骤进行:l 创建应用库及应用对象;l 创建全局变量;l 创建菜单;l 创建数据窗口;l 创建窗口并在窗口中放置所需控件.4.1创建应用库及应用对象利用PB8创建工作区间GM。pbw,进一步创建应用库gm.pbl,应对象名为gm,注释为“学生成绩管理系统”.按照下面的方法,设置应用对象的属性:默认的微帮助:在属性视图的Genral”标签中,将”MicroHelpDefault编辑框中的内容设为“就绪”。取消用户对工具条的控制:将属性视图中Toolbar标签中的”ToolbarUserControl”属性设置为不选中状态。对应用对象的Open事件进行编程,程序代码如下
23、:open(w_welcome)/打开启动封面窗口/设置数据库连接参数SQLCA.DBMS = ODBCSQLCA。AutoCommit = FalseSQLCA.DBParm = Connectstring=DSN=gm /数据库为Studentconnect;/判断连接是否成功,若不成功,则提示出错信息,并返回if sqlca。sqlcode0 thenmessagebox(”错误”,数据库连接错误,轻检查后重试!”,stopsign!)close(w_welcome)returnend ifclose(w_welcome)/关闭封面窗口openwithparm(w_login,”Firs
24、t”)/打开登陆窗口,First参数表明第一次登陆4.2 创建全局变量在应用程序中,为了保存全局信息,定义的全局变量如图3所示:图3 全局变量的定义4.3菜单设计根据应用系统的功能要求,设计如图4所示的菜单结构,其中将菜单名称命名为m_main,注释为“主菜单”,其中的图标选用的是系统内置的图标:图4 系统的主菜单各菜单项标题、名称及相应的”Clicked”事件中的代码如下:学生管理(m_student)学生信息录入(m_student_input):open(w_student_input)学生信息查询(m_student_query):open(w_student_query)课程管理(m
25、_course)课程设置(m_course_set):open(w_course_set)课程查询(m_course_query):open(w_course_query)成绩管理(m_score)成绩录入(m_score_input):open(w_score_input)成绩查询(m_score_query)按学生查询(m_score_query_student):open(w_score_query_student)按课程查询(m_score_query_course): open(w_score_query_course)系统管理(m_system)口令更改(m_system_pass
26、word):open(w_changepassword)重新登录(m_system_relogin):openwithparm(w_login,”RELOGIN)操作员管理(m_system_operator):open(w_operator)退出系统(m_system_exit):close(parentwindow)4。4创建数据窗口根据需要创建以下数据窗口:d_student:学生信息录入数据窗口.创建选项:“Grid”显示风格,“Quick Select”数据源,“student”表选择所有列,按Sno”排序,“性别”一栏的编辑风格选用”DropDownListBox,增加”男、”女”
27、两项,“出生日期”的编辑风格选用”EditMask”,内容为”yyyy/mm/dd”.在数据窗口中添加六个命令按钮,属性如表5设置: 表5 d_student数据窗口中命令按钮的属性设置控 件 名属 性值b_pagepriorText上一页ActionPagepriorb_pagenextText下一页ActionPagenextb_addText增加ActionAppendRowb_deleteText删除ActionDeleteRowb_saveText保存ActionUpdateb_exitText退出ActionUserDefined设计样式如图5所示:(注意修改数据窗口的列标题)图5
28、 d_student数据窗口的设计样式图d_student2:学生信息查询数据窗口。创建选项:“Grid”显示风格,“Quick Select”数据源,“student”表选择所有列,其他可不变。d_course:课程设置数据窗口。创建选项:“Grid显示风格,“Quick Select”数据源,“course”表选择所有列,在数据窗口中添加六个命令按钮,属性设置与d_student相同。 d_course2:课程查询数据窗口。方法与d_student2类似。d_operator:操作员管理数据窗口。创建选项:“Grid”显示风格,“Quick Select”数据源,“operator”表选择
29、所有列,其他可不变。d_score:成绩录入数据窗口。创建方法与d_student类似。d_score_student:按学生_成绩查询数据窗口。创建选项:“Group显示风格,“SQL Select”数据源,选择打开“student”、“course”和“sc”三个表.一次选择“sc表的sno列、“student表的sname列、“sc表的cno列、“course”表的cname列和“sc表的grade列,在分组对话框中,选择“sc”表的sno列、“student”表的sname列进行分组.在数据窗口对象的Design视图中选中细目区(detail)中的sc_grade列,在其属性视图的Fo
30、nt选项卡中的TextColor属性后的条件框中输入if( sc_grade 60,rgb(255,0,0),rgb(0,0,0),使不及格的成绩呈红色显示。在组尾区(Group Trailer)中插入一个静态文本框控件和一个计算域控件用于显示“平均成绩:提示文本和每组的平均成绩,并且在属性视图的Format选项卡中设定计算域控件的显示格式为“0#。0,最终效果如图6所示:图6 d_score_student数据窗口的设计样式图d_score_course:按课程_成绩查询数据窗口。创建方法与d_score_student类似。4.5创建窗口并在窗口中放置所需控件根据需要创建以下窗口:w_we
31、lcome:封面窗口。创建选项:Title=“欢迎; WindowType=popup!;ControlMenu=false;Pointer=HourGlass!;st_title.text=“欢迎使用学生成绩管理系统”;St_message.text=“正在连接数据库,请稍等”。运行效果如图7所示:图7 封面窗口的运行效果w_login:登录窗口。创建选项:Title=“请您登录; WindowType=response!;st_operator_id。text=“操作员编号 ;st_operator_name。text=“操作员姓名”; st_password。text=“口令”;sle_
32、operator_id.text=”; sle_operator_name.text=”; sle_operator_name.Enabled=false; sle_password.text=”; sle_password.password=true;cb_ok.text=“确定”;cb_exit.text=“退出”;cb_exit.cancel=true。窗口的“Open”事件代码:gs_loginparm=message.stringparm /保存传递过来的参数“操作员编号”编辑框(sle_operator_id)的“Midified事件代码:string ls_operator_id
33、ls_operator_id=sle_operator_id.textselect ”operator。”operator_name” into :gs_operator_name from ”operator where operator”。”operator_id”=:ls_operator_id;if sqlca.sqlcode0 thensle_operator_name.text=没找到!”sle_operator_id。text=sle_password。text=”returnend ifsle_operator_name。text=gs_operator_name“确定”按钮(
34、cb_ok)的“Clicked事件代码:string ls_operator_id,ls_operator_name,ls_password,ls_permissionstring ls_getpasswordls_operator_id=sle_operator_id.textselect operator”.”operator_name”,”operator.password”,”operator”.permission” into :ls_operator_name,:ls_password,:ls_permission from ”operator” where ”operator”。
35、”operator_id=:ls_operator_id;if sqlca。sqlcode0 thensle_operator_name.text=没找到!sle_operator_id。text=sle_password.text=”sle_operator_id。setfocus()returnend ifsle_operator_name.text=ls_operator_namels_getpassword=trim(sle_password.text)ls_password=trim(ls_password)if len(ls_password)=0 then ls_password
36、=space(10)if len(ls_getpassword)=0 or isnull(ls_getpassword) thenls_getpassword=space(10)end ifif ls_getpasswordgs_password thenmessagebox(警告,旧口令不对!”)sle_oldpassword.text=”sle_oldpassword.setfocus()returnend ifif ls_newpasswordls_renewpassword thenmessagebox(警告,两次输入的新口令不同!)sle_newpassword.text=”sle_
37、renewpassword。text=”sle_newpassword。setfocus()returnend ifUpdate operator set ”password”= :ls_newpassword where operator”.operator_id”=:gs_operator_id;if sqlca.sqlcode0 thenrollback;messagebox(”错误”,修改口令失败,请重试!”)returnend ifgs_password=ls_newpasswordcommit;messagebox(提示,”修改口令成功!”)close(parent)退出按钮 (cb_exit)的“Clicked”事件代码:close(parent)运行效果如图9所示:图9 口令修改窗口的运行效果w_operator: 操作员管理窗口。创建选项:Title=“操作员管理; WindowType=respon