可编辑
第4章 详细设计
4.1结构程序设计
精品文档,欢迎下载
可编辑
4.2人机界面设计
精品文档,欢迎下载
可编辑
4.2.1设计问题
1. 系统响应时间
精品文档,欢迎下载
可编辑
2. 用户帮助设施
3. 出错信息处理
4. 命令交互
4.2.2处理过程
车票汇总:工作人员将一天所售出的票进行统计,包括票数,票类,形成确定
的车票记录。
查询:将顾客需要的车票信息输入系统,并查询其是否可供应。
查询顾客信息:为订票所设,将顾客的准确信息记录,为其预定所车票。
处理买票:进行买票交易,把顾客需要的票(可供应)售出,并在系统中作相
应记录,确定车票记录。
处理订票:进行订票交易,工作人员为顾客预定其所需车票,并在系统中作相
应记录,确定订票记录。
处理退票:进行退票交易,工作人员为顾客办理退票手续,并在系统中作相应
记录,确定退票记录。
4.2.3关系模型:
车票与顾客之间的联系
售票 1:
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号,票号)
退票1:
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号,票号,退票时间,退票手续费)
订票1:
车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客(身份证号,银行卡号,票号,日期,交易时间,交易金额,数量,起始站,终点站)
4.2.4数据库结构
表2.1 Car表详细设计
精品文档,欢迎下载
可编辑
字段名 数据类型 是否主键 是否必填 字段说明
CarID 文本 是 是 车次编号
CarType 数字 否 否 客车型号
Plateumber 文本 否 是 车牌号
CarHolder 文本 否 否 责任人
RunningWay 文本 否 否 经营路线
SeatLimit 数字 否 是 座位限额
OutSetTime 日期/时间 否 是 发车时间
表2.2 Seat表详细设计
是否必填 字段名 数据类型 是否主键 字段说明
是 CarID 文本 否 车次编号
是 Date 时间/日期 否 日期
是 Terminal 文本 否 终点站
否 Selled 是/否 否 票是否售出
是 Price 数字 否 车票价格
表2.3 PriceDiscount表详细设计
字段名 数据类型 是否主键 是否必填 字段说明
Recordumber
自动编号 是 是 记录号
TicketTypeID 数字 否 是 车票类型
Discount 数字 否 是 折扣
CarID 文本 否 是 车次
表2.4 Price表详细设计
字段说明 字段名 数据类型 是否主键 是否必填
TerminalID
OutStation
Terminalame
TPYCode
CarID
TicketPrice
文本 是 是 终点站编号
文本 否 否 起始站
文本 否 是 终点站
文本 否 是 拼音码
文本 否 是 车次编号
数字 否 是 票价
是否主键 是否必填 字段说明 数据类型 字段名
是 是 记录号 自动编号
否 是 车票类型编号 TicketTypeID 数字
否 是 车票类型 TicketType 文本
表2.5 Type表详细设计
RecordID
精品文档,欢迎下载
可编辑
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 车次管理模块代码实现
Private Sub Cmd_OK_Click()
'检查用户录入数据的有效性
If Len(Trim(txtCarID)) = 0 Then
MsgBox "请输入车次编号"
us
Exit Sub
End If
If Len(Trim(txtOutTime)) = 0 Then
MsgBox "请输入发车时间"
us
Exit Sub
End If
'把用户录入的数据赋值到数据库对象变量中
With MyType
.CarID = MakeStr(txtCarID) '车次编号
.OutSetTime = MakeStr(TimeEdit) '发车时间
.RunninWay = MakeStr(WayEdit) '经营路线
.CarType = MakeStr(TypeEdit) '车辆类型
.Plateumber = MakeStr(CnEdit) '车牌号
.CarHolder = MakeStr(HolderEdit) '责任人
.SeatLimit = MakeStr(LSeatEdit) '额定座位
'根据变量Modify决定是插入新数据,还是修改已有的数据
If Modify = False Then
精品文档,欢迎下载
可编辑
.Insert '插入新数据
Else '修改
.Update (nId) '修改已有的数据
End If
End With
Unload Me '关闭窗口
5.1.2 票价管理模块代码实现
票价管理部分代码如下(信息添加过程):
Private Sub Cmd_Add_Click()
'初始化FrmDiscountEdit信息
minalame = ""
YCode = ""
ID = ""
ketPrice = ""
= False
manalID = OriTerminalID
RefreshData
End Sub
5.1.3用户管路模块代码实现(编辑窗体代码):
Private Sub Cmd_OK_Click()
If Trim(txtUserame) = "" Then
MsgBox "请输入用户名"
us
Exit Sub
End If
If Len(txtPass) < 5 Then
MsgBox "密码长度不能小于5"
us
rt = 0
gth = Len(txtPass2)
Exit Sub
End If
If txtPass <> txtPass2 Then
MsgBox "密码和确认密码不相同,请重新确认"
us
rt = 0
gth = Len(txtPass2)
Exit Sub
End If
'判断是否存在同名用户
With MyUser
If Modify = False Or OriUser <> Trim(txtUserame) Then
精品文档,欢迎下载
可编辑
If .In_DB(Trim(txtUserame)) = True Then
MsgBox "用户名已存在,请重新输入"
us
rt = 0
gth = Len(txtUserame)
Exit Sub
End If
模块中的程序代码如下:
Public adoCon As ew tion
Public adors As ew set
'连接数据库
Public Sub main()
Set adoCon = ew tion
= "Provider=.4.0;Data Source="
& & " 汽车站售票管理系统.mdb" & ";Persist Security Info=False"
us
End Sub
5.2 界面设计
系统主界面设计如下,主界面顶端显示不同管理模块,点击则进入相应界
面。下端显示系统当前所处日期和时间。
5.3附录:系统程序源代码
(1)登陆窗体(FrmLogin)代码
Public PasswordKey As String
Public ameKey As String
Public Try_times As Integer
'取消键退出登陆界面
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub Cmd_OK_Click()
'数据库有效性检查
If Trim(txtUser) = "" Then
MsgBox "请输入用户名"
us
精品文档,欢迎下载
可编辑
Exit Sub
End If
If Trim(txtPwd) = "" Then
MsgBox "请输入密码"
us
Exit Sub
End If
End Sub
Private Function MakeStr() As String
ameKey = Str(txtUser)
PasswordKey = Str(txtPwd)
'判断用户是否存在
If _DB(ameKey) = Flase Then
MsgBox "用户名不存在"
Try_times = Try_times + 1
If Try_times >= 3 Then
MsgBox "您已经三次尝试进入本系统,均不成功,系统将关闭"
DBapi_Disconnect
End
Else
Exit Function
End If
End If
'判断密码是否正确
o (ameKey)
If <> PasswordKey Then
MsgBox "密码错误"
Try_times = Try_times + 1
If Try_times >= 3 Then
MsgBox "您已经三次尝试进入本系统,均不成功,系统将关闭"
DBapi_Disconnect
End
Else
Exit Function
End If
End If
'登陆成功,将当前用户的信息保存在CurUser中
me = me
_type = _type
精品文档,欢迎下载
可编辑
CurUserEmpID =
'关闭自己并显示主窗体
Unload Me
End Function
(2)主窗体(FrmMain)代码
'设置数据库连接字符串
Conn = "Provider=.4.0;Data Source=" & & " 汽车站售
票管理系统.mdb " & ";Presist Security Info=False"
'系统登陆界面
End Sub
Private Sub PJCX_Click()
End Sub
Private Sub PJGL_Click()
End Sub
Private Sub SPGL_Click()
End Sub
Private Sub TPGL_Click()
End Sub
Private Sub XGMM_Click()
With FrmUserEdit
.OriUser = me
.txtUserame = me
If _type = 1 Then
.m "系统管理员"
Else
.m "普通用户"
End If
.dex = 0
.d = False
.Modify = True
.Show 1
End With
End Sub
Private Sub YHGL_Click()
精品文档,欢迎下载
可编辑
If _type = 1 Then
Else
MsgBox "没有权限"
End If
End Sub
Private Sub ZKGL_Click()
End Sub
(3)售票窗体(FrmTicketSell)代码
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub Cmd_Search_Click()
'GridRsfresh
'根据条件查询所有信息
End Sub
Private Sub Cmd_Sell_Click()
Dim ComboDate As String, TPYCode As String, CarID As String
Dim left As Integer
Dim seatnumber As String
Dim strseat As String
Dim ticketinformation As String
Dim informationbook As String
Dim cost As Long
ComboDate = Trim()
TPY = Trim(txtTPYCode)
CarID = Trim(txtCarID)
Dim strcnn
init_ado
strQuery = "Select CarID,OutStation,Terminal,OutSetTime,Date,Sno From Seat
join Price on = Where ='" & _
Trim(ComboDate) & "'" & " and de='" & Trim(txtTPYCode) & "'"
'根据输入的信息,从表里得出查询结果
strQuery, cnnrsdata, , , adCmdText
If Then
MsgBox "车次或拼音码输入有误,请重新输入!", , "Error!"
= ""
TPYCode = ""
精品文档,欢迎下载
可编辑
txtCarID = ""
us
ElseIf Len(TPYCode) = 0 Then
MsgBox "请输入拼音码"
us
ElseIf Len(TPYCode) > 4 Then
MsgBox "拼音码过长,无效!"
us
ElseIf Len(CarID) = 0 Then
MsgBox "请输入车次编号!"
us
ElseIf Isumeric(umber) = False Then
MsgBox "车次编号应为数字!"
= ""
us
Else
strQuery = "select count(*) as total from Seat where =false and
='" & _
Trim() & "'" & " and ='" & Trim() &
"'"
strQuery, cnnrsdata, , , adCmdText 统计本车次的剩余的座
'
位数
rst
left = rsdata!total
If left = 0 Then
MsgBox "本车次已经客满!"
= ""
= ""
= ""
= ""
us
Else
strQuery = "select count(*) as total from Seat where =false and
='" & _
Trim(ComboDate) & "'" & " and ='" & Trim(txtCarID) & "'"
strQuery, cnnrsdata, , , adCmdText 统计本车次的剩余的座
'
位数
rst
精品文档,欢迎下载
可编辑
rsdata!Date = comdate
rsdata!Seat = comSno
rsdata!CarID = CarID
rsdata!TPYCode = TPYCode
rsdata!sno = Trim(seatnumber)
'添加新记录
'更新 Seat 表 ,将刚卖出的座位号设为 false
strQuery = "select * from Seat where ='" &
Trim(seatnumber) & _
"' and ='" & Trim(ComboDate) & "'" & _
" and SeatCarID='" & Trim(txtCarID) & "'"
strQuery, cnnrsdata, , , adCmdText
If rsdata!sell = False Then
rsdata!sell = True
End If
ComboDate = ""
txtTPYCode = ""
txtCarID = ""
us
cost = Val((3))
txtCharge = Val(txtMoney) - Val((3))
End Sub
(4)退票窗体(FrmBack)代码
Private Sub Cmdback_Click()
Dim strdate As String
Dim strline As String
Dim strseatno As String
Dim strTnl As String
Dim response As String
Dim ticketinformation As String
strdate = Trim()
strCarID = Trim()
strseatno = Trim()
strTnl = Trim()
Dim strcnn
init_ado
strQuery = "Select * From SellTicket Where ='" & _
精品文档,欢迎下载
可编辑
Trim() & "'" & " and ='" & Trim()
& "'" & _
" and ='" & Trim() & "'" '检查车票日期、
车次和座位是否有效
strQuery, cnnrsdata, , , adCmdText
If Then
MsgBox "你所要退的票为无效票或是你的输入有问题!"
Else
strQuery = "Select * From SellTicket Where ='" &
Trim() & _
"'" & " and ='" & Trim() & "'" & _
" and ='" & Trim() & "'"
strQuery, cnnrsdata, , , adCmdText
rst
= rsdata!Date
= rsdata!sno
= rsdata!CarID
'车票有效,确认日期、车次和座位号,确认是否退票
ticketinformation = "日期:" & strdate & " " & "车次:" & strCarID & " "
& "座位号:" & strsno & ""
response = MsgBox(ticketinformation, vbOKCancel + vbInformation, "是否
真要退票?")
If response = 1 Then
'更改 SellTicket 表
strQuery = "select * from SellTicket"
strQuery, cnnrsdata, , , adCmdText
rst
Dim i As Integer
For i = 1 To Count
If rsdata!Date = strdate And rsdata!sno = strsno And rsdata!sno =
strseat Then
End If
xt
ext i
' 将刚退的票设为可卖
strQuery = "select * from line where ='" & strdate & "'" &
精品文档,欢迎下载
可编辑
_
精品文档,欢迎下载
可编辑
" and ='" & strCarID & "'" & " and ='" & strsno &
"'"
strQuery, cnnrsdata, , , adCmdText
If rsdata!book = True Then
rsdata!book = False
End If
= ""
= ""
us
MsgBox "退票已成功!"
Else
= ""
= ""
us
End If
End If
End Sub
(5)折扣管理窗体(FrmDiscount)代码
Private Sub Cmd_Add_Click()
'初始化FrmDiscountEdit信息
minalame = ""
YCode = ""
ID = ""
ketPrice = ""
= False
ordumber = OriRecordumber
1
RefreshData
End Sub
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub Cmd_Del_Click()
Dim TmpID As Long
If = True Then
MsgBox "请选择记录"
Exit Sub
精品文档,欢迎下载
可编辑
End If
TmpID = (0)
If MsgBox("是否删除当前行", vbYeso, "请确认") = vbYes Then
Call ByID(TmpID)
End If
RefreshData
End Sub
Private Sub Cmd_Modi_Click()
'初始化FrmPriceEdit信息
= (0)
ID = (2)
ketTypeID = (3)
ketType = (4)
count = (5)
ordumber = OriRecordumber
= True
1
RefreshData
End Sub
(6)票价信息管理窗体(FrmPriceManage)代码
Private Sub Cmd_Add_Click()
'初始化FrmDiscountEdit信息
minalame = ""
YCode = ""
ID = ""
ketPrice = ""
= False
manalID = OriTerminalID
RefreshData
End Sub
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub Cmd_Del_Click()
Dim TmpID As Long
If = True Then
MsgBox "请选择记录"
Exit Sub
精品文档,欢迎下载
可编辑
End If
TmpID = (0)
If MsgBox("是否删除当前行", vbYeso, "请确认") = vbYes Then
Call ByID(TmpID)
End If
RefreshData
End Sub
Private Sub Cmd_Modi_Click()
'初始化FrmPriceEdit信息
ID = (0)
minalame = (1)
YCode = (2)
ketPrice = (3)
= True
RefreshData
End Sub
Private Sub Cmd_Search_Click()
GridREfresh '根据条件查询票价信息
End Sub
Private Sub Form_Load()
GridREfresh
End Sub
总结:本系统的整个设计开发是对客票系统网络化的一次的尝试,最
后完成的这个系统也只是B/S结构客票系统的一个模型,它的使用对
象是市级,比如成都火车站总站做为服务器,成都市内其它的售票窗
口做为客户端,如果要推广到全国使用,还面临很多问题,比如全国
整个铁路系统包括很多分局,各自权限不一样,他们又下属很多结点,
但是本系统的设计和实现证明了全国铁路客票系统的网络化是可行
的。
.
精品文档,欢迎下载
本文发布于:2023-05-27 13:16:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/falv/fa/86/121157.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |