火车票售票系统软件工程设计报告.docx
《火车票售票系统软件工程设计报告.docx》由会员分享,可在线阅读,更多相关《火车票售票系统软件工程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
火车票售票系统软件工程设计报告
成绩:
软件工程课程设计说明书
专业_网络工程
班级__
姓名_
学号_
指导老师_
完成日期2014-09-18
火车票售票系统
摘要
火车站是目前客流量最大的运输工具。
对于售票如此大的工作量,完全靠人工是不可能达到高效水平的,因此,开始思考开发提高售票效率以及劳力的计算机售票系统。
售票系统的核心是数据库技术,利用数据库将整个火车站的票务情况存入计算机,再配置上用户接口,基本实现了查询、售票、退票、订票、改签等功能,一定程度上提高了售票效率。
针对火车站的售票实际情况,按照软件工程的结构化设计思想,经过项目的可行性研究和需求分析、总体设计、详细设计,以及编码实现和调试等步骤设计开发了火车站网上订票系统。
并运用数据流图和数据字典、E-R图和数据库逻辑结构、层次图、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行分析和设计。
关键词:
信息管理、售票、数据库、用户接口。
第一章前言
1.1项目开发的必要性
火车是目前客流量最大的运输工具,未来很长一段时间中也会延续这种现状。
传统的人工售票成本大,出错率高等缺点,已是跟不上现代人的生活节奏。
而软件相对于人工来说,它有更高处理速度,出错率也将很低,当然,其成本也会大大降低。
如今,对火车的要求在于提高售票效率,火车售票也渐渐进入自动化:
自动化售票,快捷方便的查询、改签、退票,智能化的订票。
在曾经看来是复杂繁琐的工作,变得简单快速人性化。
通过提高售票效率,还可以提高火车运输甚至整个运输业的运行效率。
火车站售票系统的主要作用是通过计算机实现票务信息的统一管理,来提高工作效率,使售票员售票和乘客购票更加方便高效。
实现计算机管理的当然少不了数据库技术。
我们可以利用数据库将整个火车站的票务情况存入计算机,再配置上界面友好功能完善的用户接口,以满足用户需求。
一个火车站售票信息管理系统应达到的目标是提供及时、准确的信息服务,加快信息检索的效率,实况灵活的查询,减轻管理人员制作报表和统计分析的负担,且系统规模不太大但又要保证支持日常工作的要求,以便系统应易于扩充,提高管理水平。
1.2项目功能的概述
本系统主要用于火车票的销售,提供了以下几个子功能:
用户登录和注册、火车票订购、火车票信息查询、订票查询、售票、取票方式、改签、退票以及后台方面的火车班次信发布、取消火车班次、订票生成、取票号生成等后台功能。
火车站售票系统将由四部分组成:
网上订票客户程序,售票员系统,系统管理员系统以及置于服务器的数据库服务器。
第2章软件开发环境
2.1软件开发环境
开发工具:
VisualC++6.0
使用的数据库:
Server2008
系统开发语言:
C++
开发环境:
Win7
2.2软件性能需求
本系统对电脑配置要求不高,一般中低端配置就行,由于开发环境是Win7,其他操作系统运行此系统的稳定性还未知。
第3章需求分析
3.1可行性研究
该阶段通过对系统目标的初步调研和分析,提出可行性方案并进行论证。
我们在这里主要从技术可行性、经济可行性和操作可行性三方面进行分析。
3.1.1经济可行性
本系统其他应用软件、硬件系统也易于获得.因此,开发成本较低。
而引进使用本系统后,与传统方式相比,具有高效率、低成本、高质量的特点,可以节省不少人力、物力及财力。
所以,从经济的角度来看,该系统可行。
3.1.2技术可行性
系统实现依靠我相对熟悉的c++语言和SQLServer2008数据库系统,其基本操作实质还是对数据库进行添加、删除、查找等操作。
所以,从技术角度来看,该系统可行。
3.1.3操作可行性
系统采用菜单式,实现用户与数据库的交互,界面设计时将尽量使系统界面简单易操作,充分考虑使用人员的习惯,使得操作简单,数据录入简单、迅速、规范、可靠;统计、计算准确;制表灵活;适应力强。
因此,操作方面的可行性也能满足。
3.2需求分析
需求分析是软件设计的一个重要的环节。
本阶段对售票系统的应用情况作全面调查,以确定系统目标,并对系统所需要的基础数据以及数据处理要求进行分析,从而确定用户的需求。
用户对系统的需求我们从以下几方面进行分析。
3.2.1功能需求
本火车售票系统应该具备如下功能:
1、查询模块:
分为对车次信息的查询和客户对已订车票信息的查询。
要求:
1)对车次的查询,可以按照发车车次进行查询;
2)车次信息包括:
火车列次、出发地、目的地、发车日期、开出时刻、票价。
3)座位类型设定。
4)车次信息只允许用户查询,不能修改。
2、售票模块:
通过查询系统,根据客户的需求找到满意的车次,再输入个人信息后直接通过网上售票确定已预订选中的车票。
要求:
售票记录应包括:
会员名、车号、发车日期、订购票数、总价。
3、退票模块:
可退票,通过查询系统,可以根据客户的名字找到客户的订票信息,通过退票模块退去已购车票。
4、改签模块:
当行程计划有变是,可改签,通过查询系统,可以根据客户的名字找到客户的订票信息,通过改签模块改签已购车票。
5、车次修改:
提供车次信息、票价修改、站点修改、增加车次,减少车次、车次的临时调度和临时路线更改等操作。
6、统计信息:
将要统计的车次号输进到统计界面,根据车次的售票情况作出销售额、客流情况统计表。
3.2.2数据需求
1、数据录入和处理的准确性
数据的输入是否正确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而得不到想要的结果。
数据的输入来源是手工输入。
所以系统地界面要让用户容易使用,如果用户出现误操作,系统能简单明了的给出中文提示。
2、数据的一致性和完整性
由于系统的数据是共享的,在不同的代售点中,车次信息是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。
要解决这一问题,要求系统能保证数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。
对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据,并给出出错提示。
3、数据的共享与独立性
整个售票系统的数据是共享的。
然而,从系统开发的角度上看,共享会给设计和调试带来困难。
因此,应该提供灵活的配置,使不同权限的用户都可以正常进行操作。
3.2.3性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。
1.准确性和及时性
系统处理的准确性和及时性是系统的必要性能。
系统应能及时而且准确的根据用户权限及所输入的信息做出响应。
由于本系统的查询功能对于整个系统的功能和性能完成举足轻重。
作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其准确性和及时性很大程度上决定了系统的成败。
在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性。
2.易用性
本系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。
这就要求系统能够提供良好的用户接口,易用的人机交互界面。
要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面,从而保证系统的易用性。
此外,对服务器的要求,至少能够满足当地售票人员同时访问。
对客户端,在线使用的电脑中安装即可使用,使用本系统功能时,电脑配置一般情况下,响应速度2s左右,
3.2.4约束与限制
客户下订单提交后需在半小时内进行确认信息,并且做出相应的决定,如:
退票、换票、付款等。
售票员在开车前半小时不准售票,在开车前2小时不准退票。
改签的天数的范围为1天,一天内只能改签一次。
关于操作权限,客户应该只有查询、订票、改签、退票的权限,售票员应该只有售票和查询票务信息的权限,管理员应该给予特殊权限,使之能对票务信息查询、修改。
第4章总体设计
4.1系统概要
本火车站售票系统是根据需求分析开发的原型系统,目的是为了火车站工作人员顺利快速完成每次售票工作,以致火车运行畅通。
该系统在开发各个阶段,都突出现代软件设计的新思想、新技术的研究与应用及其有效性和实用性的证实。
系统使用的用户主要有:
客户、售票员、系统管理员。
都是在客服端界面上进行操作,并不需要了解服务器具体情况。
只要用户的计算机上安装本单机版软件便可方便的使用本系统。
4.2系统结构组成
系统的软件系统总体分为五部分:
登录、售票、退票、改签、用户管理。
:
登录模块:
验证用户合法性,登录后设定用户权限;
售票模块:
提供查询和售票操作;
退票模块:
提供查询、核对信息和退票操作;
改签模块:
提供查询、核对信息和改签操作;
车次修改:
提供车次信息、票价修改、站点修改、增加车次,减少车次、车次的临时调度和临时路线更改等操作;
统计信息:
将要统计的车次号输进到统计界面,根据车次的售票情况作出销售额、客流情况统计表。
总体数据流图如下图:
总体结构图下图:
第5章详细设计
5.1数据库设计
5.1.1数据库介绍
系统基于VisualC++6.0平台开发,使用了Server2008数据库。
Server2008功能强大,方便系统管理员组织和共享的数据库,方便系统管理员工作组作出更好的决策。
5.1.2数据表设计
下面具体创建每一个表:
表1管理员信息
字段名称
字段类型
主键
外键
是否为空
默认值
管理员ID
Varchar(10)
是
否
否
001
管理员姓名
Varchar(50)
否
否
否
Admin
管理员密码
Varchar(16)
否
否
否
无
表2售票员
字段名称
字段类型
主键
外键
是否为空
默认值
售票员ID
Varchar(10)
是
否
否
100
售票员姓名
Varchar(50)
否
否
否
无
售票员密码
Varchar(16)
否
否
否
无
证件号码
Varchar(20)
否
否
否
无
联系地址
Varchar(50)
否
否
否
无
联系电话
Varchar(20)
否
否
否
无
表3客户表
字段名称
字段类型
主键
外键
是否为空
默认值
客户ID
Varchar(10)
是
否
否
10000
客户姓名
Varchar(50)
否
否
否
无
客户密码
Varchar(16)
否
否
否
无
证件号码
Varchar(20)
否
否
否
无
真实姓名
Varchar(50)
否
否
否
无
联系地址
Varchar(100)
否
否
否
无
邮政编码
Varchar(10)
否
否
否
无
联系电话
Varchar(20)
否
否
否
无
表4订单信息
字段名称
字段类型
主键
外键
是否为空
默认值
订单号
Varchar(10)
是
否
否
10000
乘车日期
Datetime
否
否
是
无
车次
Varchar(10)
否
是
是
无
始发站
Varchar(10)
否
否
是
无
终点站
Varchar(10)
否
否
是
无
席别
Varchar(10)
否
否
是
无
票种
Varchar(10)
否
否
是
无
张数
Varchar(5)
否
否
是
1
备注
Varchar(100)
否
否
是
无
表5列车信息表
字段名称
字段类型
主键
外键
是否为空
默认信息
始发站
Varchar(10)
否
否
是
无
车次
Varchar(10)
是
否
否
无
终点站
Varchar(10)
否
否
是
无
发车时间
Datetime
否
否
是
无
停靠站
Varchar(10)
否
否
是
无
到站时间
Datetime
否
否
是
无
票种
Varchar(10)
否
否
是
无
表6火车票表
字段名称
字段类型
主键
外键
是否为空
默认信息
票种
Varchar(10)
是
否
否
无
车次
Varchar(10)
否
是
否
无
张数
Varchar(10)
否
否
是
1
5.1.3数据表的应用
当客户端登录时,后台服务器查找数据库,匹配相应的用户名和密码,若未找到,则返回错误信息。
登录订票系统,用到售票员表,通过每一个售票员来操作每一个终端,通过对客户需求(即:
客户买票的要求填写订单信息表,包括火车票表)。
若要查询统计功能则需要以管理员身份登录,用到管理员信息表,管理员可以修改列车时刻表。
5.2模块设计
本火车售票下系统主要有登录/注册、查询、售票、退票、改签、修改车次、统计信息这些功能,设计时按这些功能设计模块就可以了。
其详细功能图如下:
5.2.1登录/注册模块
本火车售票下系统有客户、售票员、系统管理员三种用户,其中客户可以自己注册账户登录,而售票员和系统管理员则直接由相关部门授权给定账号密码登录。
其程序流程图如下所示:
否
是
格式错误
格式正确格式正确
匹配失败
匹配成功
是否
客户登录/注册模块流程图
是
格式错误
格式正确
匹配失败
匹配成功
售票员/管理员登录模块流程图
5.2.2查询模块
客户与售票员成功登录后,都具有查询车票信息的权限,其享有的操作是一样的。
查询可分为按车次查询与站点查询,客户或售票员通过输入待查询车次或者站点查询车票的相关信息,包括票价,时刻,剩余票数等信息。
若用户输入的车次或者站点错误,系统会提示输入错误。
能够对客户要求的大部分查询类型都能够查询,每个查询功能键都一目了然,能快速精确的显示要查询的信息。
要求单次的查询系统的处理时间在2秒以内。
查询功能时序图如下图:
查询功能时序图
输入项目:
车次号或者站名。
输出项目:
车次号、站点、发车时间、到站时间、剩余票数、车票价格、旅程历时。
该模块通过访问数据库查询车票信息,提取客户或售票员输入的车次或者站名,封装成SELECT语句,到数据库中查询车票信息,将信息返回到用户界面。
若输入错误,弹出错误提示框。
其程序流程图如下图:
格式错误
格式正确
无车票
有车票
查询功能流程图
5.2.3售票模块
客户成功登录后,享有购票服务;售票员成功登录后,享有售票权限。
购票与售票实质上是同一中操作,只不过是操作主体不同,下面对售票员的售票模块进行说明。
根据客户的需求如发车日期、发车时间、车票类型(学生票、军人票…)等,客售票员查询相关的车票信息,选择客户所需要的车次,下订单,然后结算。
单次售票任务在25秒之内完成,系统的反应时间在3秒之内;保证多台机器同时运行该系统不会有过高延时。
售票时序图如下图所示:
售票功能时序图
输入项目:
车次、站点、日期。
输出项目:
车票信息、剩余票数。
售票员输入客户预购车票的相关信息,调用查询模块,到数据库中查询是否有票,若有,则选择需要的票数和车次,并将卖出票数写入数据库,数据库中对应车次剩余票数刷新,储存,售票员选择打印火车票给客户;若无则提示车票已售完,回到输入信息界面,重复上边的算法流程。
售票算法流程图如下图:
无车票
有车票
售票算法流程图
5.2.4退票模块
客户与售票员登录后,均有退票的权限,下面对售票员的退票情景进行分析。
处理客户由于某种情况需要退回车票的情况,客户要在车站指定的时间内进行退票。
超过指定时间,只能改签,不能退票。
系统及时的记录下所退回的车票,更新数据库。
退票时序图如下图所示:
退票时序图
输入项目:
车票编号。
输出项目:
确认车票界面、警告提示、退票款、数据修改成功。
售票员扫描客户欲退车票的条形码,获得车票编号,售票员点击退票按钮,将车票编号交给退票模块。
退票模块到数据库中查询此票是否已售出,若匹配则点击确认退票,退票模块修改数据库,售票员返还退票款;若不匹配则会提示售票员此票未售出。
退票算法流程图如下图所示:
无记录
有记录(已卖出)
是
否
是
退票算法流程图
5.2.5改签模块
客户与售票员登录后,均有改签的权限,下面对售票员的改签情景进行分析。
计划临时变更需要更改出发日期,或者退票不成功,可以选择改签服务。
售票员收回客户车票,返还票款。
若客户需要日期的票有剩余,则重新卖给客户一张票;若票已售完,则退出。
改签时序图如下图所示:
改签时序图
输入项目:
车次、日期
输出项目:
警告提示、新车票
售票员扫描车票条形码,输入到改签界面,改签模块进入数据库中确认该车票确实售出。
若确实售出,则返还退票款,并根据乘客需求另售一张指定日期车票;若没有售出,警告提示售票员车票有误。
改签算法流程图如下图所示:
否
是
否
有
改签算法流程图
5.2.6修改车次模块
系统管理员通过该模块修改需要变更的车次信息,包括车次修改、票价修改、站点修改。
车次修改包括增加车次,减少车次,车次的临时调度和临时路线更改。
票价修改为节假日、春运等特殊时段或某些特殊地域需要适量增加或减少票价。
站点修改可是某些车次增加或减少一些站点。
其时序图如下图所示:
修改车次时序图
管理员输入要修改的车次,提交给修改模块,修改模块根据管理员输入的信息进入数据库查询到相关表中数据,并修改,修改成功后给管理员显示修改之后的信息内容。
5.2.7统计信息模块
主要是统计车票的销售情况以及销售额等。
同时通过车票统计还可得知不同日期车流量的情况,为列车调度提供第一手资料。
统计时序图如下图所示:
统计时序图
售票员将要统计的车次号输进到统计界面,控制器提取数据,进入数据库查询统计表,返回给售票员,售票员根据车次的售票情况作出销售额、客流情况统计表。
统计算法流程图如下图所示:
不存在
存在
统计算法流程图