合肥师范学院(本科)课程设计说明书课程数据库原理题目地铁管理系统姓名桑虎学号**********专业班级计算机软件一班指导教师程敏完成日期2013 年 6 月26 日《数据库原理》课程设计说明书填写说明:【课程设计说明书是学生对本次课程设计的全面总结,应能反映每个设计阶段的设计思路和设计内容,同时,也是本次课程设计成绩的书面依据和存档材料,提醒学生重视课程设计报告的形成,制成电子文档并提交。
】课程设计说明书的内容及要求如下:(1)设计任务、要求及所选用的软件环境或工具;(2)数据库设计;(3)系统设计;(4)系统操作说明;(5)程序清单、运行结果;(6)总结;(7)验收情况。
本课程设计要求学生掌握一个具体的数据库应用系统的开发过程、方法和技术,需完成的工作如下:(1)需求分析本阶段对应用系统进行全面细致的调研,了解用户的需求,制定系统的设计方案,在方案中应体现用户的:信息需求、处理需求及安全性和完整性需求。
(2)数据库概念设计本阶段在需求分析的基础上,设计出数据库的概念模型,要求用ER模型进行数据库的概念模式设计。
(3)数据库的逻辑设计本阶段将全局ER图转换成关系模式的集合并对其进行优化。
(4)系统设计本阶段,运用结构化的设计思想和方法,完成基本满足本课程设计功能要求的系统总体结构设计、较全面的功能模块设计和相关的接口设计。
(5)系统的实现与调试在本阶段中,应完成以下任务:建立数据库、应用系统的编码开发、系统的运行和调试。
(6)课程设计后的总结每个学生应该客观地评估自己完成的系统是否达到预定的目标,认真总结在本课程设计中的收获和不足之处。
说明书参考格式如下:(章节可以根据需要自行增加或调整)摘要前言第一章绪言1.1XXXXX1.2XXXX第二章需求分析2.1XXXXX2.2XXXXX第三章数据库概念设计3.1XXXXX3.2XXXXX第四章数据库的逻辑设计4.1XXXXX4.2XXXXX第五章系统设计5.1XXXXX5.2XXXXX第六章系统的实现与调试6.1XXXXX6.2XXXXX第七章小结7.1系统的功能7.2系统的特点7.3系统开发过程的特点7.4存在的问题与改进方向7.5自我体会第八章参考文献第九章附录附录1:部分程序源代码摘要随着城市经济的不断发展,交通压力也逐渐加大。
然而地上空间的有限促使很多城市向地下发展,地铁便是解决交通问题的最好办法。
一个城市的地铁给普通民众出行带来的便捷是毋庸置疑的。
然而任何便捷的背后都有一套完整体系的支持。
地铁能准确,安全,高效的运行其背后离不开地铁管理系统。
地铁管理系统其实就是一个记录了跟地铁运行有关的各类数据的数据库。
此次的数据库是基于microsoft sql sever 2000设计的。
该版本继承了sql sever 7.0版本的优点,同时又比它增加了许多更先进的功能。
具有使用方便可伸缩性好与相关软件集成度高等优点。
目录1.绪论 (1)1.1 系统功能 (1)1.2 系统用途 (1)1.3 系统特点 (1)2. 需求分析 (2)2.1 功能分析 (2)2.2 实验目的 (2)2.3 实验平台 (2)3. 数据库概念设计 (3)3.1 实体及属性 (3)3.2 E-R图 (6)4 数据库逻辑设计 (7)4.1 数据库结构 (7)4.2 关系模式 (10)5. 数据库物理设计 (11)5.1 数据库的建立 (11)6 数据库的实现 (15)6.1查询语句 (15)6.2 触发器 (16)6.3 存储过程 (16)6.4 游标 (17)6.5 函数 (18)7 总结 (20)7.1 存在问题与改进方向 (20)7.2 实验心得 (20)1 绪论1.1系统功能此系统为地铁管理系统,其主要功能是为了保障地铁能准确,安全,高效的运行。
另外还为乘客提供了各种信息的查询以及内部人员信息的管理。
例如某乘客在某一站点想要去另一地方,即可通过线路查询获取信息,因为线路中包含各个站点。
又例如,地铁内部要获取某位驾驶员所驾驶的列车以及列车所在线路,即可通过驾驶员基本信息表查询。
1.2系统用途此系统可为拥有地铁的城市提供运营技术支持。
1.3系统特点此系统所涉及的内容大多有列车本身有关,并且提供的服务有限,例如地铁运行中的能源管理,交通信号控制。
由于多学内容有限,故不能十分详尽的完成系统的设计2 需求分析1.1 功能分析此次课程设计的题目是:地铁管理系统。
此系统的主要功能是为了使地铁能准确,安全,高效的运行。
例如,乘客对列车信息的查询,列车的运行区间、时间及停靠站点,列车自身的信息等等。
地铁系统是一个非常严谨而又复杂的系统,和其他交通运输工具一样,安全性是其最基本的要求。
其实地铁系统还包括交通信号管理,能源管理等其他方面的内容。
鉴于目前所学还无法完成这些功能,所以只简单的完成与列车运行相关的部分。
1.2 实验目的此次实验的主要目的是为了对数据库的应用有更深入的了解以及掌握数据库设计的基本知识,为以后的实际设计累积一些经验。
同时认真做好此次课程设计也是毕业论文答辩的一次预演,提前熟知毕业答辩相关要求。
1.3 实验平台Sql sever 2000。
3 数据库概念设计2.1 实体及属性地铁运行以地铁列车为最主要的实体,其次与列车相关的实体有:驾驶员、地铁站、乘客、制造商、线路。
另外还有售票员、地铁运行公司。
每个实体的属性如下图:图2-1 列车属性表图2-2 线路属性图图2-3 驾驶员属性图图2-4 地铁公司属性图图2-5 车站属性图售票员属性图图2-6也许有人会有疑问,为什么没有乘客的属性,根据本人坐地铁的实际体验,乘客在买票进站,乘车,出站时都没有相关信息的记录。
所以乘客基本信息并不包括在内。
这一点有别于乘坐普通火车,动车及高铁。
2.2 E-R图总E-R如下图:图2-8 总E-R图4. 数据库逻辑设计4.1 数据库结构表4-1 line表(线路信息表)表4-2 train表(列车基本信息表)表4-3 metroman表(地铁司机信息表)表4-4 station表(车站信息表)表4-5 conductor表(售票员信息表)表4-6 company表(运营公司信息表)表4-7 manufacturer表(制造商表)4.2 关系模式列车(编号,车型,线路,颜色,运行时间,制造商);线路(编号,车型,颜色,里程,站数,车辆数,运营时间,使用时间,投资);驾驶员(编号,姓名,年龄,性别,所在线路,籍贯,驾龄,文化程度,月薪);公司(名称,拥有线路,拥有站数,运营里程,员工数,创立时间,主席);车站(编号,名称,停靠线路,换乘线路,运营时间,建成时间,面积);售票员(编号,名称,性别,所在站点,工作时间,工龄,所属公司);制造商(名称,城市,国家,产量,创立时间)5. 数据库物理设计5.1 数据库的建立在sql sever 2000中使用查询分析器建立各表并录入数据。
如下:(1)列车信息表(train)create table train(tno char(6) primary key ,type char(3),line char(2),runtime char(10),manfavturer char(10))(2)线路信息表(line)create table line(lno char(2) primary key,type char(2),color char(4),mileage cahr(6),stations char(4),trains char(4),runtime char(10),usetime char(10),invest char(10))(3)驾驶员信息表(metroman)create table metroman(mno char(5) primary key, name char(6),age char(2),sex char(2),inline char(2),home char(4),severtime char(2), knowledge char(8),salary char(6))(4)地铁公司信息表(company) create table company(name char(10) primary key, holdline char(6),holdstation char(3) runmileage char(3),staff char(3),createtime char(4), chairman char(6))(5)车站信息表(station)create table station (tno char(10) primary key, tname char(10),stopline char(6), exchangeline char(6), runtime char(10),usetime char(5),area char(8))(6)售票员信息表(conductor)create table conductor (cno char(5) primary key, name char(6),sex char(2),instation char(10), worktime char(20),severtime char(4), incompany char(10))(7)制造商信息表(manufacturer)create table manufacturer ( name char(10) primary key ,city char(10),country char(10),output char(5),stime char(10))6. 数据库的实现6.1查询语句(1)查询1号线的运行里程:select mileagefrom linewhere lno=1(2)查询00001号列车制造商所在城市:select cityfrom train,manufacturerwhere train.manufacturer= and train.tno=00001(3)查询驾龄大于2年且年龄大于30岁的驾驶员信息:select *from metromanwhere servetime>2 and age>30.6.2 触发器在train表中所插入的线路必须是已有线路create trigger T1 on trainfor insertasif( select line from inserted)>6beginprint' Line must be between 1 and 6!Transaction fail' Rollback transactionEnd6.3存储过程根据列车编号确定其制造商的年产量create procedure output(@tno char(8))asselect outputfrom train,manufacturerwhere train.manufacturer=and train.tno=@tnoexec output('00001')6.4 游标将地铁司机工资小于3500的自动加上500declare @mno char(5), @salary char(5)declare my_cursor cursor forselect mno,salary from metromanopen my_cursorfetch next from my_cursor into @mno,@salarywhile @@fetch_status=0beginif @salary<3500update metroman set salary=@salary+500 where mno=@mno fetch next from my_cursor into @mno,@salaryendclose my_cursordeallocate my_cursor6.5 函数(1)内联函数(求颜色为红色列车的基本信息)create function fun(@color char(4))returns tableasreturn (select * from train where color=@color) select * from fun('红')(2)标量函数(根据列车司编号求其工资)create function funname2(@mno int)returns intasbegindeclare @xs intset @xs=(select salary from metroman where @mno=mno) return @xsendprint dbo.funname2('0002')7. 实验总结7.1 存在问题与改进方向此次课程设计中遇到了诸多问题,比如说如何建立表之间的联系,如何最大程度上减少数据的冗余。