1、软 件 学 院课程设计报告书课程名称 数据库原理及应用 设计题目 机票预订信息系统 专业班级 软件工程 10 - 01 学 号 1020010110 姓 名 李 指导教师 李 2012 年 6 月目录1 设计时间 12 设计目的 13 设计任务 14 设计内容 14.1需求分析 .14.2系统设计 .24.2.1 概念结构设计 24.2.2 逻辑结构设计 44.2.3 物理结构设计 54.3系统实施 .74.3.1 数据库实现 74.3.2 数据载入 94.4运行与测试 .104.4.1 运行与测试 .104.4.2 分析 .125 总结与展望 13参考文献 1411 设计时间2012年 6月
2、 4日2012 年 6月 7日2 设计目的数据库原理及应用课程设计是软件工程专业集中实践性环节之一,是学习完数据库原理及应用课程后进行的一次全面的综合练习。应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以
3、及系统评价的一般过程,为毕业设计打下基础。3 设计任务本课程设计任务是通过开发一个数据库机票预订信息系统,学习数据库系统的设计与开发, SQL 相关的软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。4 设计内容 4.1 需求分析 随着社会发展的不断地进步,人民消费水平的不断地提高,致使民航事业不断壮大,乘坐民航的消费者越来越多,因此机票的预定也越显重要,航空公司为方便客户出行,需开发一个机票预定系统。根据预定机票的客户信息
4、,包括姓名、性别、身份证号码、出行时间、出行目的地等,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班。(1) 某航空公司机票预订管理系统需要如下信息:航班信息:航班编号、飞机型号、起飞地、目的地、起飞时间、飞行时间等。飞机信息:飞机编号、座位数。2业务员信息:工号、业务员姓名。机票信息:航班编号、旅客编号、座位号、票价、当前预售状态等。旅客信息:姓名、性别、联系电话、身份证号等。(2) 系统功能的基本要求:按照一定条件查询、统计符合条件的航班、机票等;并能查询、统计机票预订情况。4.2 系统设计4.2.1 概念结构设计分 E-R图设计:根据需求分析抽象出信息结构,可得该系统的 E-R
5、图。(1) 航班 E-R图,如图 4-1所示。航班出发地航班编号起飞时间到达时间目的地图 4-1 航班 E-R图(2) 飞机 E-R图,如图 4-2所示。飞机飞机型号 座位数图 4-2 飞机 E-R图3(3) 机票 E-R图,如图 4-3所示。机票机舱等级票价当前预售状态座位号图 4-3 机票 E-R图(4) 客户 E-R图,如图 4-4所示。旅客姓名性别身份证号号码码旅客编号图 4-4 客户 E-R图(5) 业务员 E-R图,如图 4-5所示。业务员工号 姓名图 4-5 业务员 E-R图联系电话码码4根据分 E-R图和需求分析,可得到总 E-R图,如图 4-6所示。n航班旅客包含 机票购买n
6、姓名性别身份证号码联系电话起飞时间航班编号目的地出发地座位号当前预售状态售出票价姓名工号1 mmn有飞机11飞机编号折扣到达时间付款状态数量座位号包含1n机舱等级+号实付款业务员旅客编号图 4-6 系统总体结构 E-R图4.2.2 逻辑结构设计将图 4-6总体概念结构 E-R图转化成关系模型。 (主键用下划线标出)飞机(飞机编号,机舱等级,座位数)航班(航班编号,飞机编号,出发地,目的地,起飞时间,到达时间)5业务员(工号,业务员姓名)机票(航班编号,旅客编号,机舱等级,座位号,票价,当前预售状态)旅客(旅客编号,姓名,性别,身份证号,联系电话)购买(旅客编号,座位号,折扣,实付款,数量,工号
7、,付款状态)4.2.3 物理结构设计根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:表 4-1 飞机信息中文名称 类型 长度 是否非空 主关键字 备注飞机编号 char 10 Y座位数 int N 总座位表 4-2 航班信息中文名称 类型 长度 是否非空 主关键字 备注航班编号 char 10 Y飞机编号 char 10 N机舱等级 char 10 N起飞地 char 10 N目的地 char 10 N起飞时间 datetime 年月日/时分到达时间 datetime 年月日/时分表 4-3 业务员信息中文名称 类型 长度 是否非空 主关键字 备注工号 char 10 Y业务员姓
8、名 char 10 N6表 4-4 机票信息中文名称 类型 长度 是否非空 主关键字 备注航班编号 char 10 N机舱等级 char 10 N座位号 char 10 Y票价 float(2) N 元当前预售状态 char 10 N Y/N表 4-5 旅客信息中文名称 类型 长度 是否非空 主关键字 备注旅客编号 char 10 Y姓名 char 10 N性别 char 10 N身份证号 char 10 N联系方式 char 15 N表 4-6 购买信息中文名称 类型 长度 是否非空 主关键字 备注旅客编号 char 10 Y座位号 char 10 N折扣 float(1) 打几折实付款 f
9、loat(2) N N 元购买数量 int N N 购买的机票工号 char 10 N付款状态 char 10 N Y/N74.3 系统实施4.3.1 数据库实现 先建立机票预订数据库,然后根据数据库的基本表结构分别建立六个基本表,这里给出具体的 SQL语句如下。(1)Create Database 机票预订;(2)创建飞机表 Create table 飞机( 飞机编号 char(10) not null,座位数 int not null,primary key(飞机编号);(3)创建航班表Create table 航班( 航班编号 char(10) primary key,飞机编号 char
10、(10) not null,起飞地 char(10) not null,目的地 char(10) not null,起飞时间 datetime,到达时间 datetime,Foreign key(飞机编号) references 飞机(飞机编号); (4)创建业务员表Create table 业务员( 工号 char(10) primary key,业务员姓名 char(10) not null);(5)创建机票表Create table 机票8( 航班编号 char(10) not null,机舱等级 char(10) not null,座位号 char (10)primary keyCon
11、straint c2 check(座位号 between 001 and 500),票价 float(2) not null,当前预售状态 char(10) not null,Constraint c1 check(机舱等级 in (头等舱,公务舱,经济舱),Foreign key(航班编号) references 航班(航班编号),); (6)创建旅客表Create table 旅客( 旅客编号 char(10) primary key,姓名 char(10) not null,性别 char(10) not null,身份证号 char(20) not null,联系电话 char(15)
12、 not null );(7)创建购买表Create table 购买( 旅客编号 char(10) not null,座位号 char(10) not null,primary key(旅客编号, 座位号),折扣 float(1),实付款 float(2) not null,工号 char(10) not null,购买数量 int not null,付款状态 char(10) not null,Foreign key(旅客编号) references 旅客(旅客编号),Foreign key(座位号) references 机票(座位号),9Foreign key(工号) referenc
13、es 业务员(工号);4.3.2 数据载入(1)图 4-7 飞机表录入(2)图 4-8 航班表信息(3)图 4-9 业务员表信息(4)10图 4-10 机票表信息(5)图 4-11 旅客表信息(6)图 4-12 购买表信息4.4 运行与测试4.4.1 运行与测试(1)查询航班 1 的剩余机票总数select 航班编号, count(座位号)剩余机票总数 from 机票where 航班编号 =航班 1group by 航班编号,当前预售状态 having 当前预售状态=N;11图 4-13(2)查询航班 1,各机舱剩余机票数select 航班编号,机舱等级 , count(座位号)剩余机票数 f
14、rom 机票where 航班编号 =航班 1group by 航班编号,机舱等级,当前预售状态 having 当前预售状态=N; 图 4-14(3)查询航班 3 各机舱机票的预订情况select 航班编号,机舱等级 ,count(座位号)售出票数 from 机票where 航班编号 =航班 3group by 航班编号,机舱等级,当前预售状态having 当前预售状态=Y;12图 4-15(4)北京的李先生想去上海,他可乘坐的航班select *from 航班where 起飞地 =北京 and 目的地= 上海; 图 4-16(5)查询旅客 1 信息及付款情况select 姓名,性别,身份证号
15、,联系方式,座位号,折扣,实付款 ,付款状态from 旅客,购买where 购买. 旅客编号=旅客. 旅客编号 and 旅客 . 旅客编号= 旅客 1;图 4-1713(6)查询航班 3,座位号 3-01 的旅客信息select 姓名,性别,身份证号 ,联系方式from 旅客,机票 ,购买where 机票.座位号 =购买.座位号 and 机票.航班编号 =航班 3 and 机票.座位号 =3-01 and 旅客.旅客编号= 购买.旅客编号;图 4-184.4.2 分析设计数据库时,需要考虑相关功能的实现如,客户发票的打印和结算,员工工资的结算等等,因为只设计数据库,没有相关的前台程序,实现起来有点复杂,所以通过建立视图去实现相应的结算功能,这样也能保证相关数据的安全性。5 总结与展望经过一周的努力,本次课程设计终于完成了。通过这次课程设计,我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程,同时我明白了理论与实际应用相结合的重要性,掌握并熟练运用 SQL 语句,提 高了我的综合运用所学知识的能力。在本次课程设计和过程中,由于时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全面,程序中还存在很多缺,希望老师能给予批评和指导。经过这次课程设计,我的知识得到了很大,经验也更加丰富。希望能在今后的不断的学习中和努力中,把程序做得更好。最后,感谢指导老师给予的帮助。