1、1 引言1.1课题背景随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预定查询系统在各机票预定网点中的作用也越显重要。目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作。因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统势在必行。机票预定系统是为机场工作人员和客户提供订票退票等与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点.它除克服
2、了存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,实现航空公司的机票销售的自动化。它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。1.2课程设计目的应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为
3、了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。1.3课程设计任务本课程设计任务是通过开发一个数据库机票预订系统,学习数据库系统的设计与开发, SQL 相关的软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。2系统结构分析2.1需求分析随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,
4、机票的预定也越显重要,航空公司为方便旅客出行,需开发一个机票预定系统。预定机票的旅客信息,包括姓名、性别、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。如果某方面出现问题,旅客可以持有效证件去飞机场退票。经过综合分析,确定了机票预订系统主要包括以下功能:(1) 航班信息管理功能主要实现航班的一些基本信息,航班编号、票价、起飞地、目的地、起飞时间的添加、修改、删除和查询。 (2) 机票信息管理功能主要实现机票的一些基本信息,航班
5、编号、座位号、座位信息、机票类型的添加、修改、删除和查询。(3) 旅客信息管理功能此模块的主要实现旅客一些基本信息,姓名、性别、联系方式、证件号码、的查询功能。(4) 取票信息管理功能此模块用于取票信息的管理,包括对航班基本信息,航班编号等,旅客基本信息,旅客姓名、座位号、取票时间的查询。(5) 退票信息管理功能此模块用于退票信息的管理,包括对订单号、旅客姓名、联系方式、证件号码的查询。2.2功能模块图(1) 根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示。机票预订系统航班信息管理模块机票信息管理模块退票信息管理模块取票信息管理模块旅客信息管理模块图2.1 机票预订系统功能模块示
6、意图(2) 取票信息管理模块的细化功能模块如图2.2所示。取票信息管理旅客基本信息查询机票基本信息查询图2.2 取票信息管理模块(3) 退票信息管理模块的细化功能模块如图2.3所示。取票信息管理旅客基本信息查询订单信息查询图2.3 退票信息管理模块3系统数据库设计31 概念结构设计根据需求分析抽象出信息结构,可得该系统的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所示。机票信息航班编号座位号座位信息码
7、机票类型图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所示。nnn11mn退票信息航班信息旅客购买包含退票取票通知机票信息购买1姓名性别证件号码码联系方式起飞时间航班编号目的地起飞地票价航班编号座位号机票类型座位信息码航班编号旅客姓名座位号取票时间订单号旅客姓名证件号码码联系方式证件号码图3.6系统总体结构E-R图32 逻辑结构设计(1) E-R图
8、向关系模型的转换将图3.6总体概念结构E-R图转化成关系模型。 退票信息(订单号,旅客姓名,联系方式,证件号码)旅客(旅客姓名,证件号码,联系方式,性别) 航班信息表(航班号,票价,起飞地,目的地,起飞时间) 取票通知单(旅客姓名,取票时间,证件号码,航班号,座位号)机票信息表(座位号,航班号,座位信息,机票类型)(2)数据模型的优化将转化的关系模式进行优化,最终达到第三范式。 确定数据依赖退票信息(订单号,旅客姓名,联系方式,证件号码)根据这个关系写出数据依赖订单号旅客姓名,订单号联系方式,订单号证件号码旅客(旅客姓名,证件号码,联系方式,性别)旅客姓名证件号码,旅客姓名联系方式,旅客姓名性
9、别 航班信息表(航班号,票价,起飞地,目的地,起飞时间)航班号起飞地,航班号票价,航班号目的地,航班号起飞时间取票通知单(旅客姓名,取票时间,航班号,座位号)旅客姓名取票时间,旅客姓名航班号,旅客姓名座位号,机票信息表(座位号,航班号,座位信息,机票类型)(座位号,航班号)舱位类型,(座位号,航班号,座位信息)机票类型对各关系模式间数据依赖进行极小化处理,消除冗余订单号旅客姓名,订单号联系方式,订单号证件号码旅客姓名性别,旅客姓名取票时间,旅客姓名航班号,旅客姓名座位号,旅客姓名机票类型航班号起飞地,航班号目的地,航班号起飞时间(座位号,航班号)座位信息看这些模式是否符合要求,确定是否要对某些
10、模式进行合并或者分解 最终分解成第三范式: (订单号,联系方式,证件号码)(订单号,旅客姓名)(旅客姓名,取票时间,性别,机票类型)(旅客姓名,航班号)(旅客姓名,座位号)(航班号,座位号,票价)(航班号,起飞地,目的地,起飞时间)(3)数据库的结构根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:表3-1旅客信息系统的结构字段名数据类型长度约束描述passager namevarchar50主键旅客姓名iddecimal不为空证件号码telephone numberdecimal不为空联系方式sexvarchar50不为空性别表3-2 退票信息系统的结构字段名数据类型长度约束描述
11、order form decimal主键订单号passager namevarchar50不为空旅客姓名telephone numberdecimal不为空联系方式idvarchar50不为空证件号码表3-3 航班信息系统的结构字段名数据类型长度约束描述flight numberdecimal主键航班号take off placevarchar50不为空起飞地destinationvarchar50不为空目的地flight timetime不为空起飞时间priceint不为空票价flight typedecimal不为空航班型号表3-4取票通知单系统的结构字段名数据类型长度约束描述passag
12、er name varchar50主键旅客姓名get ticket timetime不为空取票时间flight numberdecimal不为空航班号seat numberdecimal不为空座位号flight ticket typevarchar50不为空机票类型表3-5 航班座位信息表字段名数据类型长度约束描述seat numberdecimal主键座位号flight numberdecimal不为空航班号seat messagevarchar50不为空座位信息flight ticket typevarchar50不为空机票类型3.3数据库表的建立根据数据库的基本表结构分别建立六个基本表,
13、这里给出具体的SQL语句如下。(1)创建旅客信息表passagercreate table passager( passager name varchar(50) primary key, id decimal not null, telephone number decimal not null, sex varchar(50) not null);(2)创建退票信息表cancellations_messagecreate table cancellations_message( order form decimal primary key, passager name varchar(50
14、) not null,telephone number decimal not null, id varchar(50) not null);(3)创建航班信息表flight_messagecreate table flight_message( flight number decimal primary key, take off place varchar(50) not null, destination varchar(50) not null, flight time time not null, flight type decimal not null, price int not
15、 null);(4)创建取票通知表ticket_messagecreate table get ticket_message( passager name varchar(50) primary key, get ticket time time not null, flight number decimal not null, seat number decimal not null, flight ticket type varchar(50) not null);(5)创建座位信息表flight_seat_messagecreate table flight_seat_message(
16、seat number decimal primary key, flight number decimal not null, seat message varchar(50) not null, flight ticket type varchar(50) not null);4数据库编程4.1数据库的连接创建函数ExecuteSQL ()Public Function ExecuteSQL(By Val SQL_As String,MsgString As String)_As ADODB.Recordset/此函数功能为执行SQL语句,返回记录集对象Dim cnn As ADODB.C
17、onnectionDim rst As ADODB.RecordsetDim sTokens() As StringOn Error Go To ExecuteSQL_Error /错误处理sTokens()=Split(SQL)Set cnn =New ADODB.Connectioncnn.open CONN /打开与数据库的连接If InStr(INSERT,DELETE,UPDATE,_ /插入记录 UCase$(sToken(0) Then Cnn.Execute SQL MsgString=sTokens(0) & _ 查询成功Else Set rst =New ADODB.Rec
18、ordset Rst.Open Trim$(SQL),cnn,_ adO penKeyset,_ adLockOptimistic Set ExecuteSQL = rst MsgString =查询到 & rst.RecordCount & _ 条记录End IfExecuteSQL_Exit /切断与数据库的连接 Set rst = Nothing Set cnn = Nothing Exit Function4.2系统功能模块设计设计类clsPlane,包含两个类成员和三个类方法,类的两个成员定义如下。Public txtSQL As StringDim mrc As ADODB.Rec
19、ordset类的 ShowData 方法在窗口加载的时候用来显示数据库中的相关记录,这里通过控件MSFlexGrid控件来实现。具体代码如下。Public Sub ShowData(By Val msgList As MSFlexGrid)Dim j As IntegerDim i As IntegerSet mrc = ExecuteSQL(txtSQL,MsgText) With msgList .Row = 1 Do While Not mrc.EOF .Rows = .Rows + 1 For i =1 To mrc.Fields.Count If Not IsNull(Trim(mr
20、c.Fields(i 1) Then Select Case mrc.Fields(i 1).Type Case adDBDate .TextMatrix(.Rows 1,i0 = Format(mrc.Fields(i 1)& ,yyyy-mm-dd) Case Else .T extMatrix(.Rows 1,i0 = mrc.Fields(i 1) & End Select End If Next i Mrc.MoveNext LoopEnd WithMrc.Close End Sub类的 Save 方法用于保存记录,以及在修改记录后对记录进行更新,并在更新前首先判断是否具有相同的ID
21、记录,方法的具体代码如下。Public Sub Save(txtString() As String) Dim intCount As Integer Dim MsgText As String /添加判断是否有相同的ID记录 If gintPmod = 1 Then TxtSQL = select * from flight_message where flight number= & Trim(txtString(0) & Set mrc = ExecuteSQL(txtSQL,MsgText) If mrc.EOF = False Then MsgBox已经存在此编号的记录!,vbOKO
22、nly + vbExclamation, 警告 Exit Sub End If Mrc.Close End If /先删除已有记录 txtSQL = delete from flight_message where flight number= & Trim(txtString(0) & Set mrc = ExecuteSQL(txtSQL,MsgText) /再加入行记录 txtSQL = select * from flight_message Set mrc = ExecuteSQL(txtSQL,MsgText) mrc.AddNew For intCount = 0 To 7 Mr
23、c.Fields(intCount) = txtString(intCount) Next intCount mrc.Update mrc.CloseEnd SubDelete方法用于删除记录,代码比较简单,在此不作过多赘述。 5功能测试5.1登陆界面在已经完成了程序各个功能模块的创建,现在来运行整个系统。运行程序,出现如图5.1所示的登录窗口。图5.1登录窗口5.2各功能模块的实现输入用户名和密码后,进入系统。选择“航线信息管理|航线信息”菜单,将显示所有航线信息,如图5.2所示。图5.2航线信息列表在航线信息列表中单击“查询”按钮,并设置查询内容,如图5.3所示。图5.3查询航线信息窗体航
24、线查询结果如图5.4所示。图5.4 航线信息查询结果在机票信息列表中单击“添加”按钮,出现如图5.5所示的窗体,输入订票信息。图5.5 添加订票信息单击“保存”按钮,出现如图5.6所示的对话框提示订票成功。图5.6 订票提示信息在机票信息列表中,单击“查询”按钮,出现如图5.7所示的窗体,输入查询内容,可以得到剩余机票信息。图5.7 机票信息查询窗体查询结果如图5.8所示。图5.8 机票信息查询结果6结束语经过两周的努力,本次课程设计终于完成了。通过这次课程设计,使我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程。通过这次课程设计,我明白了理论与实际应用相结合的重要性,掌握并熟
25、练运用SQL语句以及VB 的应用,提高了我的综合运用所学知识的能力。在本次课程设计和过程中,由于时间不是很长,再加上要求独立完成,系统需求分析上可能不是很全面,程序中还存在很多缺,希望老师能给予批评和指导。经过这次课程设计,我的知识得到了很大提高,经验也更加丰富。希望能在今后的不断的学习中和努力中,把程序做得更好。最后,感谢指导老师所给我的帮助。参考文献1 陈艳峰,高文姬,邵蕴秋Visual Basic数据库项目案例导航北京:清华大学出版社,20042 尹建民,张海卿 著Visual Basic.NET入门与进阶北京:清华大学出版社,20043 郑阿奇,顾韵华,黄群 著Visual Basic实用教程北京:电子工业出版社,20044 王珊,陈红数据库系统原理教程清华大学出版社,1998,7 THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考