车站售官票管理系统数据库课程设计报告.doc

上传人:sccc 文档编号:4703599 上传时间:2023-05-09 格式:DOC 页数:24 大小:813.02KB
返回 下载 相关 举报
车站售官票管理系统数据库课程设计报告.doc_第1页
第1页 / 共24页
车站售官票管理系统数据库课程设计报告.doc_第2页
第2页 / 共24页
车站售官票管理系统数据库课程设计报告.doc_第3页
第3页 / 共24页
车站售官票管理系统数据库课程设计报告.doc_第4页
第4页 / 共24页
车站售官票管理系统数据库课程设计报告.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《车站售官票管理系统数据库课程设计报告.doc》由会员分享,可在线阅读,更多相关《车站售官票管理系统数据库课程设计报告.doc(24页珍藏版)》请在三一办公上搜索。

1、 河南理工大学万方科技学院课程设计报告2010 2011学年第 一 学期课程名称 数据库系统原理 设计题目 车站售票管理系统 学生姓名 王邦政 学 号 0828040051 专业班级 通信3班 指导教师 刘小燕 2010 年 09 月 25 日目 录1、需求求报告分析11、1 概述11、2 系统功能分析11、3 数据流图21、4 数据字典32、概念及逻辑结构设计72、1 ER图 7 2、2 关系模式8 2、3数据结构9 3、数据库设计104、系统软件结构设计 114、1 系统功能设计11 4、2 其它需求12 4、3说明125、程序模块设计 155、1 功能模块详细设计155、2 界面设计16

2、5、3 附录:系统程序源代码16参考文献251系统需求分析报告1.1概述汽车售票管理系统主要用于车站日常的票务处理。车售票管理系统在正常运行中需要对使用该系统的主要是汽车站售票人员、汽车站售票工作的管理人员与系统管理员。为达到操作过程中的直观、方便、实用、安全等要求,我们组在这个系统中采用模块化程序设计的方法,便于系统功能的组合和修改,以及扩充和维护。12系统功能分析根据需求分析,本系统要实现以下的基本功能。1登录功能:分为汽车站售票人员和系统管理员两种权限登陆。用户通过输入不同用户名和密码进行身份验证,系统通过用户名和密码判断不同用户的权限,从而确定该用户可以执行的操作。2车票信息查询功能:

3、由汽车站的普通售票人员通过不同的检索入口,查询车票信息,并进行排序。3修改功能:汽车站售票人员、汽车站售票工作的管理人员能够修改自身的用户名和密码,系统管理员则能实现系统用户与普通用户的添加,修改普通用户与系统管理员的密码,以此确保该系统能够安全操作,避免不必要的损失。4汇总功能:对当天车票的信息进行汇总。图1-1 顶层图图1-2 0层图图1-3 售票1层图顾客售票人员车站售票管理系统购票信息售票信息顶层图购票信息查询可供票处理买票车票车票记录车票汇总缺票记录0层图售票记录购票信息1层图查询可供票处理买票车票售票记录车票记录订票信息查询顾客信息核对后的顾客信息查询可供票处理订票车票订票记录车票

4、记录图1-4 订票1层图退票信息处理退票退票记录图1-5 退票1层图13数据流图14数据字典1.数据项 票号、票价、车次、日期、车型、开车时间、票种、座位号、起始站、终点站、身份证号、银行卡号、数量、退票时间、退票手续费、订票时间、订票手续费2数据结构表11 车票的数据结构DS04-01 车票DS04-02:车票标志DS04-03:车次信息DS04-04:座位信息DS04-05:票价信息I1:车票编号I3:起始站I8:座位号I9:全票价I2:车票类型I4:车次编号I10:折扣I5:终点站I6:发车时间I7:乘车日期3数据流数据流编号:D04-01数据流名称:车票简述:车票有关信息数据流来源:用

5、户执行售票操作结果数据流去向:购票旅客数据流组成:车票编号+车票类型+车次信息+座位信息+票价信息4数据存储 售票记录:票号,起始站,终点站,票价,车次,日期,开车时间,车型,票种,座位号,售出时间 退票记录:票号,起始站,终点站,票价,车次,日期,开车时间,车型,票种,座位号,退票时间 订票记录:票号,起始站,终点站,票价,车次,日期,开车时间,车型,票种,座位号,订票时间,顾客身份证号缺票记录:票号,起始站,终点站,票价,车次,日期,开车时间,车型,票种 车票记录:票号,起始站,终点站,票价,车次,日期,开车时间,车型,票种,座位号,售出时间,票数5处理过程 车票汇总:工作人员将一天所售出

