数据库系统概论 课程设计报告
题目名称 班 级 学 号 学生姓名 指导老师 编写时间
公交信息管理 软件二班 2406090210
李芳
2011年12月01日
目录
前言................................................................ 3 第一章 需求分析..................................................... 3
1.1系统数据需求................................................. 3 1.2系统功能需求................................................. 4 1.3系统安全性与完整性需求....................................... 5
1.3.1数据安全性 ............................................. 5 1.3.2数据完整性 ............................................. 6 1.4数据流图设计................................................. 7 1.5(初步)数据字典 ............................................... 7 第二章概念结构设计.................................................. 9
2.1概念结构的抽象............................................... 9
2.1.1 属性的抽象............................................. 9 2.1.2实体的抽象 ............................................. 9 2.1.3联系的抽象 ............................................ 10 2.2 实体与联系(E-R图的设计)................................. 10
2.2.1 局部E-R图的设计...................................... 10 2.2.2 全局E-R图的设计..................................... 12 2.3 概念结构的优化 ............................................. 12
2.3.1 概念结构优化的目标.................................... 12 2.3.2 概念结构优化的内容.................................... 13 2.3.3概念结构优化的结果 .................................... 13
第三章逻辑结构设计................................................. 13
3.1 E-R图向关系模型转换........................................ 13
3.1.1 实体转换.............................................. 13 3.1.2 联系转换.............................................. 13 3.2数据模型的优化(规范化).................................... 13 3.3 数据库完整性设计 .......................................... 13
3.3.1 实体完整性............................................ 14 3.3.2 参照完整性............................................ 14 3.3.3 用户定义完整性........................................ 14 3.4 SQL SEVER 下的验证 ........................................ 14
3.4.1 建表.................................. 错误!未定义书签。 3.4.2最终发布给学生、教师的考试信息表 ...... 错误!未定义书签。 3.5 体会与心得 ................................. 错误!未定义书签。
2
前言
由于现行公交信息越来越复杂,公交线路越来越多,站点越来越复杂,不管是公交公司管理者,还是乘客都可能对当前这类软件提出要求。一方面,因为公交信息一些新的内容的出现,对软件提出了新的要求,另一方面,以前的软件可能存在着一些问题和缺陷,无法满足现在管理职工的需求。所以,我们提出这一任务,第一可以运用我们所学知识做出实用的的一些软件工具,第二可以锻炼我们对软件设计的整体把握能力和团队协作能力。 我们做此设计的目标有以下几点: 1.完善现有的类似管理系统的一些缺陷。 2.提供更加简易的操作界面,适当增加功能。 3.规范公交管理,提高服务质量。 团队成员:刘朝胜、李响、蒋海峰
第一章 需求分析
1.1系统数据需求
(1) 公交路线信息 —由公交公司统一管理,对公交路线的
添加,修改,删除,根据该地地理环境的变化,对公交路线进行修改及添加新的公交路线。
3
(2) 公交站点信息—由公交公司进行维护,随着城市的建设
发展,对站点信息做出适当的添加、修改、删除。
(3) 公交车辆信息—由公交公司管理,车辆信息应该包括车
辆使用年限,车牌号,对应的公交路线编号,车辆型号(大,中,小),开始运营时间,维修信息。
(4) 公交司机以及乘务员信息—由公交公司管理,公交司机
信息包括:姓名、性别、年龄,乘务员信息包括:姓名、性别、年龄,并且一对司机和乘务员只能服务于一辆公交车。
1.2系统功能需求
系统数据维护功能:
(1)公交路线信息维护
使用者首先通过密码验证,然后进入路线信息管理界面,通过查看和
编辑进行相应的修改。当然对路线的修改,应该包括路线的增加,路线站点的变更,路线的删除等操作。
(详细来讲:公交路线记录的插入、修改一条公交路线所经过的站点
或者服务时间、公交路线的删除。对于公交路线的插入,要进行相应的站点查询,如果没有相应的站点,那么就要添加站点到数据库,然后再进行路线信息的插入。对于修改一条公交路线所经过的站点,依然需要注意其修改的以后的站点在站点信息表中是否含有,如果没有,那么也要进行相应的站点添加。)
所以,将该快功能细划分为以下几个部分:
A. 插入路线 B. 删除路线 C. 修改路线
(2)公交车辆信息维护
当通过密码验证以后,然后进入车辆信息管理界面,通过查看和编辑
进行相应的修改。
(详细来讲:包括添加新车辆、删除现有车辆、修改现有车辆、维修
车辆查看。添加新车辆,需要将该车辆信息加入到车辆信息表和空闲
4
车辆表中,删除现有车辆的时候一定要将跟该车辆所有的有联系的地方都删除掉,比如:空闲信息表中的相关记录,排版信息表中的相关记录,以及维修车辆表中的相关记录)
所以,将该快功能细划分为以下几个部分: A.添加新的车辆 B.删除现有车辆 C.修改现有车辆
(3)排班信息维护
当通过密码验证进入系统以后,可以使用这一功能来查看和修改排班
信息。也就是司机、乘务员、车辆、是否是首班车之间的联系。
功能划分如下:
A. 添加排班 B.删除排班 C. 修改排班
(4)职工(公交司机、乘务职工)信息维护
进入系统,然后进入这一功能选项。通过查看和编辑进行相
应的修改。
A. 添加人员 B. 删除人员 C. 修改信息
(5)站点信息维护
当通过密码验证之后,管理员就可以对站点信息进行修改了。可以
查看已有的站点,在已有的基础上进行编辑和修改。
A. 添加新站点 B. 删除站点 C. 修改站点
对整个系统的要求:准确、高效、实时。
1.3系统安全性与完整性需求 1.3.1数据安全性
数据的安全性是指保护数据库以防止不合法的使用造成的数据泄露、更改
和破坏。
在本设计中,因该管理端并没有涉及到最终用户直接共享,只是简单的数据管理和维护,其中可能有多个人有管理权限,所以在设计时进行了密码验证,该密码存放在数据库中。
5
1.3.2数据完整性
(1)避免插入异常。
A.将维修车辆插入到车辆信息表时候,应该立即将该条记录
从数据库当中删除,应该所有车辆信息由这两个表构成。 此时,应该在排班信息表中增加相应的和该车有关的记录,或者将其
添加到空闲车辆表中。
B.同样,在将车辆信息表插入到维修车辆表中的时候,也要 将对应的记录从车辆表中删除。应该在排班信息表中将与该车辆的相
关记录删除。
C.在插入排班信息的时候,需要从空闲车辆表、空闲人员表、路线信息
表进行汇总处理。也就是说,在插入排班信息时候必须避免将车辆信息和人员重复排班。
D.在插入新的车辆时,必须将其同时插入到车俩信息表和空闲车辆表
中。
E.在插入新的人员时候,必须将其同时插入到人员信息表和空闲人员表
中。
F.插入公交车路线信息时,应该检查站点信息表查看站点信息是否有重
复,或者将新出现的站点加入到站点信息表中。并将新加入的路线代号加入到相应的站点信息表中。
G.插入站点的时候,应该避免站名的重复。
(2)避免删除异常。
A.删除车辆信息的时候,应该同时将空闲车辆表中的记录、该车有关
的排班记录都删除掉。
B.删除站点信息的时候,应该检查与其关联的路线是否还存在,然后再进行删除操作。
C.删除维修车辆时,应该删除该车在车辆信息表中的相关记录。
(3)避免修改异常
A.修改车辆所属的路线的时候,首先检查是否有该车的排班信息,如
果有,必须删除该信息,并将该车放入空闲车辆表中,而且将与该车相关联的人员放入空闲人员表中。
B.当改变人员所属的路线的时候,首先检查是否有与该人员联系起来 的排班信息,如果有,则将该记录删除,并将该人员加入到空闲人
员表中,另外还要将联系的车辆加入到空闲车辆表中。
C.当改变路线中的站点信息时候需要,需要修改站点表中的记录。
6
1.4数据流图设计
人员信息车辆信息管理员站点信息维修车辆表路线信息维修车辆信息车辆信息检查处理站点信息检查处理站点信息站点信息表检查处理空闲人员信息检查处理车辆信息表车辆信息路线信息人员信息空闲人员表空闲车辆表路线信息表人员信息表路线信息管理员排班信息空闲车辆信息汇总处理空闲人员信息路线信息排班信息表普通用户查询信息处理路线信息地图显示
1.5(初步)数据字典
1. 数据项 (1) 站点信息 属性名 站点代号 站点名称 站点经度 站点纬度
存储代码 PNo PName PLongi PLati 类型 char char float float 7
长度 3 20 1 1 备注 Primary Key 站名不能重复 一般站点都在十个字以内 地理位置的经度 地理位置的纬度 (2) 路线信息
属性名 路线代号 服务时间 站点序列 (3) 车辆信息 属性名 车牌号 所属路线代号 车辆型号 使用年限 购买时间 (4) 排班信息表 属性名 排班路线 车牌号 司机编号 乘务员编号 (5)人员信息 属性名 职工代号 职工名字 职工性别 职工年龄 职工类别 服务路线代号 联系方式 (6)空闲车辆表 属性名 车辆号 所属路线代号 属性名 车牌号 所属路线代号 车辆型号 使用年限 购买时间 (8)空闲人员表
属性名 职工代号 所属路线代号
存储代码 RNo RTime PsStr 存储代码 CNo RNo CType LTime BTime 存储代码 RNo CNo DNo DNumber 存储代码 DNo DName DSex DAge DType RNo TelNo 存储代码 CNo RNo 存储代码 CNo RNo CType LTime BTime 存储代码 DNo RNo 类型 char char char 类型 char char char int datetime 类型 char char char char 类型 char char char int char char char 长度 3 12 80 长度 10 3 1 1 1 长度 3 10 3 3 长度 3 10 2 1 1 3 12 备注 Primary Key \"19:00-23:00\" 表示站点代号序列 备注 YY-MM-DD 备注 备注 应大于25 \"1\"表示司机,\"0\"表示乘务员 类型 char char 类型 char char char int datetime 类型 char char 8
长度 10 3 长度 10 3 1 1 1 长度 3 3 备注 备注 YY-MM-DD 备注 (7)维修车辆表 (与车辆信息表相同) (9)增加路线表1
属性名 路线代号 站点代码序列 (10)增加路线表2 属性名 路线代号 站点代码序列 (11)增加路线表3
属性名 路线代号 站点代码序列 存储代码 RNo PsStr 类型 char char 长度 3 40 备注 Primary Key 存储代码 RNo PsStr 类型 char char 长度 3 40 备注 Primary Key 存储代码 RNo PsStr 类型 char char 长度 3 40 备注 Primary Key 第二章 概念结构设计
概念结构设计根据需求分析确定的用户需求,利用需求分析的数据流图和数据字典,对用户需求进行综合、归纳和抽象,使用概念结构设计工具,设计出适合系统的概念模型(E—R模型),从而形成DBMS的整体概念结构的过程。
2.1概念结构的抽象 2.1.1 属性的抽象
1.站点属性的抽象:
站点代号、站点名称、站点地理位置。 2.路线属性的抽象:
路线代号、全部站点编码、服务时间。 3.车辆信息
车牌号码、购买时间、使用年限、车辆型号。 4.职工信息
姓名、性别、类别、联系方式。
2.1.2实体的抽象
1.站点实体集的型的抽象如下:
站点(站点代号、站点名字、站点经度、站点纬度) 2.路线实体集的型的抽象如下:
路线(路线代号、全部站点编码、服务时间)
9
3.车辆实体集的型的抽象如下:
车辆(车牌号码、所属路线、购买时间、使用年限、车辆型号、维修状态) 4.职工实体集的型的抽象如下:
职工(职工代号、姓名、性别、类别、年龄、服务路线、联系方式)
2.1.3联系的抽象
1.车辆和路线的关系是多对一的关系
一辆车只为一条路线服务,一条路线可以含有多辆车 (关系在车辆信息表中表示)
2.车辆和职工的关系是一对一或者一对二的关系
一个人只能在一辆车上服务,一辆车上可以只有一个司机或者一个司机和一个乘 务员
(关系在排班表里表示)
3.职工和公交路线的关系是多对一的关系
一条路线上有很多司机和乘务员服务 (关系在职工信息表中表示) 4.路线和站点的关系是一对多的关系 一条路线上包括很多站点 (关系在路线表里表示)
2.2 实体与联系(E-R图的设计) 2.2.1 局部E-R图的设计
所涉及的的各实体:公交站点,公交路线,公交车辆,公交职工(司
机和乘务员)
如图(1):
路线20站点代号路线1站点名称公交站点地理经度地理纬度 10
车牌号码购买时间使用年限车辆型号公交车辆所属路线
路路路路1路路路路路路路路人员代号姓名路路路路10路路路路性别公交人员类别年龄联系方式
ER图(1)
所涉及的各实体间的联系的局部ER图如下图(2):
购买时间所属路线性别Tel年龄车牌号使用年限姓名类别车辆类型车辆维修状态代号职工服务路线信息录入信息录入管理员管理员
11
位置代号经过路线1服务时间经过站点1代号站名站点经过路线10路线经过站点20站点修改路线修改管理员管理员 位置代号经过路线1站名站点经过路线10购买时间所属路线检查处理服务时间代号车牌号使用年限车辆类型车辆路线经过站点1管理员检查处理经过站点20维修车辆
2.2.2 全局E-R图的设计 2.3 概念结构的优化
概念结构优化是指根据数据库应用系统的需求,在系统全局E-R图的基础上,利用需求分析的数据流图和数据字典,通过检测系统E-R图的属性冗余、实体冗余和联系冗余等冗余数据,从而消除相应的冗余数据 ,并最终形成于具体DBMS的整体概念结构的过程。
2.3.1 概念结构优化的目标
概念结构优化的目标是在全面准确地反映用户需求的基础上,使得系统尽量满足:
(1)属性尽量少,即组成每一个实体的属性的个数尽可能的少,去掉一切不必要属性;
12
(2)实体尽可能的少; (3)联系尽可能少。
2.3.2 概念结构优化的内容
主要的任务包括以下三步: (1)消除冗余属性。 (2)消除冗余实体。 (3)消除冗余联系。
2.3.3概念结构优化的结果
总E-R图:
第三章逻辑结构设计
3.1 E-R图向关系模型转换 3.1.1 实体转换
把E-R图中的实体转换为关系模式的过程。
3.1.2 联系转换
3.2数据模型的优化(规范化)
3.3 数据库完整性设计
数据库的完整性是指数据的正确性和相容性。
13
3.3.1 实体完整性 3.3.2 参照完整性
参照完整性是为了保证属性的一致性。
3.3.3 用户定义完整性
3.4 SQL SEVER 下的验证
第四章 应用程序设计
4.1 概要设计 4.1.1 功能的设计 1.公交路线信息维护
该功能由“公交路线”菜单项触发,具体的实现在CRoadCtrl
类中。用户登陆系统后,点击“公交路线”菜单项的子菜单项来完成相应的功能,其中,“现有路线”菜单项将完成修改和删除的功能。
2.公交车辆信息维护
该功能由“公交车辆”菜单项触发,具体的实现在CbusCtrl 类中。“现有车辆”子菜单项将完成修改和删除的功能。 3.排班信息维护
该功能由“排班”菜单项触发,具体的实现在CworkCtrl类
中,“排班查询”菜单项包括了修改和删除操作。
14
4.职工信息维护
该功能由“职工”菜单项触发,同理,“人员信息”菜单项
需要完成人员信息的“修改”和“删除”操作。具体实现放在了CpersonCtrl类中。
5.站点信息维护
跟上面的信息维护方法是一样的。由自定义CpositionCtrl 类来进行数据库操作。
4.1.2 对应类 CRoadCtrl类:
完成对数据库的连接和操作,处理大部分关于路线信息的
数据操作。
CBusCtrl
完成对数据库的连接和操作,处理大部分关于车辆信息
的数据操作。
CWorkCtrl
完成对数据库的连接和操作,处理大部分关于排班信息
的数据操作。
CPersonCtrl
完成对数据库的连接和操作,处理大部分关于职工信息
的数据操作。
CPositionCtrl
15
完成对数据库的连接和操作,处理大部分关于站点信息
的数据操作。
4.2 详细设计 4.2.1 4.2.2 4.2.3 4.3 编码 4.4 测试
16