汽车售票系统详细分析.docx
- 文档编号:10919079
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:28
- 大小:142.20KB
汽车售票系统详细分析.docx
《汽车售票系统详细分析.docx》由会员分享,可在线阅读,更多相关《汽车售票系统详细分析.docx(28页珍藏版)》请在冰豆网上搜索。
汽车售票系统详细分析
第4章详细设计
4.1结构程序设计
4.2人机界面设计
4.2.1设计问题
1.系统响应时间
2.用户帮助设施
3.出错信息处理
4.命令交互
4.2.2处理过程
车票汇总:
工作人员将一天所售出的票进行统计,包括票数,票类,形成确定的车票记录。
查询:
将顾客需要的车票信息输入系统,并查询其是否可供应。
查询顾客信息:
为订票所设,将顾客的准确信息记录,为其预定所车票。
处理买票:
进行买票交易,把顾客需要的票(可供应)售出,并在系统中作相应记录,确定车票记录。
处理订票:
进行订票交易,工作人员为顾客预定其所需车票,并在系统中作相应记录,确定订票记录。
处理退票:
进行退票交易,工作人员为顾客办理退票手续,并在系统中作相应记录,确定退票记录。
4.2.3关系模型:
车票与顾客之间的联系
售票1:
N
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号,票号)
退票1:
N
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号,票号,退票时间,退票手续费)
订票1:
N
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号,票号,日期,交易时间,交易金额,数量,起始站,终点站)
4.2.4数据库结构
表2.1Car表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
CarID
文本
是
是
车次编号
CarType
数字
否
否
客车型号
PlateNumber
文本
否
是
车牌号
CarHolder
文本
否
否
责任人
RunningWay
文本
否
否
经营路线
SeatLimit
数字
否
是
座位限额
OutSetTime
日期/时间
否
是
发车时间
表2.2Seat表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
CarID
文本
否
是
车次编号
Date
时间/日期
否
是
日期
Terminal
文本
否
是
终点站
Selled
是/否
否
否
票是否售出
Price
数字
否
是
车票价格
表2.3PriceDiscount表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
RecordNumber
自动编号
是
是
记录号
TicketTypeID
数字
否
是
车票类型
Discount
数字
否
是
折扣
CarID
文本
否
是
车次
表2.4Price表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
TerminalID
文本
是
是
终点站编号
OutStation
文本
否
否
起始站
TerminalName
文本
否
是
终点站
TNPYCode
文本
否
是
拼音码
CarID
文本
否
是
车次编号
TicketPrice
数字
否
是
票价
表2.5Type表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
RecordID
自动编号
是
是
记录号
TicketTypeID
数字
否
是
车票类型编号
TicketType
文本
否
是
车票类型
4.2.5数据库设计
本车站售票系统有两个实体,分别是车票和顾客,利用SQL建表如下:
车票
顾客
4.2.6系统软件结构
1.系统功能设计
汽车站售票管理系统主要设有五个主要功能模块:
分别是车次管理、票价管理、票务管理、用户管理和查询管理。
如图4-1所示。
2.车次管理模块
该模块主要实现车次信息的编辑。
车次管理中的数据源为Access数据库中Car表,在此管理部分中,能够使用界面操作实现车次信息的编辑,并将数据库中的数据按照编辑的要求来及时更新数据表中的相关数据。
3.票价管理模块
该模块主要实现票价信息的录入、修改与删除以及票价折扣信息的录入、修改与删除。
票价详细信息的录入、修改、删除,它的数据源为Access数据库的Price表。
在此管理部分中,通过票价管理(FrmPriceManage)界面来选择记录并决定执行何种操作,是修改、添加或删除。
当命令为修改或者添加时则自动跳转到票价编辑窗体(FrmPriceEdit)实现票价信息的编辑并更新数据库中相应数据记录。
4.票务管理模块
票务管理部分实现前台售票、前台退票功能。
主要完成售票、远程售票、废票、取消废票功能、改签票、退票、取消退票功能、补票、售票查询和票款结算单填写等功能。
5.用户管理模块
该模块主要实现用户添加,用户信息修改与用户的删除。
所有系统用户的管理,包括系统普通用户与系统管理员。
此管理模块数据源为Access数据库的Users表。
在系统主界面中首先进入的是名称为FrmUserMan的用户管理主窗体,通过提取用户名、用户类型来查看用户具体信息,选择添加或删除用户进入名为FrmUserEdit的用户编辑界面进行操作,操作完成便更新数据库数据。
6.查询管理模块
该模块主要实现拥护通过查询界面可以根据条件进行车次时刻、车次票价查询。
4-1.功能模块图
4.2.7其他需求
汽车站售票系统数据库中的数据量十分庞大,而且更新速度十分快。
在数据大小方面要求数据的属性要设置合理,假如是数据的属性值越大,则数据本身所占用的容量也就十分的庞大,不但会造成传输的不方便甚至错误,也更加重系统的负担,有可能削弱系统运行速度,使得系统无法达到预期的目的。
另外,在整个系统当中要确保数据在保存与传递过程中的安全,以免发生严重的错误,造成巨大的损失。
4.2.8说明
售票
正常出售本站所有车次车票,并按要求打印出车票。
远程售票
正常出售远程车站所有车次车票,并按远程车站的要求打印出车票。
废票
在正常售票过程中,可能因操作失误或打印机械故障等原因造成错票而作废车票。
取消废票
当废票时,发现废的票是不应该废的,即为正常票,需要通过取消废票来实现。
远程废票
对所售远程车票作废票处理。
退票
在正常退票时间内办理退票,并根据退票规定收取一定的手续费。
远程退票
对所售远程车票作退票处理。
取消退票
当退票时,发现退的票是不应该退的,即为正常的票,需要通过取消退票来实现。
改签票
由于乘客或车站某种原因需对已出售的车票作更换车次的车票。
改签仅允许改签一次。
远程改签票
对所售远程车票作改签处理。
注销票
删除某些由于调试程序所用的票记录及其影响。
补票
只能在超过售票时限后进行,且在未发车之前,在统计时注意对非微机售票的票的处理(例如:
剪刀票)。
售票查询
通过一定的授权和设定售票员可以查询在设定时间范围内或多少张票以前的出售、作废、改签和退票的情况,并对有权限的人员可有累计票款服务。
票款结算单
售票员每天售完车票后填写每日结算单,以便财务人员查询。
重打车票
在正常售票过程中,可能因打印机械故障等原因造成错票而重新打印车票。
售票类型
车票中所有联都应有的信息为车次、起止站点、票价、发车日期时间,而正联所特有的信息为售票员工号、检票口、是否改签票、车票上应有的信息:
车票固有票号、计算机打印的票号、票号条形码(仅用于自动检票的车站)。
(2)车票类型
1)正常班次车票:
发售的当天或预售正常轮班车次的车票。
2)远程售票:
发售远程车站车次的车票,其打印格式同远程车站。
3)流水班次车票:
发售的流水班次车票。
4)退票和改签票:
退票分为
A、正常退票。
办理标准规定退票时间内的退票。
B、强行退票。
在超过时限后退票,即强行退票。
补票:
补票只能在超过售票时限后进行,且必须在未发车之前。
订票:
设定定票有效期限,在有有效时限保留座位,有效时外释放座位等。
票种的定义
①全价票
②半价票允许设定可用标志,自由定义名称。
③免票只允许设定可用标志。
④优惠票1-3允许设定可用标志,自由定义名称。
⑤折扣票对原票价的基础上进行一定的打折,有严格的权限控制。
5程序模块设计
5.1功能模块详细设计
5.1.1车次管理模块代码实现
PrivateSubCmd_OK_Click()
'检查用户录入数据的有效性
IfLen(Trim(txtCarID))=0Then
MsgBox"请输入车次编号"
txtCarID.SetFocus
ExitSub
EndIf
IfLen(Trim(txtOutTime))=0Then
MsgBox"请输入发车时间"
txtOutTime.SetFocus
ExitSub
EndIf
'把用户录入的数据赋值到数据库对象变量中
WithMyType
.CarID=MakeStr(txtCarID)'车次编号
.OutSetTime=MakeStr(TimeEdit)'发车时间
.RunninWay=MakeStr(WayEdit)'经营路线
.CarType=MakeStr(TypeEdit)'车辆类型
.PlateNumber=MakeStr(CNnEdit)'车牌号
.CarHolder=MakeStr(HolderEdit)'责任人
.SeatLimit=MakeStr(LSeatEdit)'额定座位
'根据变量Modify决定是插入新数据,还是修改已有的数据
IfModify=FalseThen
.Insert'插入新数据
Else'修改
.Update(nId)'修改已有的数据
EndIf
EndWith
UnloadMe'关闭窗口
5.1.2票价管理模块代码实现
票价管理部分代码如下(信息添加过程):
PrivateSubCmd_Add_Click()
'初始化FrmDiscountEdit信息
FrmPriceEdit.txtTerminalName=""
FrmPriceEdit.txtTNPYCode=""
FrmPriceEdit.txtCarID=""
FrmPriceEdit.txtTicketPrice=""
FrmPriceEdit.Modify=False
FrmPriceEdit.VarTermanalID=OriTerminalID
FrmPriceEdit.Show
RefreshData
EndSub
5.1.3用户管路模块代码实现(编辑窗体代码):
PrivateSubCmd_OK_Click()
IfTrim(txtUserName)=""Then
MsgBox"请输入用户名"
txtUserName.SetFocus
ExitSub
EndIf
IfLen(txtPass)<5Then
MsgBox"密码长度不能小于5"
txtPass.SetFocus
txtPass.SelStart=0
txtPass.SelLength=Len(txtPass2)
ExitSub
EndIf
IftxtPass<>txtPass2Then
MsgBox"密码和确认密码不相同,请重新确认"
txtPass2.SetFocus
txtPass2.SelStart=0
txtPass2.SelLength=Len(txtPass2)
ExitSub
EndIf
'判断是否存在同名用户
WithMyUser
IfModify=FalseOrOriUser<>Trim(txtUserName)Then
If.In_DB(Trim(txtUserName))=TrueThen
MsgBox"用户名已存在,请重新输入"
txtUserName.SetFocus
txtUserName.SelStart=0
txtUserName.SelLength=Len(txtUserName)
ExitSub
EndIf
模块中的程序代码如下:
PublicadoConAsNewADODB.Conncetion
PublicadorsAsNewADODB.Recordset
'连接数据库
PublicSubmain()
SetadoCon=NewADODB.Connection
adoCon.Open="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\汽车站售票管理系统.mdb"&";PersistSecurityInfo=False"
FrmLogin.Show
FrmLogin.txtUser.SetFocus
EndSub
5.2界面设计
系统主界面设计如下,主界面顶端显示不同管理模块,点击则进入相应界面。
下端显示系统当前所处日期和时间。
5.3附录:
系统程序源代码
(1)登陆窗体(FrmLogin)代码
PublicPasswordKeyAsString
PublicNameKeyAsString
PublicTry_timesAsInteger
'取消键退出登陆界面
PrivateSubCmd_Cancel_Click()
UnloadMe
EndSub
PrivateSubCmd_OK_Click()
'数据库有效性检查
IfTrim(txtUser)=""Then
MsgBox"请输入用户名"
txtUser.SetFocus
ExitSub
EndIf
IfTrim(txtPwd)=""Then
MsgBox"请输入密码"
txtPwd.SetFocus
ExitSub
EndIf
EndSub
PrivateFunctionMakeStr()AsString
NameKey=Str(txtUser)
PasswordKey=Str(txtPwd)
'判断用户是否存在
IfMyUser.In_DB(NameKey)=FlaseThen
MsgBox"用户名不存在"
Try_times=Try_times+1
IfTry_times>=3Then
MsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"
DBapi_Disconnect
End
Else
ExitFunction
EndIf
EndIf
'判断密码是否正确
MyUser.GetINfo(NameKey)
IfMyUser.Pwd<>PasswordKeyThen
MsgBox"密码错误"
Try_times=Try_times+1
IfTry_times>=3Then
MsgBox"您已经三次尝试进入本系统,均不成功,系统将关闭"
DBapi_Disconnect
End
Else
ExitFunction
EndIf
EndIf
'登陆成功,将当前用户的信息保存在CurUser中
CurUser.UserName=MyUser.UserName
CurUser.User_type=MyUser.User_type
CurUserEmpID=MyUser.EmpID
'关闭自己并显示主窗体
UnloadMe
FrmMain.Show
EndFunction
(2)主窗体(FrmMain)代码
'设置数据库连接字符串
Conn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\汽车站售票管理系统.mdb"&";PresistSecurityInfo=False"
'系统登陆界面
FrmLogin.Show
EndSub
PrivateSubPJCX_Click()
EndSub
PrivateSubPJGL_Click()
FrmPriceManage.Show
EndSub
PrivateSubSPGL_Click()
FrmTicketSell.Show
EndSub
PrivateSubTPGL_Click()
FrmBack.Show
EndSub
PrivateSubXGMM_Click()
WithFrmUserEdit
.OriUser=CurUser.UserName
.txtUserName=CurUser.UserName
IfCurUser.User_type=1Then
.ComboType.AddItem"系统管理员"
Else
.ComboType.AddItem"普通用户"
EndIf
.ComboType.ListIndex=0
.ComboType.Enabled=False
.Modify=True
.Show1
EndWith
EndSub
PrivateSubYHGL_Click()
IfCurUser.User_type=1Then
FrmUserMan.Show
Else
MsgBox"没有权限"
EndIf
EndSub
PrivateSubZKGL_Click()
FrmDiscount.Show
EndSub
(3)售票窗体(FrmTicketSell)代码
PrivateSubCmd_Cancel_Click()
UnloadMe
EndSub
PrivateSubCmd_Search_Click()
'GridRsfresh'根据条件查询所有信息
EndSub
PrivateSubCmd_Sell_Click()
DimComboDateAsString,TNPYCodeAsString,CarIDAsString
DimleftAsInteger
DimseatnumberAsString
DimstrseatAsString
DimticketinformationAsString
DiminformationbookAsString
DimcostAsLong
ComboDate=Trim(ComboDate.Text)
TNPY=Trim(txtTNPYCode)
CarID=Trim(txtCarID)
Dimstrcnn
init_ado
strQuery="SelectCarID,OutStation,Terminal,OutSetTime,Date,SnoFromSeatjoinPriceonSeat.CarID=Price.CarIDWhereSeat.date='"&_
Trim(ComboDate)&"'"&"andPrice.TNPYCode='"&Trim(txtTNPYCode)&"'"
'根据输入的信息,从表里得出查询结果
rsdata.OpenstrQuery,cnnrsdata,,,adCmdText
Ifrsdata.EOFThen
MsgBox"车次或拼音码输入有误,请重新输入!
",,"Error!
"
ComboDate.Text=""
TNPYCode=""
txtCarID=""
ComboDate.SetFocus
ElseIfLen(TNPYCode)=0Then
MsgBox"请输入拼音码"
txtTNPYCode.SetFocus
ElseIfLen(TNPYCode)>4Then
MsgBox"拼音码过长,无效!
"
txtCarID.SetFocus
ElseIfLen(CarID)=0Then
MsgBox"请输入车次编号!
"
txtCarID.SetFocus
ElseIfIsNumeric(Number)=FalseThen
MsgBox"车次编号应为数字!
"
txtCarID.Text=""
txtCarID.SetFocus
Else
rsdata.Close
strQuery="selectcount(*)astotalfromSeatwhereSeat.sell=falseandSeat.date='"&_
Trim(ComboDate.Text)&"'"&"andSeat.CarID='"&Trim(txtCarID.Text)&"'"
rsdata.OpenstrQuery,cnnrsdata,,,adCmdText'统计本车次的剩余的座位数
rsdata.MoveFirst
left=rsdata!
total
Ifleft=0Then
MsgBox"本车次已经客满!
"
ComboDate.Text=""
ComboSNno.Text=""
txtTNPYCode.Text=""
txtCarID.Text=""
ComboDate.SetFocus
Else
rsdata.Close
strQuery="selectcount(*)astotalfromSeatwhereSeat.sell=falseandSeat.date='"&_
Trim(ComboDate)&"'"&"andSeat.CarID='"&Trim(txtCarID)&"'"
rsdata.OpenstrQuery,cnnrsdata,,,adCmdText'统计本车次的剩余的座位数
rsdata.MoveFirst
rsdata.AddNew
rsdata!
Date=comdate
rsdata!
Seat=comSNno
rsdata!
CarID=CarID
rsdata!
TNPYCode=TNPYCode
rsdata!
sno=Trim(seatnumber)
rsdata.Update'添加新记录
'更新Seat表,将刚卖
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 售票 系统 详细 分析