数据库课程设计报告《驾校管理系统》内含详细的sql语句及运行截图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院
数据库原理课程设计
题目:驾校管理系统的设计与实现
学生姓名:
学号:
班级:
院系:
专业年级:
2012年 1月 8日
一、需求分析
需包含内容为:
(1)问题描述:设计系统的简单描述
以驾校管理员身份登录该系统界面,实现对驾校的学员信息、教练信息、学员考试信息等进行多条件
组合查询,索引查看,自动安排考试日期,自动生成学费以及信息修改、录入、删除等功能。
(2)系统功能描述,对自己所负责的功能模块,可画出所设计模块的操作流程;并分析所需要存储的数据
信息。
1)信息录入:使用C#语言设计排版编写winform窗口,给出录入信息的接口,通过C#语句实现与数据库的连接,从而向数据库中插入相应数据。
2)信息修改:使用C#语言设计排版编写winform窗口,给出修改信息的接口,通过C#语句实现与数据库的连接,从修改数据库中相应数据。
3)信息查询:在winform窗口中有多条查询规则供选择(可多选),根据选择的查询条件写出相应程序语言实现与数据库的连接查询。
4)系统需要自动安排学员考试日期:在数据库中编写相应的trigger,当学员考试信息表中某条记录的“是否通过考试”或“是否参与考试”的值改变时,该触发器被触发,生成新一行数据。规定:①报名完成后1个月考理论,理论考试通过1个月后考倒桩,倒桩考试通过半个月后考小路,小路考试通过半个月后考大路,如果其中某次考试未通过,补考均安排在1个月后;注意周末不考试。②当大路考试通过后,不再生成新的考试信息,同时级联更新“学员基本信息”表中的“顺利结业”情况。
5)显示照片:在winform中实现学员的照片显示。
6)数据统计:在数据库中编写相应的存储过程,输入教练编号即可select其所带学员人数。
(3)有何安全性与完整性方面的要求(参照所给出的语义规则)。如是否需要显示定
义原子事务、需定义具有什么功能的存储过程、需定义具有什么功能的触发器、对不同
的用户有何不同的系统使用权限等。
1)安全性约束:“性别”(int)取值范围为[0,1];“是否色盲”(tinyint)取值范围为[0,1];“是
否通过全部考试”(success)取值范围为[0,1];“计划学习/教学日”(tinyint)取值范围为[0,1];“考
试内容”(smallint)取值范围为[0,3];“是否参加考试”(attend)取值范围为[0,1];“是否通过考试”(access)取值范围为[0,1];“出生年月”(datetime) 取值范围为[0,6.0]。 2)存储过程:①以学员编号为输入参数查询学员基本信息。②以教练员编号为输入参数统计正在跟 随该教练员学习的学员人数并输出。 3)触发器:①当“学生考试信息表”中的补考次数大于2时,触发事件,级联更新“学员基本信息” 中的学费,使学费增加10%。②当“学生考试信息”表中的“是否参与/通过考试”信息被修改时,触发事 件自动生成一行新的考试信息,其中规定:1、报名完成后1个月考理论,理论考试通过1个月后考倒桩, 倒桩考试通过半个月后考小路,小路考试通过半个月后考大路,如果其中某次考试未通过,补考均安排在 1个月后;注意周末不考试。2、当大路考试通过后,不再生成新的考试信息,同时级联更新“学员基本信息”表中的“顺利结业”情况。 二、概念结构设计 画出系统整体的E-R模型;并对模型中所出现的实体及属性等信息加以说明。 1)学员基本信息:学员编号sno、姓名sname、身份证号sidno、性别ssex、出生年月sbirth、身高stature、体重sweight、左眼视力lefteye、右眼视力righteye、是否色盲colorbind、家庭住址saddr、工作单位scomp、教练员tno、学习费用sfee、照片sphoto,是否已通过全部考试success(加:联系方式scall,计划学习日期(工作日/周末)sday),报名时间(enterday),其中学员编号为主键。 2)教练员基本信息:教练编号tno、姓名tname、身份证号tidno、性别tsex、出生年月tbirth(加:联系方式tcall,计划教学日期(工作日/周末)tday),其中教练员编号为主键。 3)学员考试信息:学员编号sno、考试日期examday、考试内容(理论、倒桩、小路、大路)examinfo、补考次数bkcs、是否参加考试attend、是否通过access。其中学员编号、考试内容、补考次数共同作为主键。 4)学员教练:学员编号sno、教练编号tno 三、逻辑结构设计 (1)模式设计:按系统整体E-R模型,写出关系模式;并利用数据字典加以描述。 (如每个关系模式有何属性、属性的类型、属性值的长度、是否可取空值、是否为主码、 有何约束条件等信息) (2)子模式设计:即针对自己的设计模块的应用需定义什么样的视图表结构;并 利用数据字典加以描述。 (如每个关系子模式有何属性、属性的类型、属性值的长度、是否可取空值、是否为主 码、有何约束条件等信息) 学员基本信息student表 教练基本信息teacher表 为了提高在表中搜索元组的速度,在实际实现的时候应该基于某些属性建立索引。给出 所建立的索引。(包括按哪些表中哪些属性按升序还是降序来创建索引及相应的T-SQL的创建语句)。exam表建立了三个索引: CREATE INDEX syexam_examday ON exam ( examday ASC) CREATE INDEX syexam_examinfo ON exam ( examinfo ASC) CREATE INDEX syexam_sno ON exam ( sno ASC) stte表建立了两个索引: CREATE INDEX systte_sno ON stte ( sno ASC) CREATE INDEX systte_tno ON stte ( tno ASC) Student表建立了三个索引: CREATE INDEX systudent_enterday ON student ( enterday ASC) CREATE INDEX systudent_sname ON student ( sname ASC) CREATE INDEX systudent_sno ON student ( sno ASC) 五、数据库设计实现及运行(1)数据库的创建 T-SQL语句: /*========================================* / /* DBMS name: Microsoft SQL Server 2005 */ /* Created on: 2012/1/4 8:57:37 */ /*========================================* / if exists (select 1 from sysobjects where id = object_id('"CLR Trigger_student"') and type = 'TR') drop trigger "CLR Trigger_student" go if exists (select 1 from sysobjects where id = object_id('td_student') and type = 'TR') drop trigger td_student go if exists (select 1 from sysobjects where id = object_id('ti_student') and type = 'TR') drop trigger ti_student go if exists (select 1 from sysobjects where id = object_id('tu_student') and type = 'TR') drop trigger tu_student go if exists (select 1 from sysobjects where id = object_id('"CLR Trigger_stte"') and type = 'TR') drop trigger "CLR Trigger_stte" go if exists (select 1 from sysobjects where id = object_id('td_stte') and type = 'TR') drop trigger td_stte go if exists (select 1 from sysobjects where id = object_id('ti_stte') and type = 'TR') drop trigger ti_stte go if exists (select 1 from sysobjects where id = object_id('tu_stte') and type = 'TR') drop trigger tu_stte go if exists (select 1 from sysobjects where id = object_id('exam') and type = 'U')