第一篇:火车票售票系统
火车票售票系统
班级:S3SN131班
姓名:王宁
如今科技发展突飞猛进,交通发达迅速。而我要做的是让远在千里之外的你轻松购得回家的一票。火车站市场的管理和规范问题,是困扰我们多年的一个老问题,也是政府管理中的一个难点,订票是客运业务中的一个最基本的业务,表面上看,它只是火车站业务的一个简单的部分,但是它涉及到管理与客户服务等多方面,因此,过去传统的售票方式已经不能满足现代客运业务流量剧增的客观要求,这就要求一种全新的订票方式——网上订票,来缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。本次设计便是利用开发工具vs2012和SQL Server 2008数据库共同开发的一个火车站网上订票系统,它能方便快捷地运用在火车站订票业务的营运之中。
一、基本目标:
解决火车站网上售票工作所要解决的问题,可以满足火车站网上售票的基本要求,包括查询、订票、退票等三个方面的功能。具体如下:
1.查询
分为对车次信息的查询和客户对已订车票信息的查询。要求:
1)对车次的查询,可以按照发车车次进行查询; 2)车次信息包括:车号、出发地、目的地、发车日期、开出时刻、票价。
3)座位类型设定。
4)车次信息只允许用户查询,不能修改。
2.添加车票
通过查询系统,客户根据自己的需求找到满意的车次,再输入个人信息后直接通过网上售票确定已预订选中的车票。要求:
售票记录应包括:会员名、车号、发车日期、订购票数、总价。
3.退票
可退票,通过查询系统,客户可以根据自己的名字找到自己的订票信息,通过退票模块退去已购车票。
项目转换成系统后,系统的顺利运行可以缓解订票高峰时期的客运压力,并为用户提供方便快捷的订票服务。还能运用到火车站售票的工作中,根据用户的需求,设置其权限,并快捷方便的为用户提供服务。(1)查询模块
本子系统主要完火车票售票管理系统中个人信息查询,个人信息修改,对车票信息查询
1、个人信息查询:主要时对用户的个人信息的核实和确认
2、个人信息修改:主要是对有错误的信息进行修改,本操作应该汇总到系统管理员进行修改
3、车票信息查询:顾客对车票的时间,班次,价格的查询
(2)车票销售模块
1、网上订票:顾客只要输入自己的身份证就可以进行网上的订票
2、网上退票:顾客如果不需要票了可以在网上进行退票。
3、接收来自网上的订票信息:顾客在网上订票之后,售票员核实信息再出售车票 火车票售票系统
查询模块
个人信息查询 个人信息修改
车票销售模块 网上订票
网上退票
票务管理模块 对票务信息的修改
增加或减少车次 对车票信息查询
信息中心模块 用户信息的更新 车票信息的更新 接收来自网上的订票信息 接收来自网上的退票信息
系统维护模块 系统版本的更新
添加删除用户
用户权限的设置
4、接收来自网上的退票信息:顾客在网上退票之后,售票员核实信息再确认退掉车票
(3)票务模块
1、修改车票的信息:比如对车票的价格和时间的修改,主要由票务管理员执行
2、增加和减少班次:由于一些特殊的原因要对车次进行增加和减少,主要由票务管理员执行
(4)信息中心模块
1、用户信息的更新:由于一些错误会对用户的信息进行修改之后,再由系统管理员更新到数据库
2、车票信息的更新:由于特殊的原因对车票进行修改后由系统管理员更新到数据库
(5)系统模块
1、系统版本的更新:对系统不断的升级推出更多的功能
2、添加删除用户:添加和减少用户,并将数据更新到数据库,由系统管理员执行
3、用户权限的设置:对某一用户权限的升级和降级,由系统管理员执行
二、功能需求与程序的关系
本系统完成车票销售的管理:用户信息查询,票务信息修改的管理,主要包括查询模块,车票销售模块,票务管理模块,信息中心模块,系统维护模块。
三、数据库设计
1、用户信息表
2、票务信息表
3、车票销售表
第二篇:火车票售票系统 需求分析报告
三、需求规格说明书
三、需求规格说明书
1.引言...........................................................................................................................1 1.1编写目的.............................................................................................................1 1.2项目背景.............................................................................................................2 1.3定义....................................................................................................................2 1.4参考资料.............................................................................................................2 2.任务概述....................................................................................................................2 2.1目标....................................................................................................................2 2.2运行环境.............................................................................................................3 2.3条件与限制..........................................................................................................3 3.数据描述....................................................................................................................3 3.1静态数据.............................................................................................................3 3.2动态数据.............................................................................................................3 3.3数据库介绍..........................................................................................................4 3.4数据词典.............................................................................................................4 3.5数据采集.............................................................................................................8 4.功能需求....................................................................................................................8 4.1功能划分.............................................................................................................8 4.2功能描述.............................................................................................................9 5.性能需求....................................................................................................................9 5.1数据精确度..........................................................................................................9 5.2时间特性.............................................................................................................9 5.3适应性.................................................................................................................9 6.运行需求....................................................................................................................9 6.1用户界面.............................................................................................................9 6.2硬件接口...........................................................................................................10 6.3软件接口...........................................................................................................10 6.4故障处理...........................................................................................................10 7.其它需求..................................................................................................................10
1.引言
1.1编写目的
本需求分析报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了本火车售票系统的软件开发过程,便于程
三、需求规格说明书
序员与客户之间的交流、协作,并作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用。本文档供项目经理、设计人员、开发人员参考。
1.2项目背景
a.项目的委托单位:中国铁路局 b.开发单位:xx大学 c.主管部门:计算机学院 d.软件名称:火车售票系统 e.软件开发者:
1.3定义
a.铁路售票应用系统软件:基本元素为构成铁路售票及相关行为所必须的各种部分。
b.需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。
c.需求分析:包括提炼,分析和仔细审查已收集到的需求,以确保所有的风险承担者都明其含义并找出其中的错误,遗憾或其它不足的地方。
d.模块的独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。
1.4参考资料
a.《实用软件工程》(第二版)郑人杰,殷人昆,陶永雷。清华大学出版社,1997。b.《JAVA网络高级编程》金勇华,曲俊生。人民邮电出版社,2001。
c.《JBUILDER培训教程》Borland software corporation。机械工业出版社,2002。
2.任务概述
2.1目标
(1)完善目前火车售票系统,使之能跟上时代的发展。同时通过实践来提高自己的动手能
三、需求规格说明书
(2)应用范围:理论上能够实现于铁路部门的售票系统,其目的在于在原有的系统基础使得火车售票便捷化,以期实现完善日常生活中火车售票的各种缺陷。
(3)可实现旅客对于火车票的查询与购买功能,售票员则可实现查询、添加和删除等功能;对于所查询的车次结果提供列表显示输出;有一定的安全机制,普通旅客不能对车次信息随意删改,只有授权的售票员可通过密码识别进行维护。
2.2运行环境
操作系统:Microsoft Windows 2000 Advanced Server 支持环境:IIS 5.0 数 据 库:Microsoft SQL Server 2000 2.3条件与限制
一个更完善的火车票售票系统,应提供更为便捷与强大的查询购买功能,如相应的网络操作及服务,由于开发时间和计算机数量有限,该系统并未提供这一功能,对于信息的保护手段仅限制于设置用户级别,以记名提供数据文件的备份,比较简单,不能防止恶意的破坏,安全性能有待进一步完善。
3.数据描述
3.1静态数据
火车票:列车车号
(int SerialNumber)
列车始发时间(struct time SetOut)
列车始发站(char DeparturePoint)
列车终点站(char TerminalPoint)
票务:列车车号
(int SerialNumber)
已售出车票票数(int FixedNumber)
额定载量(int FixNumber)
售票员:用户名(char name)
密码(char password)3.2动态数据
输入数据:根据界面提示,键盘输入操作;
查询方式:查询车次、查询始发站;
三、需求规格说明书
旅客购买时的票务信息,售票员添加、购票、退票时的票务信息;
售票员备份数据恢复所需的数据备份文件;
售票员操作需密码,旅客操作受限; 输出信息:查询车次确定的数据库记录的子集;
统计结果;
车次信息录入、删除(成功或失败);
车次信息查询、购买的操作结果;
数据备份输出的数据备份文件; 内部数据:查询操作建立的索引;
3.3数据库介绍
数据库采用Microsoft Access数据库
3.4数据词典
《火车售票系统》的总体功能如下: 车票的售出; 车票的退还; 车票信息的查询;
车票的增删改;
售票员查询统计车票信息; 售票系统数据备份; 售票管理者口令修改; 1.售票员登陆系统:(1)数据流图
售票退票选择检验错误售票员选择用户名密码身份验证售票员信息密码正确登陆系统选择选择选择授权信息表查询录入新的班次信息
(2)数据词典
数据源点及汇点描述: ① 名称:售票员
简要描述:管理售票员信息
有关数据流:用户名、密码、系统选择:售票系统、退票系统、查询系统、录入信息系统 数目:1
三、需求规格说明书
加工逻辑词条描述: ① 加工名:身份检验
加工编号:1
简要描述:检验用户身份 输入数据流:用户名、密码
输出数据流:密码正确、身份验证错误 加工逻辑: IF 用户名为空 THEN
发出“用户名为空错误”
ELSE IF 密码为空 THEN
发出“密码为空错误”
ELSE IF 用户名和密码不符 THEN
发出“用户名和密码不匹配错误”
ENDIF
ENDIF
ENDIF
ENDIF 数据流名词条描述: ① 数据流名:用户名
说明:售票员姓名
数据流来源:售票员 数据流去向:身份检验
数据流组成:用户名=字符型字符串 ② 数据流名:密码
说明:与用户名相匹配的密码 数据流来源:售票员
数据流去向:身份检验
数据流组成:密码=短整型字符串 每个数据量流通量: ③ 数据流名:出错信息
说明:用于指示身份验证错误的信息
数据流来源:身份检验 数据流去向:售票员
数据流组成:出错信息=任意字符串 ④ 数据流名:系统名称
说明:系统的名称 数据流来源: 数据流去向:选择 数据流组成: 数据文件词条描述: ① 数据文件名:授权信息表
简述:存放售票员信息
输入数据:
输出数据:售票员信息
数据文件组成:授权信息表由“售票员信息”组成
三、需求规格说明书
2.售票员相关操作(售票、退票、查询、录入)
票务信息表车票信息车票信息售票退票选择检验错误售票员选择用户名密码身份验证售票员信息密码正确登陆系统选择选择选择授权信息表查询车票信息录入新的班次信息车票信息列车信息表
(2):数据词典:
数据源点及汇点描述: 1 名称:售票员 ○简要描述:管理售票员信息 有关数据流:用户名、密码
数目:1 加工逻辑词条描述: 1加工名:身份检验 ○加工编号:1
简要描述:检验用户身份
输入数据流:用户名、密码
输出数据流:密码正确、身份验证错误 2加工名:售票 ○加工编号:2 简要描述:根据所读入的操作信息,售出火车票
输入数据流:操作信息,火车票信息
输出数据流:火车票信息
加工逻辑:根据所读入的操作信息,售出火车票
数据流名词条描述: 数据流名:用户名 ○
三、需求规格说明书
说明:售票员的姓名
数据流来源:售票员 数据流去向:身份检验
数据流组成:用户名=字符型字符串 2数据流名:密码 ○说明:与职工名称相匹配的密码 数据流来源:售票员 数据流去向:身份检验
数据流组成:密码=短整型字符串 每个数据量流通量: 3数据流名:车票信息 ○说明:车票信息
数据流来源:售票员
数据流去向:列车信息表
数据文件词条描述:
① 数据文件名:列车信息表
简述:车票信息
输入数据:车票信息
输出数据:
数据文件组成:列车信息表由“车票信息”组成 存储方式:关键码 存取频率:频繁 2数据文件名:票务信息表 ○简述:票务信息
输入数据:票务信息 输出数据:
数据文件组成:票务信息表由“列车号、已售票、剩余票”组成 存储方式:关键码 存取频率:频繁
3.旅客查询购票过程:(1)数据流图
三、需求规格说明书
旅客 登录系统选择选择选择选择订票退票查询
(2)数据词典:
● 数据源点及汇点描述: 名称:旅客
简要描述:订票,退票,查询
有关数据流:系统选择:订票系统、退票系统、查询系统 ●数据流名词条描述:
⑤ 数据流名:系统名称
说明:系统的名称 数据流来源:
数据流去向:选择
数据流组成:
3.5数据采集
数据采集采用键盘输入
4.功能需求
4.1功能划分
该软件具有如下主要功能: 1.浏览功能 2.查询功能 3.添加功能 4.修改功能 5.删除功能
三、需求规格说明书
6.授权功能
4.2功能描述
1.浏览功能
列出当前数据库文件中车票的所有记录 可选定一项纪录,显示说有域 2.查询功能
车次信息匹配查询 始发站信息匹配查询 3.添加功能
增加一条车票的信息 4.修改功能
修改某一已存在的记录内容,提供确认机制 5.删除功能
删除一条记录,提供确认机制 6.授权功能
授权票务管理人员修改数据的权限
5.性能需求
5.1数据精确度
查询时应保证查全率,所有在相应域中包含查询车次的记录都应能查到,同时保证查准率。
5.2时间特性
一般操作的相应时间应在1~2秒内
5.3适应性
满足运行环境在允许操作系统之间的安全转换和雨其它又能够用软件的独立运行要求。
6.运行需求
6.1用户界面
采取对话框方式,多功能窗口运行
三、需求规格说明书
6.2硬件接口
(1)硬件接口:支持x86系列PC机
(2)网络硬件接口要求:现实中要求具有高速以太网组网一实现联网销售,但是在理论实验验证软件本身的目的来看,无需网络通讯接口。
6.3软件接口
运行于Windows2000及更高版本并装有JAVA虚拟机的操作系统之上。
6.4故障处理
正常使用时不用出错,对于用户的输入错误应及时给出适当的改正信息提示,若运行遇到不可恢复的系统错误,也必须保证数据库完好无损。
7.其它需求
(1)可用性:该软件也可以通过单步跟踪的操作进行检查处理。
(2)安全性:由于软件运行数据放在数据库中,所以参数不容易被错改、破坏,万一参数受到破坏也不会影响源程序。
(3)可维护性:该软件利用数据库进行编程,系统结构由程序基本确定,大量的参数及文本内容全部放于数据库中。修改、更新数据只要在数据库进行修改添加,而不需要对系统结构进行修改,这样系统维护性、升级都十分方便。
(4)兼容性:由于尚未测试,故无法对兼容性进行评析。
第三篇:2012火车票售票形式
关于2012年春运多渠道售票方式的通知
一、车票实名制:
自2012年1月8日起对旅客列车实行车票实名制,旅客须凭本人有效身份证件购买车票,并持车票及购票时所使用的乘车人本人有效身份证原件进站、乘车,但免费乘车的儿童及持儿童票乘车的儿童除外。
1、实名制范围:福州站、福州南站各次旅客列车,具体车次以车站公告为准。
2、购票须知:
(1)购票人可以使用有效身份证件原件或复印件购买车票,也可以持乘车人的有效身份证件原件或复印件替乘车人代购车票。
(2)一张有效身份证件同一乘车日期同一车次只能购买一张实名制车票。
(3)须凭证购买的学生、残疾军人(警察)等减价优惠(待)票,在出示有效身份证件的同时,还应出示符合规定的减价优惠(待)凭证原件,经核实后,方可购票、乘车。学生票按规定核减次数。
(4)电话订票、互联网售票仅受理居民身份证、港澳居民来往内地通行证、台湾居民来往大陆通行证、护照。
(5)自助售票机仅受理二代居民身份证的购票和取票。
(6)车站在售票厅设臵铁路公安制证口,为无法出示有效身份证件的旅客办理临时身份证明。
3、进站乘车须知
(1)旅客须持车票和与票面所载身份信息相符的本人有效身份证件原件,方可进站、乘车。
(2)旅客进站乘车时,铁路客运和公安人员对旅客、其所持车票和票面所载的有效身份证件原件进行查验。票、证、人不一致或无法出示有效身份证件原件的旅客,不得进站乘车。无法出示有效身份证件原件的旅客,应到公安制证口办理临时身份证明后,方可进站乘车。
(3)成人持儿童票的,视为票、证、人不一致。
4、退票、改签须知
(1)实名制车票办理退票时,需核实车票及其票面所载的有效身份证件原件的一致性,票、证一致的方予办理。
(2)对实名制车票办理始发改签、中转签证时,无须出示有效身份证件。
5、其他事项
(1)旅客购票后,应当场核对票面信息,发现票面信息与有效证件信息不符时,需立即将原票交由售票人员处理。如未当场核对票面信息,过后提出票面信息与有效证件信息不符的,自行负责。
(2)旅客购票后应当妥善保管车票,保持票面信息清
晰、可识读,并妥善保护票面身份信息。
(3)未尽事项按《铁路旅客运输规程》等现行有关规定办理。
二、火车票电话订票
火车票订票电话统一为:95105105。实行“通订通取”,即可在非乘车站所在地订取火车票。
1、订票、人工咨询电话:拨打本地订票电话95105105、人工咨询电话12306。
2、电话订票受理时间:0:00-24:00
3、人工咨询受理时间:0:00-24:00
4、可预订全票、儿童票、学生票、伤残军人(警察)优待票。儿童票须和全票同时办理,且不超过全票张数。
5、订票数量:电话订票一张有效身份证件一次最多可订同日期、同车次、同席别的车票不超过硬卧3张或硬座5张;一张有效身份证件同一乘车日期同一车次可订一张实名制车票。
6、订票日期:1—3日内车票不接受预订;可订第4日至预售期内各次列车车票(以上订票日期均含当日)。如遇调整,请以车站公告为准或可拨打12306南昌铁路客户服务中心电话进行相关业务咨询。
7、预售时间:每日10:00开始预售。如遇调整,请以车站公告为准或可拨打12306南昌铁路客户服务中心电话进行相关业务咨询。
8、取票期限
每日12点前预订的车票您必须在订票成功当日24点
前,在取票点营业时间范围内取票,每日12点后预订的车票您必须在订票成功次日12点前,在取票点营业时间范围内取票,否则系统将自动取消您的订单。
9、取票流程
旅客凭订票单到车站及客票代售点可办理取票业务,客票代售点信息可登录中国铁路客户服务中心网站(网址:www.teniu.cc)查询。取票时需出示本人有效身份证原件(学生票须提供学生票识别卡),通过验证后(本人身份证与订票单中的身份证一致)方可取票,遇特殊情况,确须他人代取时,须同时出示本人和代取人的身份证原件,在客票代售点取票,按照国家计委、铁道部《关于规范铁路客票销售服务收费有关问题的通知》(计价„2000‟146号)文件规定办理,可收取5元/张客票销售服务费。
南昌铁路局电话订票流程
备好乘车站和到达站所在城市的电话区号、乘车人身份证号码、纸、笔。拨打电话订票号码:95105105按照语音提示选择业务:1.订票2.取消或查询订单3.信息查询旅客可办理订单取消及订单查询业务,订单查询提供按订单号及订票条件查询按2按3旅客可分别选择动车组直达车订票、普通订票、学生订票、快速订票等订票模式预订所需要的车票订票成功后,电话语音会播放订票单号。请务必及时、准确记录下来凭订单号及订票使用的有效身份证件在指定的时间内到取票点办理取票,否则车票将取消
按1旅客可自助查询余票、订单、时刻、票价、正晚点、列车担当企业、代售点、区号等信息
四、火车票互联网购票
(一)购票
1、登录中国铁路客户服务中心网站(www.teniu.cc,以下简称“网站”)购买铁路列车电子客票,包括:成人票、儿童票、学生票和伤残军人(警察)优待票。
2、网站购票业务办理时间为每日6:00~23:00,具体办理时间以网站公告为准。
3、网站购票应当在车票预售期内且不晚于开车前2小时,并完成网上支付。
4、购票时,应准确提供乘车人的有效身份证件信息,一张有效身份证件同一乘车日期同一车次限购一张车票,一笔订单不能超过5张票。有效身份证件是指:中华人民共和国居民身份证; 港澳居民来往内地通行证;台湾居民来往大陆通行证; 按规定可使用的有效护照。
(二)换票
1.、网站购票后,可凭购票时所使用的乘车人有效身份证件原件到车站售票窗口、自动售票机及代售点办理换票。
2、网站购买学生票、伤残军人(警察)优待票时,应符合规定的减价优惠(待)条件,并持有规定的减价优惠(待)凭证。学生证应附有“学生火车票优惠卡”。
3、旅客使用二代居民身份证购买福州、厦门站及杭深线各站动车组列车成人车票且无需报销凭证,可不办理换票
业务直接持二代居民身份证进出车站,开始办理时间由车站另行公告。其它情形旅客必须在开车前换取纸质车票后进站乘车。
4、换取纸质车票时,按如下规定办理:
(1)使用二代居民身份证购买的铁路电子客票,可凭购票时所使用的乘车人有效二代居民身份证原件到车站售票窗口、铁路客票代售点或车站自动售票机上办理换票手续。
(2)二代居民身份证无法自动识读或者使用二代居民身份证以外的其他有效身份证件购买的铁路电子客票,需出示购票时所使用的乘车人有效身份证件原件和订单号码,到车站售票窗口或指定的客票代售点,由售票员录入证件号码和订单号码并核实后办理换票手续。
(3)学生票凭购票时所使用的有效身份证件和附有学生火车票优惠卡的学生证(均为原件)到安装有学生火车票优惠卡识别器的车站售票窗口或铁路客票代售点办理。
(4)伤残军人票凭购票时所使用的有效身份证件和“中华人民共和国残疾军人证”、“中华人民共和国伤残人民警察证”(均为原件)到车站售票窗口办理。
(5)购票后、换票前,有效身份证件丢失的,乘车人本人或代办人持本人有效身份证件原件到乘车站铁路公安制证口,办理载明原购票时使用的乘车人有效身份证件信息 的临时身份证明,到车站售票窗口或指定的客票代售点,由售票员录入证件号码和订单号码并核实后办理换票手续。
(6)有效身份证件信息、订单号码等经核实一致的,予以换票;不一致的,不予换票。学生票、伤残军人票同时核对减价优惠(待)凭证。换学生票时,应核减优惠乘车次数。
5、为不耽误旅客的出行,请旅客尽早办理换票手续。
(三)、改签及退票
1、旅客未办理换票时可在网站办理铁路电子客票改签、退票业务,并且不晚于车票发站开车前2小时。换票后改签、退票业务必须到车站窗口办理
2.、改签后新票票价高于原票、需补收票价差额时,应当使用购票时所使用的银行卡或具备网上银行功能的其他银行卡支付新票全额票款,原票款按发卡银行规定退回原银行卡。退票或改签后新票票价低于原票的,应退票款按发卡银行规定退回购票时所使用的银行卡。
3、在中国铁路客户服务中心网站办理退票手续后、需退票费报销凭证的,应当凭购票时所使用的有效身份证件原件在办理退票之日起10日内(含当日)到车站退票窗口索取。
4、在办理换票、改签、退票时,均按现行规定处理手续费或退票费。
南昌铁路局互联网购票流程
登录中国铁路客户服务中心网站(www.teniu.cc),完成用户注册并激活用户使用注册成功并已激活的用户名和密码登录中国铁路客户服务中心网站(www.teniu.cc)车票预订,进入车票查询界面,输入筛选条件查询余票规划行程选择需要购票的列车并从常用联系人选择或直接录入乘车人信息旅客核对申请成功的车票信息后进入网上银行进行网上支付操作网上支付成功后,网站将订单号告知旅客旅客凭购票使用的乘车人有效身份证件原件到车站售票窗口、自动售票机及代售点办理换票
第四篇:一个简单的火车票售票管理系统
一个简单的火车票售票管理系统(原创)#include
typedef struct time
//时间类型 {
int x,y,z;
//分别对应年,月,日 }TIME;
typedef struct cnode
//票信息类型 {
int no;
//票号
int id;
//购票人证件号
TIME date;
//购票日期
struct cnode *next;}CNODE;
typedef struct tnode
//车次信息类型 {
char data;
//车次编号
struct tnode *lchild,*rchild;
CNODE *head;}TNODE;
void create();
//按车次建立二叉排序树
void insert(int);
//增加新的车次(二叉排序树的插入)void del();
//取消车次(二叉排序树节点删除)
void inorder(TNODE *);
//中序遍历车次二叉排序树(仅显示车次信息)void inorder_all(TNODE *);
//中序遍历车次二叉排序树(显示车次及售票信息)void preorder(TNODE *);
//先序遍历车次二叉排序树(仅显示车次信息)TNODE *search();
//按车次编号搜索
CNODE *insert_c(CNODE *);
//插入新的售票信息(单张)CNODE *insert_c_more(CNODE *);
//插入新的售票信息(批量)CNODE *del_c(CNODE *,CNODE *);
//退票处理(删除售票信息)CNODE *search_c(CNODE *,int);
//按票号查询
void search_c_id(CNODE *,int);
//按购票人证件号搜索(限定某车次)void search_c_id_all(TNODE *,int);
//按购票人证件号搜索(所有车次)void search_date(CNODE *,TIME);
//按购票日期搜索(限定某车次)void search_date_all(TNODE *,TIME);
//按购票日期搜索(所有车次)void print_c(CNODE *);
//输出售票纪录(单张)void print_c_all(CNODE *);
//输出售票纪录(批量)
TNODE *root=NULL;
void main(){
int i,func,no,ok;
TNODE *t;
CNODE *c;
TIME d;
printf(“nnn”);
for(i=0;i<15;i++)printf(“=”);
printf(“列车售票信息管理系统”);
for(i=0;i<15;i++)printf(“=”);
printf(“n”);
printf(“t1.车次信息管理n”);
printf(“t2.售票记录管理n”);
printf(“t3.售票记录查询n”);
printf(“t4.售票记录一览n”);
printf(“t5.退出系统n”);
for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: printf(“nn车次信息管理>>>>n”); for(i=0;i printf(“nt1.增加新的车次”); printf(“nt2.取消车次”); printf(“nt3.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: create(); printf(“n售票信息更新成功!nn”); break; case 2:del();break; case 3:main();break; default:printf(“n[错误]功能号输入有误!请重新输入!”); } break; case 2: printf(“nn售票记录管理>>>>n”); for(i=0;i printf(“nt1.增加新的售票记录”); printf(“nt2.退票”); printf(“nt3.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: t=search(); if(t!=NULL)t->head=insert_c_more(t->head); break; case 2: t=search(); printf(“需要退票的票号:”); scanf(“%d”,&no); t->head=del_c(t->head,search_c(t->head,no)); break; case 3:main();break; default:printf(“n[错误]功能号输入有误!请重新输入!”); } break; case 3: printf(“nn售票记录查询>>>>n”); for(i=0;i printf(“nt1.按票号搜索”); printf(“nt2.按购票者证件号搜索”); printf(“nt3.按购票日期搜索”); printf(“nt4.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: t=search(); if(t!=NULL){ printf(“n请输入您所要查询的票号:”); scanf(“%d”,&no); c=search_c(t->head,no); if(c==NULL)printf(“[错误]没有该票号的纪录!该票还未售出或为废票!自动返回上级菜单n...”);} break; case 2: printf(“n请输入您所要查询的购票者证件号:”); scanf(“%d”,&no); search_c_id_all(root,no); printf(“搜索完毕!自动返回上级菜单n...”); break; case 3: do{ printf(“n请输入您所要查询的日期(格式: yy-mm-dd):”); scanf(“%d-%d-%d”,&d.x,&d.y,&d.z); if(d.y<13&&d.y>0){ if(d.y==1||d.y==3||d.y==5||d.y==7||d.y==8||d.y==10||d.y==12) if(d.z<32&&d.z>0)ok=1; else if(d.z==2) if(d.z<30&&d.z>0)ok=1; else if(d.z<31&&d.z>0)ok=1; } else ok=0; if(!ok)printf(“n[错误]日期输入有误!请重新输入!”); }while(!ok); printf(“n指定车次吗?(1->是,0->否):”); scanf(“%d”,&ok); if(ok)search_date(search()->head,d); else search_date_all(root,d); break; case 4:main();break; default:printf(“n[错误]功能号输入有误!自动返回上级菜单n...”); } break; case 4: printf(“nn售票记录一览>>>>n”); for(i=0;i printf(“nt1.仅浏览车次”); printf(“nt2.指定车次已售票记录”); printf(“nt3.所有车次已售票记录”); printf(“nt4.测试:先序遍历车次”); printf(“nt5.返回上级菜单n”); for(i=0;i printf(“n请选择您所需要的功能:”); fflush(stdin); scanf(“%d”,&func); switch(func){ case 1: printf(“n+++仅浏览车次n”); if(root==NULL)printf(“[错误]无车次纪录!”); else{inorder(root);printf(“n”);} break; case 2: printf(“n+++指定车次已售票记录n”); t=search(); if(t!=NULL){ print_c_all(t->head); printf(“n”); } break; case 3: printf(“n+++所有车次已售票记录n”); if(root==NULL)printf(“[错误]无车次纪录!”); else{inorder_all(root);printf(“n”);} break; case 4: printf(“n+++测试:先序遍历车次n”); if(root==NULL)printf(“[错误]无车次纪录!”); else{preorder(root);printf(“n”);} break; case 5:main();break; default:printf(“n[错误]功能号输入有误!自动返回上级菜单n...”); } break; case 5:exit(0); default:printf(“n[错误]功能号输入有误!请重新输入!”); } main();} void inorder_all(TNODE *ptr){ if(ptr!=NULL) { inorder_all(ptr->lchild); printf(“%d:n”,ptr->data); print_c_all(ptr->head); printf(“n”); inorder_all(ptr->rchild); } } void inorder(TNODE *ptr){ if(ptr!=NULL) { inorder(ptr->lchild); printf(“%dt”,ptr->data); inorder(ptr->rchild); } } void preorder(TNODE *ptr){ if(ptr!=NULL) { printf(“%dt ”,ptr->data); preorder(ptr->lchild); preorder(ptr->rchild); } } void print_c(CNODE *tkt){ if(tkt!=NULL)printf(“t%dt%dt%d-%d-%dn”,tkt->no,tkt->id,tkt->date.x,tkt->date.y,tkt->date.z);} void print_c_all(CNODE *head){ int i=0,j=0; if(head==NULL){printf(“n记录为空!n”);return;} for(i=0;i printf(“nNOt票号t购票者证件号t购票日期(年-月-日)n”); for(i=0;i for(j=0;head!=NULL;j++){ printf(“n%d”,j); print_c(head); head=head->next; } printf(“n”); for(i=0;i printf(“n总计 %d 条记录n”,j); for(i=0;i printf(“n”);} void create(){ int n,i;int k[MAX];printf(“n您所希望增加车次的数量:”);scanf(“%d”,&n);for(i=0;i printf(“新增第%d列车次:”,i+1); scanf(“%d”,&k[i]);} for(i=0;i insert(k[i]);} void insert(int m){ TNODE *p1,*p2;if(root==NULL) { root=(TNODE *)malloc(sizeof(TNODE)); root->data=m; root->lchild=root->rchild=NULL; root->head=NULL; } else { p1=root; while(m!=p1->data) { if((m data)&&(p1->lchild!=NULL))p1=p1->lchild; else if((m>p1->data)&&(p1->rchild!=NULL))p1=p1->rchild; else if((m data)&&(p1->lchild==NULL)) { p2=(TNODE *)malloc(sizeof(TNODE)); p2->data=m; p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->lchild=p2; return; } else if((m>p1->data)&&(p1->rchild==NULL)) { p2=(TNODE *)malloc(sizeof(TNODE)); p2->data=m; p2->lchild=p2->rchild=NULL; p2->head=NULL; p1->rchild=p2; return; } } printf(“n[错误]未能成功增加车次%d,车次号 %d 已存在!”,m,m); } } TNODE *search(){ int key; TNODE *p; p=root; printf(“n输入您所要查找的车次编号:”); scanf(“%d”,&key); while(p!=NULL&&p->data!=key){ if(key data){p=p->lchild;} else if(key>p->data){p=p->rchild;} } if(p==NULL)printf(“n该车次不存在!”); return(p);} void del(){ int key; TNODE *p1,*p2,*p3,*temp; p1=p2=root; p3=temp=NULL; printf(“n请输入您想要取消的车次编号:”); scanf(“%d”,&key); while(p2!=NULL&&p2->data!=key){ if(key data){p1=p2;p2=p2->lchild;} else if(key>p2->data){p1=p2;p2=p1->rchild;} } if(p2==NULL){printf(“n[错误]该车次不存在!返回上级菜单n...”);return;} else if(p2->lchild==NULL&&p2->rchild==NULL) { if(p1->lchild==p2)p1->lchild=NULL; if(p1->rchild==p2)p1->rchild=NULL; temp=p2; if(root==p2){temp=root;root=NULL;} } else{ if(p2->rchild==NULL){ temp=p2->lchild; p2->data=temp->data; p2->lchild=temp->lchild; p2->rchild=temp->rchild; } else if(p2->lchild==NULL){ temp=p2->rchild; p2->data=temp->data; p2->lchild=temp->lchild; p2->rchild=temp->rchild; } else{ p3=p2; temp=p2->lchild; while(temp->rchild!=NULL){p3=temp;temp=temp->rchild;} p2->data=temp->data; if(p3==p2)p3->lchild=temp->lchild; else p3->rchild=temp->lchild; } } free(temp); printf(“车次 %d 已取消!nn”,key);} CNODE *insert_c(CNODE *head){ CNODE *k,*p; k=(CNODE *)malloc(sizeof(CNODE)); do{ printf(“n车票编号:”); scanf(“%d”,&k->no); p=search_c(head,k->no); if(p!=NULL)printf(“n[错误]该票已被购买!请重新选择!n”); }while(p!=NULL); printf(“购票者证件号:”); scanf(“%d”,&k->id); printf(“购票日期(格式:yy-mm-dd):”); scanf(“%d-%d-%d”,&k->date.x,&k->date.y,&k->date.z); k->next=head; head=k; return(head);} CNODE *insert_c_more(CNODE *head){ int n,i; printf(“n请输入批量新增售票记录数:”); fflush(stdin); scanf(“%d”,&n); for(i=0;i printf(“n售票记录更新成功!n”); return(head);} CNODE *search_c(CNODE *head,int id){ CNODE *temp,*s; s=temp=head; while(temp!=NULL&&temp->id!=id){s=temp;temp=temp->next;} print_c(temp); if(temp!=NULL)return(s); else return NULL;} void search_c_id(CNODE *head,int id){ CNODE *s,*head_s; s=head_s=NULL; if(head==NULL)printf(“无该证件号纪录!n”); while(head!=NULL){ if(head->id==id){ s=(CNODE *)malloc(sizeof(CNODE)); s->no=head->no;s->id=head->id;s->date=head->date; s->next=head_s;head_s=s; } head=head->next; } print_c_all(head_s); printf(“n”);} void search_c_id_all(TNODE *ptr,int id){ if(ptr!=NULL){ search_c_id_all(ptr->lchild,id); printf(“n车次:%dn”,ptr->data); search_c_id(ptr->head,id); search_c_id_all(ptr->rchild,id); } } void search_date(CNODE *head,TIME t){ CNODE *s,*head_s; s=head_s=NULL; while(head!=NULL){ if(t.x==head->date.x) if(t.y==head->date.y) if(t.z==head->date.z) { s=(CNODE *)malloc(sizeof(CNODE)); s->no=head->no;s->id=head->id;s->date=head->date; s->next=head_s;head_s=s; } head=head->next; } print_c_all(head_s); printf(“n”);} void search_date_all(TNODE *ptr,TIME t){ if(ptr!=NULL){ search_date_all(ptr->lchild,t); printf(“n车次:%dn”,ptr->data); search_date(ptr->head,t); search_date_all(ptr->rchild,t); } } CNODE *del_c(CNODE *head,CNODE *p){ CNODE *temp; if(p==NULL)printf(“[错误]该票未售出或为废票!返回上级菜单n...”); else if(p==head){head=NULL;free(p);} else{ temp=p->next; p->next=temp->next; free(temp); } return(head);} 二.需求分析 经过对程序设计题目的分析可知,整个程序的设计实现大致分为八个模块,每一个模块对应一个函数。在这些函数当中,添加车次数据函数、售票函数、查询总额函数的实现严格按照题目的要求,而显示时间函数和显示车次函数属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。 1.添加车次函数 主要实现程序最初运行时车次的录入 2.旅客买票函数 实现的功能是按照旅客所需车次几所购买车票的数目 3.查询车票总额 按照题目的具体要求实现的是总额的查询 4.显示函数 实现的是显示目前所有的有效车次信息 除上面介绍的功能之外,程序还具有显示当地时间,以及退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。 每一个车次都包含车次、日期,始发、终点以及所受票数和所需费用,在程序当中,将车次类型定义为结构体类型,添加的车次信息直接写入E盘的train.txt文件中,其它函数每次对车次记录的访问,其数据来源都是train.txt文件,这样做不但可以保证学生数据的一致性,而且可以对车次数据进行永保存,保证每次运行程序都可以采用原来的数据 近年来,中国乃至世界的人口急剧增加,人口流动量也随之增加,火车作为一种便捷且相对 比较便宜的交通工具也受到广大出行者的青睐,为了减轻铁道部售票的压力,特此编写此程序,便于乘客在网上购票。 3.1.2 软件项目概述 本系统拥有四大功能,分别是查询、订票、改签和退票。在使用不能系统之前,用户必须注 册用户名,用户名必须包括乘客的身份证号,这样可以实行实名制购票,防止在购票高峰,非法 分子以高价倒卖火车票,以此来保证乘客的利益。用户在利用用户名登陆本系统以后,方可经行 查询、订票、改签和退票的相关操作。其中,查询允许乘客对自己所需乘坐的列车经行查询,来 判断是否有票,如果有票,乘客则可以选择订票,订票以后,用户的信息将被修改,用户信息将 会添加刚才购买的火车票的列车车次以及起始地和目的地。如果乘客已经购票,需要换票,则必 须先查询是否有需要换的票,如果有票,则可以经行换票操作,同样,用户信息将也会被修改。 当乘客已经订票,需要退票,点击退票,则可以退票,但同时会弹出 需要用户支付手续费的窗 口,用户支付完手续费后,退票成功,用户信息将被修改,推掉的车票对应的列车号以及相关信 息将从用户信息中删除。 3.2 订票流程设计 3.2.1 订票流程描述 乘客在使用系统之前,首先注册新用户,需要输入自己相关个人信息,包括自己的身份证号 码,名称,登陆密码等。当已经注册好用户以后,用户可以利用自己的证件号码和登陆密码登陆 火车票订票系统,乘客需先查询自己所需要乘坐的列车,看是否有票,如果有票则可以选择订票,进行订票;如果用户已经购票,需要换票,则需要查询目标票看其是否有剩余,如果有剩余,则 可以进行换票,当用户输入已拥有的火车票的列车号点击退票,则可以经行退票。当然,以上操 作都必须建立在用户已登录的基础上 阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。我们在这 里主要从技术可行性、经济可行性和操作可行性三方面进行分析。2.1.1 经济可行性 本系统其他应用软件、硬件系统也易于获得.因此 , 开发成本较低。而引进使用本系 统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物 力及财力。所以,从经济的角度来看,该系统可行。2.1.2 技术可行性 开发工具: VS2005 数据库环境: SQL Server 2005 系统环境: Microsoft Windows 2000 或以上版本。 系统实现依靠相对熟悉的 c 语言和 SQL Server2008 数据库系统,其基本操作实质还 是对数据库进行添加、删除、查找等操作。2.1.3 操作可行性 系统采用菜单式,实现用户与数据库的交互,界面简洁友好,操作方便。2.2 需求分析 需求分析是软件设计的一个重要的环节。本阶段对订票系统的应用情况作全面调 查,以确定系统目标,并对系统所需要的基础数据以及数据处理要求进行分析,从而确 定用户的需求。用户对系统的需求我们从以下几方面进行分析。2.2.1 功能需求 本网上售票系统应该具备如下功能: 1.查询 分为对车次信息的查询和客户对已订车票信息的查询。要求: 1)对车次的查询,可以按照发车车次进行查询; 2)车次信息包括:车号、出发 地、目的地、发车日期、开出时刻、票价。3)座位类型设定。4)车次信息只允许用户查询,不能修改。2.添加车票 通过查询系统,客户根据自己的需求找到满意的车次,再输入个人信息后直接通过 网上售票确定已预订选中的车票。要求 : 售票记录应包括:会员名、车号、发车日期、订购票数、总价。3.退票 可退票,通过查询系统,客户可以根据自己的名字找到自己的订票信息,通过退票 模块退去已购车票。2.2.2 数据需求 信息需求,即在系统中需要处理哪些数据。根据对火车站网上订票系统的分析,本 系统的信息需求如表 2-1 所示。表 2-1 信息输入输出 信息输 入 信息 处理 信息 输出 用户输 入所需车次 检索 系统数据库 符合 用户需求的车次及相关 信息 用户输 入个人信息及所需 购的车 票信息 更新 系统中的订票信息,将新 信息存入系统数据库 操作 反馈(如找零)2.2.3 性能需求 为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的 性能需求。1.准确性和及时性 系统处理的准确性和及时性是系统的必要性能。系统应能及时而且准确的根据用户 权限及所输入的信息做出响应。 由于本系统的查询功能对于整个系统的功能和性能完成 举足轻重。作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其 准确性和及时性很大程度上决定了系统的成败。在系统开发过程中,必须采用一定的方 法保证系统的准确性和及时性。2.易用性 本系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。这就要求系统能 够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使 用用户熟悉的术语和中文信息的界面,从而保证系统的易用性。第五篇:课程设计火车票售票系统的需求分析