标准的铁路系统设计模块.doc

上传人:精*** 文档编号:1031171 上传时间:2024-03-24 格式:DOC 页数:19 大小:173.80KB
下载 相关 举报
标准的铁路系统设计模块.doc_第1页
第1页 / 共19页
标准的铁路系统设计模块.doc_第2页
第2页 / 共19页
标准的铁路系统设计模块.doc_第3页
第3页 / 共19页
标准的铁路系统设计模块.doc_第4页
第4页 / 共19页
标准的铁路系统设计模块.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、目录1.设计内容12.概要设计53.详细设计74.程序源码95.程序运行与调试166.总结177.参考文献18 18 1. 设计内容铁路售票系统软件可以完善目前铁路售票系统,使之能跟上时代的发展。该软件理论上能够实现于铁路部门的售票系统,其目的在于在原有的系统基础使得铁路售票实名化,以期实现完善日常生活中铁路售票的各种缺陷。数据流图:顶层图铁路售票管理系统售票员旅 客购票信息 售票信息0层图查询处理买票购票信息 可供票 车票 缺票记录 车票记录 车票汇总售票1层图查询处理买票购票信息 可供票 车票 售票记录 车票记录 订票1层图处理订票查询查询旅客信息订票信息 核对后的旅客信息 可供票 车 票

2、 订票记录 车票记录 换票一层图处理换票换票信息 换票记录退票1层图处理退票退票信息 退票记录ER图:终点站始发站车次车型票号日期座位号开车时间票价 始发站原火车票票号车 票终点站新火车票票号票号 N N N N 订购数目 换票 售票 退票 订票换票手续费用户名退票手续费 退票时间换票时间票价 1 1 1 1 乘车日期旅 客银行卡号身份证号车票与顾客之间的联系售票 N:1车票(票号,车次,日期,车型,票价,开车时间,座位号,始发站,终点站)旅客(身份证号,银行卡号,票号)换票 N:1车票(票号,车次,日期,车型,票价,开车时间,座位号,始发站,终点站)旅客(身份证号,银行卡号,票号,换票时间,

3、换票手续费)退票N:1车票(票号,车次,日期,车型,票价,开车时间,座位号,始发站,终点站)旅客(身份证号,银行卡号,票号,退票时间,退票手续费)订票N:1车票(票号,车次,日期,车型,票价,开车时间,座位号,始发站,终点站)旅客(身份证号,银行卡号,票号,乘车日期,交易时间,票价,订购数目,始发站,终点站)数据字典:名字:购票信息别名:描述:记录火车票的销售情况定义:售票记录=已卖出的车票数量位置:售票记录名字:车票信息别名:描述:车票有关信息定义:车票车票编号车票类型车次信息座位信息票价信息+乘车时间位置:输出到打印机 名字 名字:换票信息别名:描述:旅客换票的相关信息定义:换票信息=原车

4、票票号+新车票票号+换票时间+换票手续费位置:换票记录 名字:订票信息别名:描述:旅客订购车票的相关信息定义:订票信息=车次信息+车票编号+座位信息+票价信息+乘车时间+身份证号码+银行卡号位置:订票记录名字:退票信息别名:描述:旅客退票的相关信息定义:退票信息=车票编号车票类型车次信息座位信息票价信息+乘车时间位置:退票记录2. 概要设计火车售票系统 任务:通过此系统可以实现售票、退票、订票剩余情况查询等功能。 每张车票包含车次、座位信息、始发站、终点站等信息。要求:在售票、退票、订票票等环节中,都必须显示出车票的信息,即车次、座位情况。为简单起见,在此假设所有出售的车票均为同一车次的车票。

5、退票时,必须是车站售出的车票才能退,否则视为无效票,不能退票。3 设计概述(设计思路). 所涉及的信息有:终点站信息(终点站名、车次号、乘车日期、票价等),已订票的客户名单(包括姓名、车次、身份证号、银行卡号、订票量) . 作为示意系统,全部数据可以只放在内存中;. 系统能实现的操作和功能如下:a. 查询:根据旅客提出的终点站名输出下列信息:车次、日期、票额、票价; b. 订票:根据旅户提出的要求(车次号、乘车日期、订票数)查询该车次票额情况,若有余票,则为旅客办理订票手续,输出座位号;c. 换票:根据旅客提供的情况(日期、车次),为旅客办理换票手续;d. 退票:根据旅客提供的情况(日期、车次

6、),为旅客办理退票手续; 铁路售票管理系统售票系统订票系统退票系统换票系统模块功能图:退票管理查询管理票务管理票价管理用户管理前台退票票价信息修改票价信息录入票价信息删除票价信息查询车次信息查询前台售票前台退票用户信息添加用户信息删除用户信息修改退票信息3. 详细设计程序流程图:开 始是否买票 F T 售票系统是否换票 F T 退票系统换票系统 是否订票 T F 退票信息换票信息订票系统售票系统处理换票处理退票订票信息购买信息查询车票记录查询旅客信息处理买票处理订票停 止数据库结构:车辆表字段名数据类型长度是否主键允许为空车辆编号Int4是否车型Varchar8否否座位数smallInt2否否

