汽车售票系统(详细分析)

更新时间:2024-11-05 22:36:58 阅读: 评论:0


2023年5月27日发(作者:prosperous的名词)

可编辑

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 界面设计

系统主界面设计如下,主界面顶端显示不同管理模块,点击则进入相应界

面。下端显示系统当前所处日期和时间。

53附录:系统程序源代码

(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 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26