飞机预票系统.docx
《飞机预票系统.docx》由会员分享,可在线阅读,更多相关《飞机预票系统.docx(43页珍藏版)》请在冰豆网上搜索。
飞机预票系统
《数据库原理》课程设计报告
题目:
机票预定系统
姓名:
学号:
专业班级:
物流13甲
指导老师:
杨秋澍
2015年1月12日
浙江工商大学杭州商学院
摘要
本系统是根据C语言和数据库技术开发出来的一种用于机票预订系统的软件,适合用于解决机场中的售票问题。
该系统有信息查询系统、订票系统和退订系统,是用于查看航班的信息、用于查看旅客的基本信息、用于查看旅客的取票通知、用于查看和打印旅客结账通知单、用于查看航班的预订情况、用于查看航班的满座率、用于查看旅客退订信息、用于查看航班座位情况等功能。
机票预订:
首先通过查询得到旅客所需的航班,确定该该航班还没有被预定的座位,然后选择座位的等级,填写旅客的详细信息之后就可以在网上预定机票;取票通知:
在机票预定成功之后,系统会自动给浏览器端发送一条取票信息以及所需缴纳的费用,利用特定设备将该取票信息打印出来;退订机票:
利用身份证号和对应的机票号就可以查询到机票信息,然后就可以退订机票。
关键词:
机票预定;查询情况;交款取票;退订机票
目录
第1章引言3
1.1项目背景3
1.2项目定义3
1.3开发环境3
第2章需求分析4
2.1需求分析的目标与任务4
2.1.1信息需求4
2.1.2处理需求4
2.1.3安全性和完整性要求4
2.2需求分析阶段成果4
2.2.1XX系统的业务流程图4
2.2.2XX系统的功能模块图:
4
2.2.3XX系统的数据字典5
第3章概念设计7
3.1概念设计的目标与任务7
3.2阶段结果7
3.2.1属性与实体7
3.2.2各子系统与分E-R图7
3.2.3合并各分E-R图,得到总E-R图7
第4章逻辑设计8
4.1逻辑设计的任务和目标8
4.2阶段结果8
4.2.1将E-R图转换为关系模型8
4.2.2模型优化9
4.2.3数据库模式定义9
4.2.4用户子模式定义9
第5章物理设计10
5.1物理设计阶段的目标与任务10
5.2阶段结果:
10
5.2.1存取方法设计10
5.2.2存储结构的设计10
5.2.3评价物理结构10
第6章数据库实施阶段11
6.1建立数据库、数据表、视图、索引11
6.1.1建立数据库11
6.1.2建立数据表11
6.1.3建立视图11
6.1.4建立索引11
6.2数据入库11
第7章系统调试和测试12
第8章设计心得13
第9章存在的问题及建议14
第10章参考文献15
第11章附录16
引言
项目背景
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预订查询系统在各机票预定网点中的作用也越显重要。
目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作。
因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统势在必行。
机票预定系统是为机场工作人员和客户提供机票退订与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点。
它除克服了存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,实现航空公司的机票销售的自动化。
它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。
项目定义
项目针对航空公司以及乘客。
(1)航班信息管理功能:
主要实现航班的基本信息,航班编号,票价,起飞点,目的地,起飞时间的添加,修改,删除,查询。
(2)机票信息管理功能:
主要实现航班座位也就是机票的一些基本信息,航班编号,座位号,机票类型的添加,删除,查询和修改功能。
(3)客户信息管理功能:
主要实现旅客的基本信息,包括姓名,性别,联系方式,证件号码的查询。
(4)取票信息管理功能:
用于取票信息的管理,包括对航班基本信息,航班编号和旅客的基本信息,旅客姓名,座位号,取票时间的查询。
(5)退票信息管理功能:
用于对退票信息的管理,包括对订单号,旅客姓名,联系方式,证件号码的查询。
开发环境
SQLServer2008
第2章需求分析
2.1需求分析的目标与任务
2.1.1信息需求
航班信息:
航班号,起飞时间,到达时间,起飞地,目的地,总座位数,剩余座位数
航班座位信息:
座位号,航班号,座位类型,预定状态,票价
旅客信息:
旅客编号,姓名,性别,联系电话,身份证号,联系地址,目的地,出行日期
取票信息:
取票编号,结账状态,取票时间,机票价格,座位编号,航班号,旅客编号
2.1.2处理需求
(1)航班信息管理功能
主要实现航班的一些基本信息,如对航班号,起飞时间,到达时间,起飞地,目的地,等进行添加、修改、删除和查询。
(2)机票信息管理功能
主要实现机票的一些基本信息,如对航班号,总座位数,剩余座位数进行添加、修改、删除和查询。
(3)旅客信息管理功能
此模块的主要实现旅客一些基本信息,如旅客姓名,证件号码,联系方式的输入及查询功能
(4)取票信息功能
此模块用于取票信息的管理,包括对航班基本信息,航班编号等,旅客基本信息,旅客姓名、座位号、取票时间的查询。
(5)退票信息管理功能
此模块用于退票信息的管理
2.1.3安全性和完整性要求
(1)安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可以访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
(2)完整性要求
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新相关字段和级联删除相关字段。
2.2需求分析阶段成果
2.2.1机票预订系统的业务流程图
图2.1
2.2.2机票预定系统的功能模块图:
图2.2系统功能模块图
2.2.3机票预定系统的数据字典
(a)数据项:
系统涉及的数据项有31项
表1.1数据项列表
数据项编号
数据项名
数据项含义
与其它数据项的关系
存储结构
别名
DI-1
plane_no
飞机航班号
varchar(20)
航班号
DI-2
plane_begin
航班起飞地
varchar(100)
起飞地
DI-3
plane_end
航班目的地
varchar(100)
目的地
DI-4
begin_date
航班起飞时间
datetime
起飞时间
DI-5
end_date
航班到达时间
datetime
到达时间
DI-6
all_seats
航班总座位数
int
总座位数
DI-7
surplus_seats
航班剩余座位数
int
剩余座位数
DI-8
people_no
旅客编号
int
旅客编号
DI-9
name
旅客姓名
varchar(50)
姓名
DI-10
sex
旅客性别
varchar(4)
性别
DI-11
tel
旅客联系电话
varchar(50)
联系电话
DI-12
card_id
旅客身份证号
varchar(50)
身份证号
DI-13
address
旅客联系地址
varchar(100)
联系地址
DI-14
destination
旅客目的地
varchar(100)
目的地
DI-15
travel_date
旅客出行日期
datetime
出行日期
DI-16
ticket_no
取票编号
int
取票编号
DI-17
plane_no
机票航班号
同飞机航班号plane_no
Varchar(20)
航班号
DI-18
people_no
机票旅客编号
同旅客编号people_no
int
旅客编号
DI-19
seat_no
机票座位编号
同座位编号seat_no
varchar(20)
座位编号
DI-20
ticket_price
机票价格
decimal(18,2)
机票价格
DI-21
get_date
机票取票时间
datetime
取票时间
DI-22
checkout_flag
机票是否结账
Varchar(20)
结账状态
DI-23
seat_no
座位编号
varchar(20)
座位编号
DI-24
plane_no
座位航班编号
同飞机航班号plane_no
varchar(20)
航班编号
DI-25
seat_kind
座位类型
varchar(20)
座位类型
DI-26
DI-price
座位票价
decimal(18,2)
票价
DI-27
yd_flag
座位是否预订
varchar(20)
预订状态
DI-28
back_no
退票订单号
varchar
订单号
DI-29
people_no
退票旅客编号
同旅客编号people_no
int
旅客编号
DI-30
plane_no
退票航班号
同飞机航班号plane_no
varchar(20)
航班号
DI-31
back_reason
退票理由
varchar(255)
退票理由
(b)数据结构:
表1.2数据结构列表
数据结
构编号
数据结构名
数据结构
含义
组成
DS-1
plane
航班信息
plane_no,plane_begin,plane_end,begin_date,
end_date,all_seats,surplus_seats
DS-2
people
旅客信息
people_no,name,sex,tel,card_id,address,
destination,travel_date
DS-3
seat
座位信息
seat_no,plane_no,seat_kind,price,yd_flag
DS-4
ticket
取票信息
ticket_no,plane_no,people_no,seat_no,ticket_price,get_date,checkout_flag
DS-5
back
退票信息
back_no,people_no,plane_no,back_reason
(c)数据流:
数据流是数据结构在系统内传输的路径。
图2.3-1顶层数据流
图2.3-2第1层数据流图:
(旅客订票)
图2.3-3第2层数据流图:
(旅客查询)
图2.3-4第2层数据流图(旅客退票)
图2.3-5第2层数据流图:
(航班新增、修改)
图2.3-6第三层数据流(旅客订票,旅客退票,旅客查询,工作人员航班管理)
(d)数据存储:
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。
它可以是手工文档或手工凭单,也可以是计算机文档。
(e)处理过程:
处理过程的具体处理逻辑一般用判定表或判定树来描述。
数据字典中只需要描述该处理过程的说明性信息。
第3章概念设计
3.1概念设计的目标与任务
(1)选择中层数据流为切入点,通常选择实际系统中的子系统;
(2)设计分E-R图,即各子模块的E-R图;
(3)生成初步E-R图,通过合并方法,做到各子系统实体、属性、联系统一;
(4)生成全局E-R图,通过消除冲突等方面:
在本机票预定系统管理系统中,分析各数据字典,知道整个系统功能围绕“旅客”、“管理员”的处理。
根据实体与属性间的两条准则:
作为“属性”,不能再具有需要描述的性质;“属性”不能与其他实体具有联系。
3.2阶段结果
3.2.1属性与实体
实体:
航班信息、航班座位信息、旅客信息、取票信息、退票信息
其分别的属性为:
航班信息:
航班号,起飞时间,到达时间,起飞地,目的地,总座位数,剩余座位数;航班座位信息:
座位号,航班号,座位类型,预定状态,票价;旅客信息:
旅客编号,姓名,性别,联系电话,身份证号,联系地址,目的地,出行日期
取票信息:
取票编号,结账状态,取票时间,机票价格,座位编号,航班号,旅客编号
退票信息:
3.2.2各子系统与分E-R图
航班信息
座位信息
旅客信息
取票信息
退票信息
3.2.3合并各分E-R图,得到总E-R图
第4章逻辑设计
4.1逻辑设计的任务和目标
以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。
具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。
4.2阶段结果
4.2.1将E-R图转换为关系模型
航班信息(航班号,起飞时间,到达时间,起飞地,目的地,总座位数,剩余座位数)
座位信息(座位号,航班号,座位类型,预定状态,票价)
拥有(座位号,航班号)
旅客信息(旅客编号,姓名,性别,联系电话,身份证号,联系地址,目的地,出行日期)
查询(航班号,旅客信息)
退票系统(订单号、旅客编号,退票理由,航班号)
改变状态(座位号,订单号)
退订(订单号,旅客编号)
改变状态(航班号,取票编号)
取票信息(取票编号,结账状态,取票时间,机票价格,座位编号,航班号,旅客编号)
订票(旅客编号,取票编号)
4.2.2模型优化
关系模式航班信息,旅客信息,航班座位信息,取票通知都不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,要求达到了3NF。
4.2.3数据库模式定义
表4.1航班信息表
列名
数据类型
可否为空
说明
plane_no
varchar
notnull
航班号
plane_begin
varchar
notnull
起飞地
plane_end
varchar
notnull
目的地
begin_date
datetime
notnull
起飞时间
end_date
datetime
notnull
到达时间
all_seats
int
notnull
总座位数
surplus_seats
int
notnull
剩余座位数
表4.2旅客信息表
列名
数据类型
可否为空
说明
people_no
int
notnull
旅客编号
name
varchar
notnull
姓名
sex
varchar
notnull
性别
tel
varchar
notnull
联系电话
card_id
varchar
notnull
身份证号
address
varchar
联系地址
destination
varchar
notnull
目的地
travel_date
datetime
notnull
出行日期
表4.3取票信息表
列名
数据类型
可否为空
说明
ticket_no
int
notnull
取票编号
plane_no
varchar
notnull
航班号
people_no
int
notnull
旅客编号
seat_no
varchar
notnull
座位编号
ticket_price
decimal
机票价格
get_date
datetime
notnull
取票时间
checkout_flag
varchar
notnull
是否结账
表4.4座位信息表
列名
数据类型
可否为空
说明
seat_no
varchar
notnull
座位编号(主键)
plane_no
varchar
notnull
航班编号
seat_kind
varchar
notnull
座位类型
price
decimal
notnull
票价
yd_flag
varchar
notnull
座位编号(主键)
表4.5退票信息表
列名
数据类型
可否为空
说明
back_no
varchar
notnull
订单号
people_no
int
旅客编号
plane_no
varchar
notnull
航班号
back_reason
varchar
notnull
退票理由
4.2.4用户子模式定义
第5章物理设计
5.1物理设计阶段的目标与任务
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
5.2阶段结果:
5.2.1存取方法设计
为数据库中各基本表建立的定义和索引。
5.2.2存储结构的设计
存储过程定义
1.sp_plane_insert的定义:
插入航班信息
CREATEPROCEDUREsp_plane_insert
@plane_novarchar(20),
@plane_beginvarchar(100),
@plane_endvarchar(100),
@begin_datedatetime,
@end_datedatetime,
@all_seatsint,
@surplus_seatsint
as
insertintoplane(plane_no,plane_begin,plane_end,begin_date,end_date,
all_seats,surplus_seats)
values(@plane_no,@plane_begin,@plane_end,@begin_date,@end_date,
@all_seats,@surplus_seats)
2.sp_people_insert的定义:
插入旅客信息
CREATEPROCEDUREsp_people_insert
@namevarchar(50),
@sexvarchar(4),
@telvarchar(50),
@card_idvarchar(50),
@addressvarchar(100),
@destinationvarchar(100),
@travel_datedatetime
as
insertintopeople(sex,name,tel,card_id,address,
destination,travel_date)
values(@sex,@name,@tel,@card_id,@address,
@destination,@travel_date)
3.sp_back_insert的定义:
插入退票信息
CREATEPROCEDUREsp_back_insert
@back_novarchar(20),
@people_noint,
@plane_novarchar(20),
@back_reasonvarchar(255)
as
insertintoback(back_no,people_no,plane_no,back_reason)
values(@back_no,@people_no,@plane_no,@back_reason)
1.sp_seat_insert的定义:
座位信息插入
CREATEPROCEDUREsp_seat_insert
@seat_novarchar(20),
@plane_novarchar(20),
@seat_kindvarchar(20),
@pricedecimal(18,2),
@yd_flagvarchar(4)
as
insertintoseat(seat_no,plane_no,seat_kind,price,yd_flag)
values(@seat_no,@plane_no,@seat_kind,@price,@yd_flag)
5.sp_people_delete的定义:
删除旅客信息
CREATEPROCEDUREsp_people_delete
@people_noint
as
deletefrompeoplewherepeople_no=@people_no
2.sp_plane_query的定义:
航班信息查询
CREATEPROCEDUREsp_plane_query
as
select*fromplanetview
3.sp_plane_ydquery的定义:
航班预订率查询
CREATEPROCEDUREsp_plane_ydquery
as
select*fromplane_ydview
7.sp_people_query的定义:
旅客查询
CREATEPROCEDUREsp_people_query
as
select*frompeopleview
8.sp_people_ticketquery的定义:
查询旅客取票通知
CREATEPROCEDUREsp_people_ticketquery
@people_novarchar(20)
as
select*frompeople_ticketviewwhere旅客编号=@people_no
9.sp_people_checkoutquery的定义:
查询旅客结账单
CREATEPROCEDUREsp_people_checkoutquery
@people_novarchar(20)
as
select*frompeople_checkoutviewwhere旅客编号=@people_no
11.sp_people_backquery的定义:
查询旅客退订单
CREATEPROCEDUREsp_people_backquery
@people_novarchar(20)
as
select*frompeople