7、车票表字段名数据类型长度是否主键允许为空票号Int4是否乘车日期Time8否否车次Varchar5否否站名Varchar10否否票价Float10否否座位号smallInt3否否退票否char1否否 价格表字段名数据类型长度是否主键允许为空终点站编号char10是否起始站char10否否终点站char10否否拼音码char5否否车次Varchar5否否票价Float10否否4. 程序源码(1)登陆窗体(FrmLogin)代码Public PasswordKey As StringPublic NameKey As StringPublic Try_times As Integer取消键退出登陆

8、界面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.SetFocus Exit Sub End IfEnd SubPrivate Function MakeStr() As String NameKey = Str(txtUser) PasswordKey = S

9、tr(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 If End If 判断密码是否正确 MyUser.GetINfo (NameKey) If MyUser.Pwd PasswordKey Then MsgBox 密码错误 Try_times = Try_ti

10、mes + 1 If Try_times = 3 Then MsgBox 您已经三次尝试进入本系统,均不成功,系统将关闭 DBapi_Disconnect End Else Exit Function End IfEnd If 登陆成功,将当前用户的信息保存在CurUser中 CurUser.UserName = MyUser.UserName CurUser.User_type = MyUser.User_type CurUserEmpID = MyUser.EmpID 关闭自己并显示主窗体 Unload Me FrmMain.ShowEnd Function(2)主窗体(FrmMain)代

11、码设置数据库连接字符串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_Click() FrmPriceManage.ShowEnd SubPrivate Sub SPGL_Click() FrmTicketSell.ShowEnd SubPrivate Sub TPGL_Clic

12、k() FrmBack.ShowEnd SubPrivate Sub XGMM_Click() With FrmUserEdit .OriUser = CurUser.UserName .txtUserName = CurUser.UserName If CurUser.User_type = 1 Then .ComboType.AddItem 系统管理员 Else .ComboType.AddItem 普通用户 End If .ComboType.ListIndex = 0 .ComboType.Enabled = False .Modify = True .Show 1 End WithE

13、nd 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_Cancel_Click() Unload MeEnd SubPrivate Sub Cmd_Search_Click() GridRsfresh 根据条件查询所有信息End SubPrivate Sub Cm

14、d_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 As String Dim cost As Long ComboDate = Trim(ComboDate.Text) TNPY = Trim(txtTNPYCode) CarID = Trim(txtCarI

15、D) 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= & Trim(txtTNPYCode) & 根据输入的信息,从表里得出查询结果rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata.EOF Then

16、MsgBox 车次或拼音码输入有误,请重新输入!, , Error! ComboDate.Text = TNPYCode = txtCarID = ComboDate.SetFocus ElseIf Len(TNPYCode) = 0 Then MsgBox 请输入拼音码 txtTNPYCode.SetFocus ElseIf Len(TNPYCode) 4 Then MsgBox 拼音码过长,无效! txtCarID.SetFocus ElseIf Len(CarID) = 0 Then MsgBox 请输入车次编号! txtCarID.SetFocus ElseIf IsNumeric(N

17、umber) = 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) & & and Seat.CarID= & Trim(txtCarID.Text) & rsdata.Open strQuery, cnnrsdata, , , adCmdText 统计本车次的剩余的座位数

18、 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 count(*) as total from Seat where Seat.sell=false and Seat.date= & _ Trim(ComboDate) & & and Seat.CarID=

19、& Trim(txtCarID) & rsdata.Open strQuery, 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 表 ,将刚卖出的座位号设为 false strQuery = select *

20、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 rsdata!sell = True rsdata.Update End If ComboDate = txtTNPYCode = txtCarID = ComboDate.SetFocus cost =

21、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 strseatno As String Dim strTnl As String Dim response As String Dim ticketinformation As String strdate = Tri

