机票预订系统 课程设计 数据库.docx
- 文档编号:11549570
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:27
- 大小:216.24KB
机票预订系统 课程设计 数据库.docx
《机票预订系统 课程设计 数据库.docx》由会员分享,可在线阅读,更多相关《机票预订系统 课程设计 数据库.docx(27页珍藏版)》请在冰豆网上搜索。
机票预订系统课程设计数据库
1概述
应用对数据库技术及应用的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定实训任务的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为将来在学习工作中的应用打下基础。
1.1课程实训目的与要求
课程实训的目的是:
本次课程实训的主要任务是运用在《数据库原理及应用》课程中学到的理论知识来指导实践,了解数据库设计过程及其实现方法,学会用数据库建模的方法解决实际问题。
掌握数据库原理、范式理论、规范化等相关知识,掌握数据库分析设计的具体步骤与基本方法,掌握SQL语言的基本语法和基本内容,并能运用SQLServer2005实现设计数据库,掌握SQLServer2005数据库、表、视图、约束、索引、存储过程、触发器的使用,利用一种前台开发工具实现数据库管理系统的开发,实现特定的业务功能。
通过综合课程实训,提高实践动手技能,培养独立分析分析问题和解决问题的能力。
课程实训的要求:
本次课程实训的选题比较灵活,可以是自主选题,也可以自己选择比较感兴趣的题目,重点是完成数据库的分析、设计与实现,题目要符合《数据库原理及应用》的要求,并且具备一定的难度和深度;除此以外,可以从备选题目之外选择一个题目完成。
1.2机票预订系统
在所给的实训题目中,我选择的是机票预订系统的设计。
1.2.1系统功能的基本要求
每个航班信息的输入;
每个航班的坐位信息的输入;
当旅客进行机票预定时,输入旅客基本信息,系统为旅客安排航班,打印取票通知和帐单;
旅客在飞机起飞前一天凭取票通知交款取票;
旅客能够退订机票;
能够查询每个航班的预定情况、计算航班的满座率。
1.2.2数据库要求
在数据库中至少应该包含下列数据表:
航班信息表;
航班坐位情况表;
旅客订票信息表;
取票通知表;
帐单。
2需求分析
2.1背景分析
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预定查询系统在各机票预定网点中的作用也越显重要。
目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作。
因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统势在必行。
机票预定系统是为机场工作人员和客户提供订票退票等与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点.它除克服了存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,实现航空公司的机票销售的自动化。
它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。
2.2功能分析
经过综合分析,确定了机票预订系统主要包括以下功能:
(1)航班信息管理功能
主要实现航班的一些基本信息,航班编号、票价、起飞地、目的地、起飞时间的添加、修改、删除和查询。
(2)航班座位信息管理功能
主要实现航班座位,也就是机票的一些基本信息,航班编号、座位号、座位信息、机票类型的添加、修改、删除和查询。
(3)旅客信息管理功能
此模块的主要实现旅客一些基本信息,姓名、性别、联系方式、证件号码、的查询功能。
(4)取票信息管理功能
此模块用于取票信息的管理,包括对航班基本信息,航班编号等,旅客基本信息,旅客姓名、座位号、取票时间的查询。
(5)退票信息管理功能
此模块用于退票信息的管理,包括对订单号、旅客姓名、联系方式、证件号码的查询。
2.3数据词典
经分析之后,本系统要用到五个基本表:
航班信息表,航班座位情况表,旅客订票信息表,取票和账单信息表,退票信息表。
数据结构定义如表:
数据结构名
含义说明
组成
航班信息表
定义了航班
的有关信息
航班号,起飞地,目的地,起飞时间,票价
航班座位情况表
定义了航班座位有关信息
航班号,座位号,座位信息,机票类型
旅客订票信息表
定义了旅客有关信息
旅客姓名,身份证号,性别,电话号
取票和账单信息表
定义了取票通知相关有关信息
旅客姓名,取票时间,航班号,座位号,机票类型
退票信息表
定义了退票旅客的有关信息
旅客姓名,身份证号,订单号,电话号
机票预订系统的主要数据字典如下:
(1)航班信息
数据流来源:
航班管理
数据流去向:
航班安排
数据项组成:
航班号,起飞地,目的地,起飞时间,票价
(2)航班座位情况
数据流来源:
航班管理和订票情况
数据流去向:
旅客座位
数据项组成:
航班号,座位号,座位信息,机票类型
(3)旅客信息
数据流来源:
确定旅客信息后管理人员输入系统
数据流去向:
安排顾客的航班
数据项组成:
旅客姓名,身份证号,性别,电话号
(4)取票通知和账单信息
数据流来源:
打印取票通知和账单
数据流去向:
核对订票信息
数据项组成:
旅客姓名,取票时间,航班号,座位号,机票类型
(5)退票信息
数据流来源:
旅客退票申请
数据流去向:
订票信息申请退票
数据项组成:
旅客姓名,身份证号,订单号,电话号
3概念结构设计
3.1概念结构设计的方法与步骤
1.概念结构设计的方法
概念设计阶段我采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。
对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。
2.概念结构设计的步骤
第一步是进行局部视图的设计:
由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。
因此我们先逐一的设计分E-R图。
第二步是进行视图的集成:
各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。
我想采用一次集成两个分E-R图的方式。
3.2局部E-R图设计
根据需求分析抽象出信息结构,可得该系统的E-R图。
(1)航班信息E-R图,如图3.1所示。
图3.1航班信息E-R图
(2)航班座位信息E-R图,如图3.2所示。
图3.2机票信息E-R图
(3)旅客E-R图,如图3.3所示。
图3.3旅客E-R图
(4)取票通知E-R图,如图3.4所示。
图3.4取票通知E-R图
(5)退票信息E-R图,如图3.5所示。
图3.5退票信息E-R图
3.3总体概念E-R图结构
经过逐步细化再进行每两个一集成初步形成一个E-R图,最后得到图3.6总体概念结构E-R图。
图3.6系统总体结构E-R图
4逻辑结构设计
4.1逻辑结构设计
(1)E-R图向关系模型的转换
将图3.6总体概念结构E-R图转化成关系模型。
退票信息(订单号,旅客姓名,联系方式,证件号码)
旅客(旅客姓名,证件号码,联系方式,性别)
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
取票通知单(旅客姓名,取票时间,证件号码,航班号,座位号)
机票信息表(座位号,航班号,座位信息,机票类型)
(2)数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。
①确定数据依赖
退票信息(订单号,旅客姓名,联系方式,证件号码)根据这个关系写出数据依赖
订单号→旅客姓名,订单号→联系方式,订单号→证件号码
旅客(旅客姓名,证件号码,联系方式,性别)
旅客姓名→证件号码,旅客姓名→联系方式,旅客姓名→性别
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
航班号→起飞地,航班号→票价,航班号→目的地,航班号→起飞时间
取票通知单(旅客姓名,取票时间,航班号,座位号)
旅客姓名→取票时间,旅客姓名→航班号,旅客姓名→座位号,
机票信息表(座位号,航班号,座位信息,机票类型)
(座位号,航班号)→舱位类型,(座位号,航班号,座位信息)→机票类型
②对各关系模式间数据依赖进行极小化处理,消除冗余
订单号→旅客姓名,订单号→联系方式,订单号→证件号码
旅客姓名→性别,旅客姓名→取票时间,旅客姓名→航班号,旅客姓名→座位号,旅客姓名→机票类型
航班号→起飞地,航班号→目的地,航班号→起飞时间
(座位号,航班号)→座位信息
③看这些模式是否符合要求,确定是否要对某些模式进行合并或者分解
最终分解成第三范式:
(订单号,联系方式,证件号码)(订单号,旅客姓名)(旅客姓名,取票时间,性别,机票类型)(旅客姓名,航班号)(旅客姓名,座位号)(航班号,座位号,票价)(航班号,起飞地,目的地,起飞时间)
(3)数据库的结构
根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:
表4-1航班信息系统的结构
字段名
数据类型
长度
约束
描述
flightnumber
decimal
主键
航班号
takeoffplace
varchar
50
不为空
起飞地
destination
varchar
50
不为空
目的地
flighttime
time
不为空
起飞时间
price
int
不为空
票价
表4-2航班座位信息表
字段名
数据类型
长度
约束
描述
seatnumber
decimal
主键
座位号
flightnumber
decimal
不为空
航班号
seatmessage
varchar
50
不为空
座位信息
flighttickettype
varchar
50
不为空
机票类型
表4-3旅客信息系统的结构
字段名
数据类型
长度
约束
描述
passagername
varchar
50
主键
旅客姓名
id
decimal
不为空
身份证号
telephonenumber
decimal
不为空
联系方式
sex
varchar
50
不为空
性别
表4-4取票和账单信息系统的结构
字段名
数据类型
长度
约束
描述
passagername
varchar
50
主键
旅客姓名
gettickettime
time
不为空
取票时间
flightnumber
decimal
不为空
航班号
seatnumber
decimal
不为空
座位号
flighttickettype
varchar
50
不为空
机票类型
表4-5退票信息系统的结构
字段名
数据类型
长度
约束
描述
orderform
decimal
主键
订单号
passagername
varchar
50
不为空
旅客姓名
telephonenumber
decimal
不为空
联系方式
id
varchar
50
不为空
证件号码
4.2数据库表的建立
根据数据库的基本表结构分别建立5个基本表:
(1)创建航班信息表
(2)创建航班座位信息表
(3)创建旅客信息表
(4)创建取票和账单信息表
(5)创建退票信息表
5物理结构设计
数据库物理设计是指设计出数据库的物理数据模型,它是数据库在物理设备上的具体实现,即数据库服务器物理空间上的表空间、表、字段、索引、视图、存储过程、触发器以及相应的数字字典的设计。
经过数据库的需求分析和概念模型设计,得到数据库的逻辑结构,现在可以设计好的逻辑结构在SQLserver中建立数据库及数据库的数据表。
5.1表的建立与数据载入
需要明确数据库需要建立几张表,以及每个表中所要包括的属性。
在建立表的过程中。
要对每个表进行字段属性的设置。
(至少包括5张表,每个表都有主键;根据实际情况,建立视图)
在机票预订系统中,主要建立了5个表,分别是:
航班信息表,航班座位情况表,旅客订票信息表,取票和账单信息表,退票信息表。
5.2视图建立
视图是查看数据库表中数据的一种方式。
视视图提供了存储预定义的查询语句作为数据库中的对象以备以后使用的能力。
视图是一种逻辑对象,是一种虚拟表。
在机票预订系统中,我建立了两个视图。
分别是航班和座位视图和旅客和取票信息视图。
他们分别通过飞机编号也就是flightnumber项和旅客信息也就是passagenumber项联系起来。
5.3索引建立
索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引依赖于表建立,它提供了数据库中编排表中数据的内部方法。
在机票预订系统中,我建立了三个索引,分别是在航班信息表中建立了flightnumber索引,在旅客信息表中建立passagename索引,在航班座位信息表中建立了seatnumber索引。
索引类型为唯一性的非聚集索引。
5.4存储过程
我创建了三个存储过程,输出三个表的全部信息。
分别是航班信息表、航班座位信息表、旅客信息表。
命令为:
CREATEPROCaaa
AS
SELECT*
FROM航班信息
CREATEPROCbbb
AS
SELECT*
FROM航班座位信息
CREATEPROCccc
AS
SELECT*
FROM旅客信息
5.5触发器
触发器是一种实施复杂的完整性约束的特殊存储过程,它在SQLserver进行某个特定的表修改时由SQLServer自动执行。
触发器一般用于加强数据库的某些使用规则。
在机票管理系统中,我建立了一个DDL触发器,用于保护当前SQLServer服务器里的所有数据库不被删除。
具体代码为:
CREATETRIGGERnotdelete
ONallserver
FORDROP_DATABASE
AS
PRINT’不能删除数据库’
ROLLBACK
GO
另外分别在航班信息表、航班座位信息表、旅客信息表、取票通知和账单这四个表中建立了四个触发器,对于表中的添加和更改数据,提示错误信息。
代码为:
CREATETRIGGERaONhangbanxinxi
FORINSERT,UPDATE
ASRAISERROR('不能添加和更新数据',16,1)
ROLLBACKTRANSACTION
GO
CREATETRIGGERbONhangbanzuoweixinxi
FORINSERT,UPDATE
ASRAISERROR('不能添加和更新数据',16,1)
ROLLBACKTRANSACTION
GO
CREATETRIGGERcONlvkexinxi
FORINSERT,UPDATE
ASRAISERROR('不能添加和更新数据',16,1)
ROLLBACKTRANSACTION
GO
CREATETRIGGERdONqupiaotongzhihezhangdan
FORINSERT,UPDATE
ASRAISERROR('不能添加和更新数据',16,1)
ROLLBACKTRANSACTION
GO
5.6创建登陆账户和添加数据库用户
在实训中,我利用SQL创建了一个“login1”的登陆账号。
密码为123456。
在一个数据库中,用户账号唯一标识一个用户,用户对数据库的访问权限以及对数据库对象的所有关系都是通过用户账号来控制的。
在机票预订系统中,我创建了一个用户名为user1的用户。
6数据流图及程序结构框图
6.1功能模块图
根据所需的功能,可以设计出系统的总体功能模块,如图6.1所示。
图6.1机票预订系统功能模块示意图
取票信息管理模块的细化功能模块如图6.2所示。
图6.2取票信息管理模块
退票信息管理模块的细化功能模块如图6.3所示。
图6.3退票信息管理模块
6.2数据流图
图6.40层数据流图
图6.51层数据流图
7界面设计与功能测试
7.1登录界面及代码
代码如下:
PrivateDeclareFunctionGetUserNameLib"advapi32.dll"Alias"GetUserNameA"(ByVallpbufferAsString,nSizeAsLong)AsLong
PublicOKAsBoolean
PrivateSubForm_Load()
DimsBufferAsString
DimlSizeAsLong
sBuffer=Space$(255)
lSize=Len(sBuffer)
CallGetUserName(sBuffer,lSize)
IflSize>0Then
txtUserName.Text=Left$(sBuffer,lSize)
Else
txtUserName.Text=vbNullString
EndIf
EndSub
PrivateSubcmdCancel_Click()
OK=False
Me.Hide
EndSub
PrivateSubcmdOK_Click()
''ToDo:
createtestforcorrectpassword
''checkforcorrectpassword
IftxtPassword.Text=""Then
OK=True
Me.Hide
Else
MsgBox"InvalidPassword,tryagain!
",,"Login"
txtPassword.SetFocus
txtPassword.SelStart=0
txtPassword.SelLength=Len(txtPassword.Text)
EndIf
EndSub
7.2进入系统界面
代码如下:
PrivateSubMDIForm_Load()
Me.Left=GetSetting(App.Title,"Settings","MainLeft",1000)
Me.Top=GetSetting(App.Title,"Settings","MainTop",1000)
Me.Width=GetSetting(App.Title,"Settings","MainWidth",6500)
Me.Height=GetSetting(App.Title,"Settings","MainHeight",6500)
EndSub
PrivateSubMDIForm_Unload(CancelAsInteger)
IfMe.WindowState<>vbMinimizedThen
SaveSettingApp.Title,"Settings","MainLeft",Me.Left
SaveSettingApp.Title,"Settings","MainTop",Me.Top
SaveSettingApp.Title,"Settings","MainWidth",Me.Width
SaveSettingApp.Title,"Settings","MainHeight",Me.Height
EndIf
EndSub
PrivateSubmenuAirline_Click()
frmAirline.txtSQL="select*fromairlineInfo"
frmAirline.Show0
EndSub
PrivateSubmenuBookticket_Click()
frmTicket.txtSQL="select*fromticketInfo"
frmTicket.Show0
EndSub
PrivateSubmenuCarbin_Click()
frmService.txtSQL="select*fromserviceInfo"
frmService.Show0
EndSub
PrivateSubmenuCtype_Click()
frmcType.txtSQL="select*fromcustomerType"
frmcType.Show0
EndSub
PrivateSubmenuCustomer_Click()
frmCustomer.txtSQL="select*fromcustomerInfo"
frmCustomer.Show0
EndSub
PrivateSubmenuPlane_Click()
frmPlane.txtSQL="select*fromplaneInfo"
frmPlane.Show0
EndSub
PrivateSubsearchcustom_Click()
frmCustomer.Show1
EndSub
7.3订票过程
代码如下:
PrivateSubForm_Load()
ShowTitle
ShowData
EndSub
PrivateSubForm_Resize()
''IfMe.WindowState<>vbMinimizedAndfMainForm.WindowState<>vbMinimizedThen
''边界处理
''IfMe.ScaleHeight<10*lblTitle.HeightThen
''ExitSub
''EndIf
''IfMe.ScaleWidth ''ExitSub ''EndIf ''控制控件的位置 ''lblTitle.Top=lblTitle.Height ''lblTitle.Left=(Me.Width-lblTitle.Width)/2 ''msgList.Top=lblTitle.Top+lblTitle.Height+lblTitle.Height/2 ''msgList.Width=Me.ScaleWidth-200 ''msgList.Left=Me.ScaleLeft+100 ''msgList.Height=Me.ScaleHei
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机票预订系统 课程设计 数据库 机票 预订 系统