6、的票进行统计,包括票数,票类,形成确定的车票记录。 查询:将顾客需要的车票信息输入系统,并查询其是否可供应。 查询顾客信息:为订票所设,将顾客的准确信息记录,为其预定所车票。 处理买票:进行买票交易,把顾客需要的票(可供应)售出,并在系统中作相应记录,确定车票记录。 处理订票:进行订票交易,工作人员为顾客预定其所需车票,并在系统中作相应记录,确定订票记录。 处理退票:进行退票交易,工作人员为顾客办理退票手续,并在系统中作相应记录,确定退票记录。 2概念及逻辑结构设计 2.1 E-R图本系统根据以上的设计规划出的实体有:车票实体、车站实体、顾客实体。各个实体具体的描述-图如下: 图2-1车票ER

7、图 图2-2 顾客ER图 换票退票时间顾客售票退票票号退票手续费车票新票号原票号换票时间换票手续费订票日期交易时间数量起始站终点站身份证号交易金额1N1N1N1N 图2-3实体之间ER图2.2关系模型:车票与顾客之间的联系售票 1:N车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)顾客(身份证号,银行卡号,票号)退票1:N车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)顾客(身份证号,银行卡号,票号,退票时间,退票手续费)订票1:N车票(票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)顾客(身份证号,银行卡号,票号,

8、日期,交易时间,交易金额,数量,起始站,终点站)2.3数据库结构表2.1 Car表详细设计字段名数据类型是否主键是否必填字段说明CarID文本是是车次编号CarType数字否否客车型号PlateNumber文本否是车牌号CarHolder文本否否责任人RunningWay文本否否经营路线SeatLimit数字否是座位限额OutSetTime日期/时间否是发车时间表2.2 Seat表详细设计字段名数据类型是否主键是否必填字段说明CarID文本否是车次编号Date时间/日期否是日期Terminal文本否是终点站Selled是/否否否票是否售出Price数字否是车票价格表2.3 PriceDisco

9、unt表详细设计字段名数据类型是否主键是否必填字段说明RecordNumber自动编号是是记录号TicketTypeID数字否是车票类型Discount数字否是折扣CarID文本否是车次表2.4 Price表详细设计字段名数据类型是否主键是否必填字段说明TerminalID文本是是终点站编号OutStation文本否否起始站TerminalName文本否是终点站TNPYCode文本否是拼音码CarID文本否是车次编号TicketPrice数字否是票价表2.5 Type表详细设计字段名数据类型是否主键是否必填字段说明RecordID自动编号是是记录号TicketTypeID数字否是车票类型编号T

10、icketType文本否是车票类型3数据库设计本车站售票系统有两个实体,分别是车票和顾客,利用SQL建表如下:车票顾客4 系统软件结构4.1.系统功能设计汽车站售票管理系统主要设有五个主要功能模块:分别是车次管理、票价管理、票务管理、用户管理和查询管理。如图4-1所示。1 车次管理模块该模块主要实现车次信息的编辑。车次管理中的数据源为Access数据库中Car表,在此管理部分中,能够使用界面操作实现车次信息的编辑,并将数据库中的数据按照编辑的要求来及时更新数据表中的相关数据。2票价管理模块该模块主要实现票价信息的录入、修改与删除以及票价折扣信息的录入、修改与删除。 票价详细信息的录入、修改、删

11、除,它的数据源为Access数据库的Price表。在此管理部分中,通过票价管理(FrmPriceManage)界面来选择记录并决定执行何种操作,是修改、添加或删除。当命令为修改或者添加时则自动跳转到票价编辑窗体(FrmPriceEdit)实现票价信息的编辑并更新数据库中相应数据记录。3票务管理模块票务管理部分实现前台售票、前台退票功能。主要完成售票、远程售票、废票、取消废票功能、改签票、退票、取消退票功能、补票、售票查询和票款结算单填写等功能。4用户管理模块该模块主要实现用户添加,用户信息修改与用户的删除。所有系统用户的管理,包括系统普通用户与系统管理员。此管理模块数据源为Access数据库的

12、Users表。在系统主界面中首先进入的是名称为FrmUserMan的用户管理主窗体,通过提取用户名、用户类型来查看用户具体信息,选择添加或删除用户进入名为FrmUserEdit的用户编辑界面进行操作,操作完成便更新数据库数据。5查询管理模块 该模块主要实现拥护通过查询界面可以根据条件进行车次时刻、车次票价查询。汽车站售票管理系统票务管理票价管理车次管理用户管理查询管理车次信息编辑票价信息录入票价信息修改票价信息删除前台售票前台退票用户信息添加票价信息修改票价信息删除车次信息查询票价信息查询 4-1功能模块图42其他需求汽车站售票系统数据库中的数据量十分庞大,而且更新速度十分快。在数据大小方面要

13、求数据的属性要设置合理,假如是数据的属性值越大,则数据本身所占用的容量也就十分的庞大,不但会造成传输的不方便甚至错误,也更加重系统的负担,有可能削弱系统运行速度,使得系统无法达到预期的目的。另外,在整个系统当中要确保数据在保存与传递过程中的安全,以免发生严重的错误,造成巨大的损失。43说明售票 正常出售本站所有车次车票,并按要求打印出车票。 远程售票 正常出售远程车站所有车次车票,并按远程车站的要求打印出车票。 废票 在正常售票过程中, 可能因操作失误或打印机械故障等原因造成错票而作废车票。 取消废票 当废票时,发现废的票是不应该废的,即为正常票,需要通过取消废票来实现。 远程废票 对所售远程

14、车票作废票处理。 退票 在正常退票时间内办理退票,并根据退票规定收取一定的手续费。 远程退票 对所售远程车票作退票处理。 取消退票 当退票时,发现退的票是不应该退的,即为正常的票,需要通过取消退票来实现。 改签票 由于乘客或车站某种原因需对已出售的车票作更换车次的车票。改签仅允许改签一次。 远程改签票 对所售远程车票作改签处理。 注销票 删除某些由于调试程序所用的票记录及其影响。 补票 只能在超过售票时限后进行,且在未发车之前,在统计时注意对非微机售票的票的处理(例如:剪刀票)。 售票查询 通过一定的授权和设定售票员可以查询在设定时间范围内或多少张票以前的出售、作废、改签和退票的情况,并对有权

15、限的人员可有累计票款服务。 票款结算单 售票员每天售完车票后填写每日结算单,以便财务人员查询。 重打车票 在正常售票过程中, 可能因打印机械故障等原因造成错票而重新打印车票。 售票类型 车票中所有联都应有的信息为车次、起止站点、票价、发车日期时间,而正联所特有的信息为售票员工号、检票口、是否改签票、车票上应有的信息:车票固有票号、计算机打印的票号、票号条形码(仅用于自动检票的车站)。 (2)车票类型 1)正常班次车票:发售的当天或预售正常轮班车次的车票。 2)远程售票:发售远程车站车次的车票,其打印格式同远程车站。 3)流水班次车票:发售的流水班次车票。 4)退票和改签票: 退票分为 A、正常

16、退票。办理标准规定退票时间内的退票。 B、强行退票。在超过时限后退票,即强行退票。 补票:补票只能在超过售票时限后进行,且必须在未发车之前。 订票:设定定票有效期限,在有有效时限保留座位,有效时外释放座位等。 票种的定义 全价票 半价票 允许设定可用标志,自由定义名称。 免票 只允许设定可用标志。 优惠票1-3 允许设定可用标志,自由定义名称。 折扣票 对原票价的基础上进行一定的打折,有严格的权限控制。 5 程序模块设计5.1功能模块详细设计5.1.1 车次管理模块代码实现Private Sub Cmd_OK_Click()检查用户录入数据的有效性If Len(Trim(txtCarID) =

17、 0 Then MsgBox 请输入车次编号 txtCarID.SetFocus Exit Sub End If If Len(Trim(txtOutTime) = 0 Then MsgBox 请输入发车时间 txtOutTime.SetFocus Exit Sub End If 把用户录入的数据赋值到数据库对象变量中 With MyType .CarID = MakeStr(txtCarID) 车次编号 .OutSetTime = MakeStr(TimeEdit) 发车时间 .RunninWay = MakeStr(WayEdit) 经营路线 .CarType = MakeStr(Type

18、Edit) 车辆类型 .PlateNumber = MakeStr(CNnEdit) 车牌号 .CarHolder = MakeStr(HolderEdit) 责任人 .SeatLimit = MakeStr(LSeatEdit) 额定座位 根据变量Modify决定是插入新数据,还是修改已有的数据 If Modify = False Then .Insert 插入新数据 Else 修改 .Update (nId) 修改已有的数据End IfEnd With Unload Me 关闭窗口5.1.2 票价管理模块代码实现 票价管理部分代码如下(信息添加过程):Private Sub Cmd_Add

19、_Click() 初始化FrmDiscountEdit信息 FrmPriceEdit.txtTerminalName = FrmPriceEdit.txtTNPYCode = FrmPriceEdit.txtCarID = FrmPriceEdit.txtTicketPrice = FrmPriceEdit.Modify = False FrmPriceEdit.VarTermanalID = OriTerminalID FrmPriceEdit.Show RefreshDataEnd Sub5.1.3用户管路模块代码实现(编辑窗体代码):Private Sub Cmd_OK_Click()

20、If Trim(txtUserName) = Then MsgBox 请输入用户名 txtUserName.SetFocus Exit Sub End If If Len(txtPass) 5 Then MsgBox 密码长度不能小于5 txtPass.SetFocus txtPass.SelStart = 0 txtPass.SelLength = Len(txtPass2) Exit Sub End If If txtPass txtPass2 Then MsgBox 密码和确认密码不相同,请重新确认txtPass2.SetFocus txtPass2.SelStart = 0 txtPa

21、ss2.SelLength = Len(txtPass2) Exit Sub End If 判断是否存在同名用户 With MyUser If Modify = False Or OriUser Trim(txtUserName) Then If .In_DB(Trim(txtUserName) = True Then MsgBox 用户名已存在,请重新输入 txtUserName.SetFocus txtUserName.SelStart = 0 txtUserName.SelLength = Len(txtUserName) Exit Sub End If模块中的程序代码如下:Public

22、 adoCon As New ADODB.ConncetionPublic adors As New ADODB.Recordset连接数据库Public Sub main() Set adoCon = New ADODB.Connection adoCon.Open = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & 汽车站售票管理系统.mdb & ;Persist Security Info=False FrmLogin.Show FrmLogin.txtUser.SetFocusEnd Sub53附录:系统程序源代码(

23、1)登陆窗体(FrmLogin)代码Public PasswordKey As StringPublic NameKey As StringPublic Try_times As Integer取消键退出登陆界面Private Sub Cmd_Cancel_Click()Unload MeEnd SubPrivate Sub Cmd_OK_Click() 数据库有效性检查If Trim(txtUser) = Then MsgBox 请输入用户名txtUser.SetFocus Exit SubEnd IfIf Trim(txtPwd) = Then MsgBox 请输入密码 txtPwd.Se

24、tFocus Exit Sub End IfEnd SubPrivate Function MakeStr() As String NameKey = Str(txtUser) PasswordKey = Str(txtPwd) 判断用户是否存在 If MyUser.In_DB(NameKey) = Flase Then MsgBox 用户名不存在 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Function End I

25、f End If 判断密码是否正确 MyUser.GetINfo (NameKey) If MyUser.Pwd PasswordKey Then MsgBox 密码错误 Try_times = Try_times + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Function End IfEnd If 登陆成功,将当前用户的信息保存在CurUser中 CurUser.UserName = MyUser.UserName CurUser.User_type = My

26、User.User_type CurUserEmpID = MyUser.EmpID 关闭自己并显示主窗体 Unload Me FrmMain.ShowEnd Function(2)主窗体(FrmMain)代码设置数据库连接字符串Conn = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & 汽车站售票管理系统.mdb & ;Presist Security Info=False系统登陆界面FrmLogin.ShowEnd SubPrivate Sub PJCX_Click()End SubPrivate Sub PJGL_C

27、lick() FrmPriceManage.ShowEnd SubPrivate Sub SPGL_Click() FrmTicketSell.ShowEnd SubPrivate Sub TPGL_Click() FrmBack.ShowEnd SubPrivate Sub XGMM_Click() With FrmUserEdit .OriUser = CurUser.UserName .txtUserName = CurUser.UserName If CurUser.User_type = 1 Then .ComboType.AddItem 系统管理员 Else .ComboType.

28、AddItem 普通用户 End If .ComboType.ListIndex = 0 .ComboType.Enabled = False .Modify = True .Show 1 End WithEnd SubPrivate Sub YHGL_Click() If CurUser.User_type = 1 Then FrmUserMan.Show Else MsgBox 没有权限 End IfEnd SubPrivate Sub ZKGL_Click() FrmDiscount.ShowEnd Sub(3)售票窗体(FrmTicketSell)代码Private Sub Cmd_C

29、ancel_Click() Unload MeEnd SubPrivate Sub Cmd_Search_Click() GridRsfresh 根据条件查询所有信息End SubPrivate Sub Cmd_Sell_Click() Dim ComboDate As String, TNPYCode As String, CarID As String Dim left As Integer Dim seatnumber As String Dim strseat As String Dim ticketinformation As String Dim informationbook A

30、s String Dim cost As Long ComboDate = Trim(ComboDate.Text) TNPY = Trim(txtTNPYCode) CarID = Trim(txtCarID) Dim strcnn init_ado strQuery = Select CarID,OutStation,Terminal,OutSetTime,Date,Sno From Seat join Price on Seat.CarID=Price.CarID Where Seat.date= & _ Trim(ComboDate) & & and Price.TNPYCode= &

31、 Trim(txtTNPYCode) & 根据输入的信息,从表里得出查询结果rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata.EOF Then MsgBox 车次或拼音码输入有误,请重新输入!, , Error! ComboDate.Text = TNPYCode = txtCarID = ComboDate.SetFocus ElseIf Len(TNPYCode) = 0 Then MsgBox 请输入拼音码 txtTNPYCode.SetFocus ElseIf Len(TNPYCode) 4 Then MsgBox 拼音码

32、过长,无效! txtCarID.SetFocus ElseIf Len(CarID) = 0 Then MsgBox 请输入车次编号! txtCarID.SetFocus ElseIf IsNumeric(Number) = False Then MsgBox 车次编号应为数字! txtCarID.Text = txtCarID.SetFocus Else rsdata.Close strQuery = select count(*) as total from Seat where Seat.sell=false and Seat.date= & _ Trim(ComboDate.Text)

33、 & & and Seat.CarID= & Trim(txtCarID.Text) & rsdata.Open strQuery, cnnrsdata, , , adCmdText 统计本车次的剩余的座位数 rsdata.MoveFirst left = rsdata!total If left = 0 Then MsgBox 本车次已经客满! ComboDate.Text = ComboSNno.Text = txtTNPYCode.Text = txtCarID.Text = ComboDate.SetFocus Else rsdata.Close strQuery = select c

34、ount(*) as total from Seat where Seat.sell=false and Seat.date= & _ Trim(ComboDate) & & and Seat.CarID= & Trim(txtCarID) & rsdata.Open strQuery, cnnrsdata, , , adCmdText 统计本车次的剩余的座位数 rsdata.MoveFirst rsdata.AddNew rsdata!Date = comdate rsdata!Seat = comSNno rsdata!CarID = CarID rsdata!TNPYCode = TNP

35、YCode rsdata!sno = Trim(seatnumber) rsdata.Update 添加新记录 更新 Seat 表 ,将刚卖出的座位号设为 false strQuery = select * from Seat where Seat.sno= & Trim(seatnumber) & _ and Seat.date= & Trim(ComboDate) & & _ and SeatCarID= & Trim(txtCarID) & rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata!sell = False Then

36、 rsdata!sell = True rsdata.Update End If ComboDate = txtTNPYCode = txtCarID = ComboDate.SetFocus cost = Val(Adodc3.Recordset.Fields(3) txtCharge = Val(txtMoney) - Val(Adodc3.Recordset.Fields(3) End Sub(4)退票窗体(FrmBack)代码Private Sub Cmdback_Click() Dim strdate As String Dim strline As String Dim strse

37、atno As String Dim strTnl As String Dim response As String Dim ticketinformation As String strdate = Trim(Combodate.Text) strCarID = Trim(txtCarID.Text) strseatno = Trim(ComboSeatno.Text) strTnl = Trim(ComboTerminal.Text) Dim strcnn init_ado strQuery = Select * From SellTicket Where SellTicket.date= &

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号