数据库课程设计 机票预定系统Word文档下载推荐.docx
《数据库课程设计 机票预定系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库课程设计 机票预定系统Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
(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
1
m
退票信息
航班信息
旅客
购买
包含
退票
取票通知
机票信息
姓名
性别
证件号码码
联系方式
起飞时间
航班编号
目的地
起飞地
票价
座位号
机票类型
座位信息码
旅客姓名
取票时间
订单号
证件号码
图3、6系统总体结构E-R图
3.2逻辑结构设计
(1)E-R图向关系模型的转换
将图3、6总体概念结构E-R图转化成关系模型。
退票信息(订单号,旅客姓名,联系方式,证件号码)
旅客(旅客姓名,证件号码,联系方式,性别)
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
取票通知单(旅客姓名,取票时间,证件号码,航班号,座位号)
机票信息表(座位号,航班号,座位信息,机票类型)
(2)数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。
①确定数据依赖
退票信息(订单号,旅客姓名,联系方式,证件号码)根据这个关系写出数据依赖
订单号→旅客姓名,订单号→联系方式,订单号→证件号码
旅客姓名→证件号码,旅客姓名→联系方式,旅客姓名→性别
航班信息表(航班号,票价,起飞地,目的地,起飞时间)
航班号→起飞地,航班号→票价,航班号→目的地,航班号→起飞时间
取票通知单(旅客姓名,取票时间,航班号,座位号)
旅客姓名→取票时间,旅客姓名→航班号,旅客姓名→座位号,
(座位号,航班号)→舱位类型,(座位号,航班号,座位信息)→机票类型
②对各关系模式间数据依赖进行极小化处理,消除冗余
旅客姓名→性别,旅客姓名→取票时间,旅客姓名→航班号,旅客姓名→座位号,旅客姓名→机票类型
航班号→起飞地,航班号→目的地,航班号→起飞时间
(座位号,航班号)→座位信息
③瞧这些模式就是否符合要求,确定就是否要对某些模式进行合并或者分解
最终分解成第三范式:
(订单号,联系方式,证件号码)(订单号,旅客姓名)(旅客姓名,取票时间,性别,机票类型)(旅客姓名,航班号)(旅客姓名,座位号)(航班号,座位号,票价)(航班号,起飞地,目的地,起飞时间)
(3)数据库的结构
根据总体结构图设计机票预定系统基本表结构,其相应标的定义如下:
表3-1旅客信息系统的结构
字段名
数据类型
长度
约束
描述
passagername
varchar
50
主键
id
decimal
不为空
telephonenumber
sex
表3-2退票信息系统的结构
orderform
表3-3航班信息系统的结构
flightnumber
航班号
takeoffplace
destination
flighttime
time
price
int
flighttype
航班型号
表3-4取票通知单系统的结构
passagername
gettickettime
seatnumber
flighttickettype
表3-5航班座位信息表
seatmessage
座位信息
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
gettickettimetimenotnull,
flightnumberdecimalnotnull,
seatnumberdecimalnotnull,,
flighttickettypevarchar(50)notnull
(5)创建座位信息表flight_seat_message
createtableflight_seat_message
(seatnumberdecimalprimarykey,
seatmessagevarchar(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
Mrc、Close
EndIf
//先删除已有记录
txtSQL="
deletefromflight_messagewhereflightnumber='
//再加入行记录
select*fromflight_message"
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入门与进阶》.北京:
[3]郑阿奇,顾韵华,黄群著.《VisualBasic实用教程》.北京:
电子工业出版社,2004
[4]王珊,陈红.《数据库系统原理教程》.清华大学出版社,1998,7