版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程课程设计报告软件工程课程设计报告 班级:班级: 计计 hr07-3 姓名:姓名: 邓晓莹邓晓莹 学号:学号: 0720010106 指导教师:指导教师: 徐娇月徐娇月 辽宁工程技术大学软件学院 目目录录 1.1. 设计内容设计内容 .1 1 2.2. 概要设计概要设计 .5 5 3.3. 详细设计详细设计 .7 7 4.4. 程序源码程序源码 .9 9 5.5. 程序运行与调试程序运行与调试 .1616 6.6. 总结总结 .1717 7.7. 参考文献参考文献 .1818 1. 设计内容设计内容 铁路售票系统软件可以完善目前铁路售票系统,使之能跟上时代的发展。 该软件理论上能够实现于
2、铁路部门的售票系统,其目的在于在原有的系统基础 使得铁路售票实名化,以期实现完善日常生活中铁路售票的各种缺陷。 数据流图数据流图: 顶层图顶层图 购票信息 售票信息 0 0 层图层图 购票信息 可供票 车票 缺票记录 车票记录 售票售票 1 1 层图层图 购票信息 可供票 车票 售票记录 车票记录 旅 客 铁路售票 管理系统 售票 员 查询处理买票 车票汇总 查询处理买票 订票订票 1 1 层图层图 订票信息 核对后的旅客信息 可供票 车 票 订票记录 车票记录 换票一层图换票一层图 换票信息 换票记录 退票退票 1 1 层图层图 退票信息 退票记录 查询旅客信息查询处理订票 处理退票 处理换
3、票 erer 图:图: n n n n 换票 售票 退票 订票 1 1 1 1 车票与顾客之间的联系 售票 n:1 车票(票号,车次,日期,车型,票价,开车时间,座位号,始发站,终点站) 旅客(身份证号,银行卡号,票号) 车 票 旅 客 换票手续费 新火车票票号 原火车票票号 换票时间 票 号 退 票 手 续 费 退 票 时 间 始发站 终点站 订购数目 用户名 票价 乘车日期 始发站终点站车型车次票号日期 票价座位号 身份证号银行卡号 开车时间 换票 n:1 车票(票号,车次,日期,车型,票价,开车时间,座位号,始发站,终点站) 旅客(身份证号,银行卡号,票号,换票时间,换票手续费) 退票
4、n:1 车票(票号,车次,日期,车型,票价,开车时间, ,座位号,始发站,终点站) 旅客(身份证号,银行卡号,票号,退票时间,退票手续费) 订票 n:1 车票(票号,车次,日期,车型,票价,开车时间,座位号,始发站,终点站) 旅客(身份证号,银行卡号,票号,乘车日期,交易时间,票价,订购数目,始 发站,终点站) 数据字典:数据字典: 名字名字 名字:车票信息 别名: 描述:车票有关信息 定义:车票车票编号车 票类型车次信息座位信 息票价信息+乘车时间 位置:输出到打印机 名字:购票信息 别名: 描述:记录火车票的销售情 况 定义:售票记录=已卖出的 车票数量 位置:售票记录 名字:订票信息 别
5、名: 描述:旅客订购车票的相关 信息 定义:订票信息=车次信息+ 车票编号+座位信息+票价信 息+乘车时间+身份证号码+ 银行卡号 位置:订票记录 名字:换票信息 别名: 描述:旅客换票的相关信息 定义:换票信息=原车票票 号+新车票票号+换票时间+ 换票手续费 位置:换票记录 2. 概要设计概要设计 火车售票系统 任务:通过此系统可以实现售票、退票、订票剩余情况查询等功能。 每张车票包含车次、座位信息、始发站、终点站等信息。 要求:在售票、退票、订票票等环节中,都必须显示出车票的信息,即车次、 座位情况。为简单起见,在此假设所有出售的车票均为同一车次的车票。退票 时,必须是车站售出的车票才能
6、退,否则视为无效票,不能退票。 3 设计概述(设计思路) . 所涉及的信息有:终点站信息(终点站名、车次号、乘车日期、票价等), 已订票的客户名单(包括姓名、车次、身份证号、银行卡号、订票量) . 作为示意系统,全部数据可以只放在内存中; . 系统能实现的操作和功能如下: a. 查询:根据旅客提出的终点站名输出下列信息:车次、日期、票额、票价; b. 订票:根据旅户提出的要求(车次号、乘车日期、订票数)查询该车次票额 情况,若有余票,则为旅客办理订票手续,输出座位号; 名字:退票信息 别名: 描述:旅客退票的相关信息 定义:退票信息=车票编号 车票类型车次信息座 位信息票价信息+乘车时 间 位
7、置:退票记录 用户管理 票务管理 c. 换票:根据旅客提供的情况(日期、车次) ,为旅客办理换票手续; d. 退票:根据旅客提供的情况(日期、车次),为旅客办理退票手续; 模块功能图:模块功能图: 铁路售票管理系统 售 票 系 统 订 票 系 统 退 票 系 统 换 票 系 统 票价管理 查询管理 退 票 管 理 票价信息录入 票价信息修改 票价信息删除 票价信息查询 车次信息查询 前台售票 前台退票 用户信息添加 用户信息删除 用户信息修改 退 票 信 息 3. 详细设计详细设计 程序流程图:程序流程图: f t f t t f 前 台 退 票 售票系统 换票系统退票系统 是否订票 售票系统
8、 开 始 退票信息 处理退票 换票信息 处理换票 订票系统 是否 买票 是否换票 数据库结构:数据库结构: 车辆表 字段名数据类型长度是否主键允许为空 车辆编号 int4 是否 车型 varchar8 否否 座位数 smallint2 否否 车票表 字段名数据类型长度是否主键允许为空 票号 int4 是否 乘车日期 time8 否否 车次 varchar5 否否 站名 varchar10 否否 票价 float10 否否 座位号 smallint3 否否 退票否 char1 否否 价格表 查询旅客信息 订票信息 处理订票 购买信息 查询车票记录 处理买票 停 止 字段名数据类型长度是否主键允许
9、为空 终点站编号char10是否 起始站char10否否 终点站char10否否 拼音码char5否否 车次varchar5否否 票价float10否否 4. 程序源码程序源码 (1)(1)登陆窗体(登陆窗体(frmloginfrmlogin)代码)代码 public passwordkey as string public namekey as string public try_times as integer 取消键退出登陆界面 private sub cmd_cancel_click() unload me end sub private sub cmd_ok_click() 数据库有
10、效性检查 if trim(txtuser) = then msgbox 请输入用户名 txtuser.setfocus exit sub end if if trim(txtpwd) = then msgbox 请输入密码 txtpwd.setfocus exit sub end if end sub private function makestr() as string namekey = str(txtuser) passwordkey = str(txtpwd) 判断用户是否存在 if myuser.in_db(namekey) = flase then msgbox 用户名不存在 t
11、ry_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_times + 1 if try_times = 3 then msgbox 您已经三次尝试进入本系统,均不成功,系统将关闭 dbapi_discon
12、nect end else exit function end if end if 登陆成功,将当前用户的信息保存在 curuser 中 curuser.username = myuser.username curuser.user_type = myuser.user_type curuserempid = myuser.empid 关闭自己并显示主窗体 unload me frmmain.show end function (2 2)主窗体)主窗体(frmmain)(frmmain)代码代码 设置数据库连接字符串 conn = provider=microsoft.jet.oledb.4.
13、0;data source= presist security info=false 系统登陆界面 frmlogin.show end sub private sub pjcx_click() end sub private sub pjgl_click() frmpricemanage.show end sub private sub spgl_click() frmticketsell.show end sub private sub tpgl_click() frmback.show end sub private sub xgmm_click() with frmuseredit .o
14、riuser = 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 with end sub private sub yhgl_click() if curuser.user_type = 1 then frmu
15、serman.show else msgbox 没有权限 end if end sub private sub zkgl_click() frmdiscount.show end sub (3 3)售票窗体()售票窗体(frmticketsellfrmticketsell)代码)代码 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
16、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(txtcarid) dim strcnn init_ado strquery
17、= 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 msgbox 车次或拼音码输入有误,请重新输入!, , err
18、or! 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(number) = false then msgbox 车次编号
19、应为数字! 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 统计本车次 的剩余的座位数 rsdata.movefirst left = rsdat
20、a!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= & trim(txtcarid) & rsdata.open
21、 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 * from seat where seat.sno= & t
22、rim(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 = val(adodc3.recordset.fields(3
23、) txtcharge = val(txtmoney) - val(adodc3.recordset.fields(3) end sub (4 4)退票窗体()退票窗体(frmbackfrmback)代码)代码 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(comboda
24、te.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= & trim(combo
25、carid.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 sellticket.cari
26、d= & 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 = msgbox(tic
27、ketinformation, 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 = strsno
28、 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 rsdata!bo
29、ok = 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 6)票价信息管理窗体()票价信息管理窗体(frmpricemanagefrmpricemanage)代码)代码 private sub cmd_add_click() 初始化 frmdiscountedit 信息
30、frmpriceedit.txtterminalname = frmpriceedit.txttnpycode = frmpriceedit.txtcarid = frmpriceedit.txtticketprice = frmpriceedit.modify = false frmpriceedit.vartermanalid = oriterminalid frmpriceedit.show refreshdata end sub private sub cmd_cancel_click() unload me end sub private sub cmd_del_click() di
31、m tmpid as long if adodc1.recordset.bof = true then msgbox 请选择记录 exit sub end if tmpid = adodc1.recordset.fields(0) if msgbox(是否删除当前行, vbyesno, 请确认) = vbyes then call myfam.deletebyid(tmpid) end if refreshdata end sub private sub cmd_modi_click() 初始化 frmpriceedit 信息 frmpriceedit.txtcarid = adodc1.re
32、cordset.fields(0) frmpriceedit.txtterminalname = adodc1.recordset.fields(1) frmpriceedit.txttnpycode = adodc1.recordset.fields(2) frmpriceedit.txtticketprice = adodc1.recordset.fields(3) frmpriceedit.modify = true frmprice.show refreshdata end sub private sub cmd_search_click() gridrefresh 根据条件查询票价信
33、息 end sub private sub form_load() gridrefresh end sub 5. 程序运行与调试程序运行与调试 测试在设计软件中占有重要的地位,在本系统设计中测试占用了大量的时 间,花费了许多的精力,因为测试直接影响着软件的质量。如果在测试中没有 把握好,很可能对整个系统造成严重的后果。软件测试的目的是尽可能多的发 现软件存在的错误,以提高软件质量及其可靠性。测试可分为以下几个步骤: 单元测试(模块测试) 针对各个程序单元或模块都进行单独测试这一步尤为重要,我把自己做的 先测试一下,正常运行后再和别的模块链接在一起。 集成测试 这一步就是把已通过单元测试的模块连
34、接起来。着重检验模块间的接口以 及软件设计中的一些问题。通常使用于功能测试。在进行集成测试时,可采用 自顶向下逐步增值测试方式,也可采用自底向上非增值式的测试方式,在本系 统中我们采用了上一种方法,直至所有模块都已集成到系统为止。 1. 验收测试 确认已开发的软件是否能满足标准,是否合格。验收测试包括有效性测试、 系统测试和按合同要求进行的验收测试。只有通过了这种验收测试的软件,才 能正式交会使用,系统经过一些调试后,基本上没有太大的问题,至此,系统 的调试已基本完成。 2.系统评价 系统评价的目的是为了估计系统的技术能力、工作性能和系统的利用率。 系统评价度量了系统当前的性能,并为了进一步改善未来的工作提供了依据, 因此评级报告的内容不仅应着于现有的系统的长处和缺点,而且还应提出改进 建议。当评价目的不同时,可以按不同的方式,以不同的标准对系统进行评价。 系统评价是在系统过续运行的过程中,不断地进行的。 6. 总结总结 回顾起此次课程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八个经审工作制度
- 兵役登记工作制度
- 内部服务工作制度
- 污水处理厂生物降解池增氧设备提升方案
- 2026年生产线持续改进的仿真框架
- 橡胶厂工作制度范本
- 死亡证明工作制度模板
- 残联服务窗口工作制度
- 民事纠纷调处工作制度
- 民建市委会工作制度
- 12《古诗三首》课件-2025-2026学年统编版语文三年级下册
- 团队精神与忠诚度培训讲义
- 2026河南新乡南太行旅游有限公司招聘16岗49人考试参考试题及答案解析
- 2026年辽宁点石联考高三年级3月学情调研语文试卷及答案
- 短剧网络播出要求与规范手册
- 2026年春季西师大版(2024)小学数学三年级下册教学计划含进度表
- 江苏苏锡常镇四市2026届高三下学期教学情况调研(一)数学试题(含答案)
- 2026年3月15日九江市五类人员面试真题及答案解析
- 高顿教育内部考核制度
- 2026年山西工程职业学院单招职业技能考试题库及答案解析
- (2025年)上海专升本普通心理学模拟试题真题试卷及答案
评论
0/150
提交评论