数据库课程设计 机票预定系统.docx
- 文档编号:3470380
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:17
- 大小:170.74KB
数据库课程设计 机票预定系统.docx
《数据库课程设计 机票预定系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计 机票预定系统.docx(17页珍藏版)》请在冰豆网上搜索。
数据库课程设计机票预定系统
1引言
1、1课题背景
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预定查询系统在各机票预定网点中的作用也越显重要。
目前,我国一些旅行社与酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作。
因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统势在必行。
机票预定系统就是为机场工作人员与客户提供订票退票等与机票相关内容与管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点、它除克服了存储乘客信息少,查询效率低下等问题外,更重要的就是其安全性,可靠性,实现航空公司的机票销售的自动化。
它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。
1、2课程设计目的
应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
实践与巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立与调试以及系统评价。
实践与巩固在课堂教学中学习的关于关系数据库原理的有关知识与数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
1、3课程设计任务
本课程设计任务就是通过开发一个数据库机票预订系统,学习数据库系统的设计与开发,SQL相关的软件为开发工具。
通过对计算机硬件与软件解决方案的论证,对应用领域进行调查分析,参考各种资料与进行数据库系统开发实践。
在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。
2系统结构分析
2、1需求分析
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,机票的预定也越显重要,航空公司为方便旅客出行,需开发一个机票预定系统。
预定机票的旅客信息,包括姓名、性别、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。
旅客在飞机起飞前一天凭取票通知与帐单交款后取票,系统校对无误后即印出机票给旅客。
如果某方面出现问题,旅客可以持有效证件去飞机场退票。
经过综合分析,确定了机票预订系统主要包括以下功能:
(1)航班信息管理功能
主要实现航班的一些基本信息,航班编号、票价、起飞地、目的地、起飞时间的添加、修改、删除与查询。
(2)机票信息管理功能
主要实现机票的一些基本信息,航班编号、座位号、座位信息、机票类型的添加、修改、删除与查询。
(3)旅客信息管理功能
此模块的主要实现旅客一些基本信息,姓名、性别、联系方式、证件号码、的查询功能。
(4)取票信息管理功能
此模块用于取票信息的管理,包括对航班基本信息,航班编号等,旅客基本信息,旅客姓名、座位号、取票时间的查询。
(5)退票信息管理功能
此模块用于退票信息的管理,包括对订单号、旅客姓名、联系方式、证件号码的查询。
2、2功能模块图
(1)根据上述的功能,可以设计出系统的总体功能模块,如图2、1所示。
图2、1机票预订系统功能模块示意图
(2)取票信息管理模块的细化功能模块如图2、2所示。
图2、2取票信息管理模块
(3)退票信息管理模块的细化功能模块如图2、3所示。
图2、3退票信息管理模块
3系统数据库设计
3.1概念结构设计
根据需求分析抽象出信息结构,可得该系统的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图
根据分E-R图与需求分析,可得到总E-R图,如图3、6所示。
n
n
n
1
1
m
n
退票信息
航班信息
旅客
购买
包含
退票
取票通知
机票信息
购买
1
姓名
性别
证件号码码
联系方式
起飞时间
航班编号
目的地
起飞地
票价
航班编号
座位号
机票类型
座位信息码
航班编号
旅客姓名
座位号
取票时间
订单号
旅客姓名
证件号码码
联系方式
证件号码
图3、6系统总体结构E-R图
3.2逻辑结构设计
(1)E-R图向关系模型的转换
将图3、6总体概念结构E-R图转化成关系模型。
退票信息(订单号,旅客姓名,联系方式,证件号码)
旅客(旅客姓名,证件号码,联系方式,性别)
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
取票通知单(旅客姓名,取票时间,证件号码,航班号,座位号)
机票信息表(座位号,航班号,座位信息,机票类型)
(2)数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。
①确定数据依赖
退票信息(订单号,旅客姓名,联系方式,证件号码)根据这个关系写出数据依赖
订单号→旅客姓名,订单号→联系方式,订单号→证件号码
旅客(旅客姓名,证件号码,联系方式,性别)
旅客姓名→证件号码,旅客姓名→联系方式,旅客姓名→性别
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
航班号→起飞地,航班号→票价,航班号→目的地,航班号→起飞时间
取票通知单(旅客姓名,取票时间,航班号,座位号)
旅客姓名→取票时间,旅客姓名→航班号,旅客姓名→座位号,
机票信息表(座位号,航班号,座位信息,机票类型)
(座位号,航班号)→舱位类型,(座位号,航班号,座位信息)→机票类型
②对各关系模式间数据依赖进行极小化处理,消除冗余
订单号→旅客姓名,订单号→联系方式,订单号→证件号码
旅客姓名→性别,旅客姓名→取票时间,旅客姓名→航班号,旅客姓名→座位号,旅客姓名→机票类型
航班号→起飞地,航班号→目的地,航班号→起飞时间
(座位号,航班号)→座位信息
③瞧这些模式就是否符合要求,确定就是否要对某些模式进行合并或者分解
最终分解成第三范式:
(订单号,联系方式,证件号码)(订单号,旅客姓名)(旅客姓名,取票时间,性别,机票类型)(旅客姓名,航班号)(旅客姓名,座位号)(航班号,座位号,票价)(航班号,起飞地,目的地,起飞时间)
(3)数据库的结构
根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:
表3-1旅客信息系统的结构
字段名
数据类型
长度
约束
描述
passagername
varchar
50
主键
旅客姓名
id
decimal
不为空
证件号码
telephonenumber
decimal
不为空
联系方式
sex
varchar
50
不为空
性别
表3-2退票信息系统的结构
字段名
数据类型
长度
约束
描述
orderform
decimal
主键
订单号
passagername
varchar
50
不为空
旅客姓名
telephonenumber
decimal
不为空
联系方式
id
varchar
50
不为空
证件号码
表3-3航班信息系统的结构
字段名
数据类型
长度
约束
描述
flightnumber
decimal
主键
航班号
takeoffplace
varchar
50
不为空
起飞地
destination
varchar
50
不为空
目的地
flighttime
time
不为空
起飞时间
price
int
不为空
票价
flighttype
decimal
不为空
航班型号
表3-4取票通知单系统的结构
字段名
数据类型
长度
约束
描述
passagername
varchar
50
主键
旅客姓名
gettickettime
time
不为空
取票时间
flightnumber
decimal
不为空
航班号
seatnumber
decimal
不为空
座位号
flighttickettype
varchar
50
不为空
机票类型
表3-5航班座位信息表
字段名
数据类型
长度
约束
描述
seatnumber
decimal
主键
座位号
flightnumber
decimal
不为空
航班号
seatmessage
varchar
50
不为空
座位信息
flighttickettype
varchar
50
不为空
机票类型
3、3数据库表的建立
根据数据库的基本表结构分别建立六个基本表,这里给出具体的SQL语句如下。
(1)创建旅客信息表passager
createtablepassager
(passagernamevarchar(50)primarykey,
iddecimalnotnull,
telephonenumberdecimalnotnull,
sexvarchar(50)notnull
);
(2)创建退票信息表cancellations_message
createtablecancellations_message
(orderformdecimalprimarykey,
passagernamevarchar(50)notnull,
telephonenumberdecimalnotnull,
idvarchar(50)notnull
);
(3)创建航班信息表flight_message
createtableflight_message
(flightnumberdecimalprimarykey,
takeoffplacevarchar(50)notnull,
destinationvarchar(50)notnull,
flighttimetimenotnull,
flighttypedecimalnotnull,
priceintnotnull
);
(4)创建取票通知表ticket_message
createtablegetticket_message
(passagernamevarchar(50)primarykey,
gettickettimetimenotnull,
flightnumberdecimalnotnull,
seatnumberdecimalnotnull,,
flighttickettypevarchar(50)notnull
);
(5)创建座位信息表flight_seat_message
createtableflight_seat_message
(seatnumberdecimalprimarykey,
flightnumberdecimalnotnull,
seatmessagevarchar(50)notnull,
flighttickettypevarchar(50)notnull
);
4数据库编程
4、1数据库的连接
创建函数ExecuteSQL()
PublicFunctionExecuteSQL(ByValSQL_
AsString,MsgStringAsString)_
AsADODB、Recordset
//此函数功能为执行SQL语句,返回记录集对象
DimcnnAsADODB、Connection
DimrstAsADODB、Recordset
DimsTokens()AsString
OnErrorGoToExecuteSQL_Error//错误处理
sTokens()=Split(SQL)
Setcnn=NewADODB、Connection
cnn、openCONN//打开与数据库的连接
IfInStr("INSERT,DELETE,UPDATE",_//插入记录
UCase$(sToken(0)))Then
Cnn、ExecuteSQL
MsgString=sTokens(0)&_
"查询成功"
Else
Setrst=NewADODB、Recordset
Rst、OpenTrim$(SQL),cnn,_
adOpenKeyset,_
adLockOptimistic
SetExecuteSQL=rst
MsgString="查询到"&rst、RecordCount&_"条记录"
EndIf
ExecuteSQL_Exit//切断与数据库的连接
Setrst=Nothing
Setcnn=Nothing
ExitFunction
4、2系统功能模块设计
设计类clsPlane,包含两个类成员与三个类方法,类的两个成员定义如下。
PublictxtSQLAsString
DimmrcAsADODB、Recordset
类的ShowData方法在窗口加载的时候用来显示数据库中的相关记录,这里通过控件MSFlexGrid控件来实现。
具体代码如下。
PublicSubShowData(ByValmsgListAsMSFlexGrid)
DimjAsInteger
DimiAsInteger
Setmrc=ExecuteSQL(txtSQL,MsgText)
WithmsgList
、Row=1
DoWhileNotmrc、EOF
、Rows=、Rows+1
Fori=1Tomrc、Fields、Count
IfNotIsNull(Trim(mrc、Fields(i–1)))Then
SelectCasemrc、Fields(i–1)、Type
CaseadDBDate
、TextMatrix(、Rows–1,i0=Format(mrc、Fields(i–1)
&"","yyyy-mm-dd")
CaseElse
、TextMatrix(、Rows–1,i0=mrc、Fields(i–1)&""
EndSelect
EndIf
Nexti
Mrc、MoveNext
Loop
EndWith
Mrc、Close
EndSub
类的Save方法用于保存记录,以及在修改记录后对记录进行更新,并在更新前首先判断就是否具有相同的ID记录,方法的具体代码如下。
PublicSubSave(txtString()AsString)
DimintCountAsInteger
DimMsgTextAsString//添加判断就是否有相同的ID记录
IfgintPmod=1Then
TxtSQL="select*fromflight_messagewhereflightnumber='"&Trim(txtString(0))&""
Setmrc=ExecuteSQL(txtSQL,MsgText)
Ifmrc、EOF=FalseThen
MsgBox"已经存在此编号的记录!
",vbOKOnly+vbExclamation,"警告"
ExitSub
EndIf
Mrc、Close
EndIf
//先删除已有记录
txtSQL="deletefromflight_messagewhereflightnumber='"&Trim(txtString(0))&""
Setmrc=ExecuteSQL(txtSQL,MsgText)
//再加入行记录
txtSQL="select*fromflight_message"
Setmrc=ExecuteSQL(txtSQL,MsgText)
mrc、AddNew
ForintCount=0To7
Mrc、Fields(intCount)=txtString(intCount)
NextintCount
mrc、Update
mrc、Close
EndSub
Delete方法用于删除记录,代码比较简单,在此不作过多赘述。
5功能测试
5、1登陆界面
在已经完成了程序各个功能模块的创建,现在来运行整个系统。
运行程序,出现如图5、1所示的登录窗口。
图5、1登录窗口
5、2各功能模块的实现
输入用户名与密码后,进入系统。
选择“航线信息管理|航线信息”菜单,将显示所有航线信息,如图5、2所示。
图5、2航线信息列表
在航线信息列表中单击“查询”按钮,并设置查询内容,如图5、3所示。
图5、3查询航线信息窗体
航线查询结果如图5、4所示。
图5、4航线信息查询结果
在机票信息列表中单击“添加”按钮,出现如图5、5所示的窗体,输入订票信息。
图5、5添加订票信息
单击“保存”按钮,出现如图5、6所示的对话框提示订票成功。
图5、6订票提示信息
在机票信息列表中,单击“查询”按钮,出现如图5、7所示的窗体,输入查询内容,可以得到剩余机票信息。
图5、7机票信息查询窗体
查询结果如图5、8所示。
图5、8机票信息查询结果
6结束语
经过两周的努力,本次课程设计终于完成了。
通过这次课程设计,使我对数据库这门课程有了更深入的理解,数据库就是一门实践性较强的课程。
通过这次课程设计,我明白了理论与实际应用相结合的重要性,掌握并熟练运用SQL语句以及VB的应用,提高了我的综合运用所学知识的能力。
在本次课程设计与过程中,由于时间不就是很长,再加上要求独立完成,系统需求分析上可能不就是很全面,程序中还存在很多缺,希望老师能给予批评与指导。
经过这次课程设计,我的知识得到了很大提高,经验也更加丰富。
希望能在今后的不断的学习中与努力中,把程序做得更好。
最后,感谢指导老师所给我的帮助。
参考文献
[1]陈艳峰,高文姬,邵蕴秋.《VisualBasic数据库项目案例导航》.北京:
清华大学出版社,2004
[2]尹建民,张海卿著.《VisualBasic、NET入门与进阶》.北京:
清华大学出版社,2004
[3]郑阿奇,顾韵华,黄群著.《VisualBasic实用教程》.北京:
电子工业出版社,2004
[4]王珊,陈红.《数据库系统原理教程》.清华大学出版社,1998,7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库课程设计 机票预定系统 数据库 课程设计 机票 预定 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)