汽车售票系统详细分析.docx

上传人:b****8 文档编号:10919079 上传时间:2023-02-23 格式:DOCX 页数:28 大小:142.20KB
下载 相关 举报
汽车售票系统详细分析.docx_第1页
第1页 / 共28页
汽车售票系统详细分析.docx_第2页
第2页 / 共28页
汽车售票系统详细分析.docx_第3页
第3页 / 共28页
汽车售票系统详细分析.docx_第4页
第4页 / 共28页
汽车售票系统详细分析.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

汽车售票系统详细分析.docx

《汽车售票系统详细分析.docx》由会员分享,可在线阅读,更多相关《汽车售票系统详细分析.docx(28页珍藏版)》请在冰豆网上搜索。

汽车售票系统详细分析.docx

汽车售票系统详细分析

第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表,将刚卖

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1