22、m(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= & _ Trim(Combodate.Text) & & and SellTicket.Sno= & Trim(ComboSNno.Text) & & _ and SellTicket.carID= & T

23、rim(ComboCarID.Text) & 检查车票日期、车次和座位是否有效 rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata.EOF Then MsgBox 你所要退的票为无效票或是你的输入有问题! Else rsdata.Close strQuery = Select * From SellTicket Where SellTicket.date= & Trim(Combodate.Text) & _ & and SellTicket.sno= & Trim(ComboSNno.Text) & & _ and SellTic

24、ket.CarID= & Trim(ComboCarID.Text) & rsdata.Open strQuery, cnnrsdata, , , adCmdText rsdata.MoveFirst Combodate.Text = rsdata!Date ComboSNSno.Text = rsdata!sno ComboCarID.Text = rsdata!CarID 车票有效,确认日期、车次和座位号,确认是否退票 ticketinformation = 日期: & strdate & & 车次: & strCarID & & 座位号: & strsno & response = Ms

25、gBox(ticketinformation, vbOKCancel + vbInformation, 是否真要退票?) If response = 1 Then 更改 SellTicket 表 rsdata.Close strQuery = select * from SellTicket rsdata.Open strQuery, cnnrsdata, , , adCmdText rsdata.MoveFirst Dim i As Integer For i = 1 To rsdata.RecordCount If rsdata!Date = strdate And rsdata!sno

26、= strsno And rsdata!sno = strseat Then rsdata.Delete End If rsdata.MoveNext Next i rsdata.Close 将刚退的票设为可卖 strQuery = select * from line where Seat.date= & strdate & & _ and Seat.CarID= & strCarID & & and Seat.sno= & strsno & rsdata.Open strQuery, cnnrsdata, , , adCmdText If rsdata!book = True Then r

27、sdata!book = False rsdata.Update End If Combodate.Text = ComboSno.Text = Combodate.SetFocus MsgBox 退票已成功! Else rsdata.Close Combodate.Text = ComboSno.Text = Combodate.SetFocus End If End If End Sub(6)票价信息管理窗体(FrmPriceManage)代码Private Sub Cmd_Add_Click() 初始化FrmDiscountEdit信息 FrmPriceEdit.txtTerminalN

28、ame = FrmPriceEdit.txtTNPYCode = FrmPriceEdit.txtCarID = FrmPriceEdit.txtTicketPrice = FrmPriceEdit.Modify = False FrmPriceEdit.VarTermanalID = OriTerminalID FrmPriceEdit.Show RefreshDataEnd SubPrivate Sub Cmd_Cancel_Click() Unload MeEnd SubPrivate Sub Cmd_Del_Click() Dim TmpID As Long If Adodc1.Rec

29、ordset.BOF = True Then MsgBox 请选择记录 Exit Sub End If TmpID = Adodc1.Recordset.Fields(0) If MsgBox(是否删除当前行, vbYesNo, 请确认) = vbYes Then Call MyFam.DeleteByID(TmpID) End If RefreshDataEnd SubPrivate Sub Cmd_Modi_Click() 初始化FrmPriceEdit信息 FrmPriceEdit.txtCarID = Adodc1.Recordset.Fields(0) FrmPriceEdit.tx

30、tTerminalName = Adodc1.Recordset.Fields(1) FrmPriceEdit.txtTNPYCode = Adodc1.Recordset.Fields(2) FrmPriceEdit.txtTicketPrice = Adodc1.Recordset.Fields(3) FrmPriceEdit.Modify = True FrmPrice.Show RefreshDataEnd SubPrivate Sub Cmd_Search_Click() GridREfresh 根据条件查询票价信息End SubPrivate Sub Form_Load() Gri

31、dREfreshEnd Sub5. 程序运行与调试测试在设计软件中占有重要的地位,在本系统设计中测试占用了大量的时间,花费了许多的精力,因为测试直接影响着软件的质量。如果在测试中没有把握好,很可能对整个系统造成严重的后果。软件测试的目的是尽可能多的发现软件存在的错误,以提高软件质量及其可靠性。测试可分为以下几个步骤:单元测试(模块测试)针对各个程序单元或模块都进行单独测试这一步尤为重要,我把自己做的先测试一下,正常运行后再和别的模块链接在一起。集成测试这一步就是把已通过单元测试的模块连接起来。着重检验模块间的接口以及软件设计中的一些问题。通常使用于功能测试。在进行集成测试时,可采用自顶向下逐步

32、增值测试方式,也可采用自底向上非增值式的测试方式,在本系统中我们采用了上一种方法,直至所有模块都已集成到系统为止。1. 验收测试确认已开发的软件是否能满足标准,是否合格。验收测试包括有效性测试、系统测试和按合同要求进行的验收测试。只有通过了这种验收测试的软件,才能正式交会使用,系统经过一些调试后,基本上没有太大的问题,至此,系统的调试已基本完成。2.系统评价系统评价的目的是为了估计系统的技术能力、工作性能和系统的利用率。系统评价度量了系统当前的性能,并为了进一步改善未来的工作提供了依据,因此评级报告的内容不仅应着于现有的系统的长处和缺点,而且还应提出改进建议。当评价目的不同时,可以按不同的方式

33、,以不同的标准对系统进行评价。系统评价是在系统过续运行的过程中,不断地进行的。6. 总结回顾起此次课程设计,至今我们仍感慨颇多,的确自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了

34、自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如数字字典、程序流层图通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。我做的是铁路售票管理系统。第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,只好拿出书本重新复习一下。特别是数据字典、程序流程图的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了编程的基本过程和方法。 经过一波三折,终于开始正式编程。编程是一件很枯燥很无聊的事情,

35、还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,自己进步的证明。通过这次课程设计,使我对软件工程有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;通过实践的学习,我认识到学好计算机要重视实践操作,所以后在学习

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922