软件工程售票系统详解.docx
- 文档编号:10395870
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:49
- 大小:616.94KB
软件工程售票系统详解.docx
《软件工程售票系统详解.docx》由会员分享,可在线阅读,更多相关《软件工程售票系统详解.docx(49页珍藏版)》请在冰豆网上搜索。
软件工程售票系统详解
一问题的定义
当今社会发展迅速,地铁已经成为人们在交通方面不可缺少的交通工具,乘坐地铁出行的人越来越多,所以地铁的客运量也在迅速的增长着。
同时,时间代表的是生命,为了给人们带来方便快捷的交通环境,铁路系统采取提高列车速度,增加客运列车数量等等方式来满足大量旅客的乘车需求。
但是,在现在人多车多的情况下,如果再像从前一样,在一个单一的地点售票,必然满足不了现在的形式所以就需要售票能够在不同的地点进行,同时旅客也应该能够在购买车票之前知道自己所需要的列车是否有票等信息。
如此的情况之下,售票系统的需要自然是相当必要的。
售票系统的出现能够在很大的程度上解决单一地点售票所带来的种种不便,并且能够给想要出行的旅客带来足够的相关信息,使旅客们不必非要到车站的售票处去,甚至于不用出门就能知道是否有合适自己出行的车票。
对于售票处的地点也从原来的单一地点(车站)变成了多个地点,可以在市内的多个地点(宾馆、酒店、娱乐场所等等)。
这样给将要出行的旅客带来了更进一步的方便。
使旅客无论是在金钱还是在时间方面都能够得到充分的节省。
绝大多数的城市轨道交通系统都是用来运载市内通勤的乘客,而在很多场合下城市轨道交通系统都会被当成城市交通的骨干。
通常,城市轨道交通系统是许多都市用以解决交通堵塞问题的方法。
随着中国城市的迅速发展,地铁承担着越来越重要的任务----缓解城市交通压力。
为了缓解城市交通压力,地铁自动售票系统应用而生。
地铁自动售票系统实现了售票机与互联网的混合销售模式,集成了IC/临时卡读写模块,支持IC/临时卡介质类型的门票的发售。
可以进行售票机查询以及网站自助查询等功能,缓解了地铁售票的压力,混合销售模式使购票更快捷,更明晰,为乘客与工作人员带来便捷。
二可行性分析
2.1编写目的
可行性研究的目的是明确将要设计的软件是否有开发价值,以最小的代价在最短的时间内确定问题是否可解。
对该系统开发时候可行。
经过对此项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临的问题及其解决方法进行初步设计和合理安排。
明确开发风险及其所带来的经济效益。
主要读者:
项目经理,项目总监,设计人员,开发人员,客户。
2.2项目背景
开发软件名称:
地铁售票系统
项目任务提出者:
太原科技大学计算机科学与技术学院软件工程课程设计提出
项目开发者:
陈欢张志桐
定义:
本项目主要用于地铁购票以及维护等功能。
主要功能:
为乘客提供地铁票购票服务,方便地铁工作人员的售票工作,提高购买车票效率,缩短购票时间,缓解购票压力。
性能要求:
地铁站需要实时保证在工作时间售票和统计每站的乘车人数和下车人数。
输出要求:
简捷,快速,实时。
完成期限:
预计三周。
2.3项目简要分析
系统简要描述:
在地铁站安装带有地铁售票系统的售票机,主要目的是向地铁运输局传输数据统计每站乘车人数和下车人数,方便购票方便乘车。
当乘客购票时系统会根据乘客所选路线进行售票和统计并发送给地铁运输局终端。
系统会根据乘客所选路线进行收款,票据输出以及退款。
2.4经济可行性分析
基础投资:
地铁售票机10台30000元*10=30万元
网络设备20万元
辅助配置20万元
共计70万元
其他一次性投资:
操作人员培训费10万元
其他不可计支出:
20万元
人工费用:
2人*3(周)*10000=6万元
总支出共计:
106万元
效益
一次性收益0元
减少员工10人(1000圆/人)五年收益:
1000*(1.1+(1.1)2+(1.1)3+(1.1)4+(1.1)5)*10*12*5=60万元
工作效率提高收益(工作效率提高30%):
30*(1.1+(1.1)2+(1.1)3+(1.1)4+(1.1)5)*(30%)*5=45万元
共计105万元
不可定量收益
因服务质量提高增加旅客量10%:
1000万*10%*(90%+(90%)2+(90%)3+(90%)4+(90%)5)=360万元
收益共计:
465万元
收益/投资比:
465万元/106万元=439%
2.5技术可行性分析
就目前使用的开发技术及开发环境来说建议系统的功能目标应该能够达到;利用现有的技术在规定的期限内开发工作基本能够完成;开发人员的数量和质量均符合要求。
2.6用户使用可行性
本系统软件通过可视化编程,界面人性化,使用本软件人员可以根据系统提示自行进行购票。
简单易懂,实现了地铁购票的自主化。
2.7可行性分析总结
由于投资效益比远大于100%,技术、经济、操作都有可行性,可以进行开发。
三需求分析
3.1地铁售票系统功能需求
地铁售票系统系统是一种无人售票系统。
售票时,顾客把硬币或纸币投入机器的投币口中,机器检查硬币或纸币的特征来判断钱币的金额和真伪。
有效的钱币是一元币、五元币、十元币。
其他货币被认为是假币。
机器拒绝接受假币,并将其从退币孔退出。
当机器接受了有效的硬币之后,就把硬币送入硬币储藏器中。
顾客支付的货币根据硬币的面值进行累加。
地铁售票系机装有地铁票分配器。
每个地铁票分配器中包含零个或多个价格相同的地铁票。
顾客通过选择路线分配器来选择地铁票。
如果地铁票分配器中有地铁票,而且顾客支付的货币值不小于该票的价格,票将被分配到票据传送孔送给顾客,并将适当的零钱返还到退币孔。
如果分配器是空的,则和顾客支付的货币值相等的硬币将被送回到退币孔。
如果顾客支付的货币值少于所选择的分配器中票据的价格,机器将等待顾客投进更多的货币。
如果顾客决定不买所选择的货物,他投放进的货币将从退币孔中退出。
3.2数据流程图
自动售票机的数据流程图,如图3.1所示。
首先投入钱币,累计投币总额,判断所能购买的票据,选择所能购买的票据,交易成功,票据发放,取走货物与零钱。
图3.1自动售票机的数据流程图
3.3数据字典
乘客信息:
起始站,终点站,买票数量。
字段名
数据类型
字节数
起始站
Char
12
终点站
Char
20
买票数量
Char
10
地铁售票系统信息:
票价,支付金额,找零。
字段名
数据类型
字节数
票价
Char
12
支付金额
Char
11
找零
Char
11
3.4用例图
地铁自动售票系统是一个开放的平台,用户自由登入。
用户通过选择路线分配器来选择地铁票,并且当有余票时可以购买,并自动出票。
管理人员就是负责车票及地铁线信息的维护(包括增加,删除,修改),登入需要权限。
用例图如图3.2所示。
图3.2自动售票机用户用例图
3.5业务流程图
顾客投入钱币,由计币系统对钱币的金额和真伪进行辨别,由比较系统来判断投入的钱币所能购买的票据,通过选择系统选择购买票据或退币,如果选择购买票据,通过物品数量统计系统查询该票据是否售完,如果票据没有售完,由票据供应系统供应商品,否则,提示票据售完。
该系统业务流程图如图3.3所示。
图3.3自动售票机系统业务流程图
3.6运行需求
3.6.1用户界面
采用可视化的对话框方式与用户进行信息之间的交互,使用户有更好的使用体验,多功能窗口运行。
3.6.2硬件接口
(1)硬件接口:
支持x86系列PC机。
(2)网络硬件接口要求:
现实中要求具有高速以太网组网一实现联网销售,以便及时进行全站票务信息的更新。
3.6.3故障处理
正常使用时不用出错,对于用户的输入错误应及时给出适当的改正信息提示,若运行遇到不可恢复的系统错误,也必须保证数据库完好无损。
四概要设计
4.1地铁售票机系统控制设计
根据售票机自动控制系统的流程可以知道自动售货机的主要系统包括:
计币系统、比较系统、选择系统、票据供应系统、退币系统、警报系统、物品查询系统和票据数量统计系统。
4.1.1计币系统
当有顾客想要购买地铁票时,投入的钱币经过感应器,感应器记忆投币的个数关且传送到检测系统(即电子天平)和计币系统。
只有当电子天平测量的重量少于误差值时,允许计币系统进行叠加钱币,叠加的钱币数据存放在数据寄存器中,钱币可以一直累加,直到顾客选择结束投币后,钱币数据停止叠加并显示当前累计的钱币的总额。
如果不正确时,认为是假币,不允许钱币叠加,显示原有钱币的总额,等待顾客选择继续投币还是结束投币。
既定出投币,既定出系统,将数据寄存器中的钱币数据清空,等待新顾客。
4.1.2比较系统
投入完毕后,系统会把钱币数据和可以购买票据的价格进行区间比较,当投入的钱币小于所要购买的票据的价格时,指示灯亮,显示投入的钱币不足,还差多少钱币。
此时可以选择再投币或选择退币。
当投入的钱币等于或大于所购买的票据的价格时,物品选择指示灯长亮,交易成功。
当投入的钱币大于最高票据的价格时,所有货物的指示灯同时长亮。
此时可以选择想要够买的票据或选择退币。
4.1.3选择系统
比较系统完成后选择电路指示灯是长亮的,当按下在钱币购买范围内的票据选择时,相应的选择指示灯由长亮转为周期闪烁。
当饮料供应完毕时,闪烁同时停止。
4.1.4票据供应系统
当按下选择按钮时,相应的电磁阀和电机同时启动。
在票据输出的同时,减去相应的购买钱币数。
当票据输出达到10秒时,电磁阀首先关断,小电机继续工作1秒后停机。
此小电机的作用是:
在输出票据时,加快输出。
在电磁阀关断时,给电磁阀加压作用,加速电磁阀的关断。
4.1.5退币系统
当顾客购完地铁票后,多余的钱币只要按下退币按钮。
系统就会把数据寄存器D2内的钱币数首先除以10得到整数部分,是1元钱需要退回的数量,存放在D10里。
余数存放在D11里。
再用D11除以5得到的整数部分是5角钱需要退回的数量,存放在D12里。
余数存放在D13里。
最后D13里面的数值,就是1角钱需要退回的数量。
在选择退币的同时启动3个退币电机。
3个感应器开始计数,当感应器记录的个数等于数据寄存器退回的币数时,退币电机停止运转。
4.1.6报警系统
报警系统如果是非故障报警,只要通过网络通知送票车或者送币车即可。
但是如果是故障报警则需要通知维修人员到现声进行维修。
同时停止服务,避免造成顾客的损失。
4.1.7物品查询系统
在购买票据时,先选择票据查询功能,了解售票机所出售的票据和票据的价格,便于顾客判断是否购买,减少不必要的麻烦。
4.1.8物品数量统计系统
供应商所在售票机中供应的数量为初始值,每出售出一份票据,统计票据的数量减一,直到售票机中供应的数量为0时,显示,该票据已售完,请选择其他票据或退币。
4.2软件结构设计
4.2.1软件构架
该系统软件结构如图4.1所示。
图4.1地铁自动售票系统软件结构图
4.2.2模块之间的关系
“功能选择”这个框架分为下面六个模块,各模块之间的关系如图4.2所示。
4.3地铁自动售票系统功能模块图
地铁站售票系统是根据需求分析开发的原型系统,目的是为地铁站工作人员快速完成售票工作,使地铁运行流畅。
该系统在开发各个阶段,都突出现代软件的新思想,新技术的研究与应用及其有效性和实用性的证实。
系统的软件系统总体分为五部分:
登录、售票、查询、找零、数据管理。
登录模块:
验证管理员合法性,登录后设定权限;
售票模块:
提供查询和售票操作;
查询模块:
提供查询、核对信息操作。
找零模块:
提供找零操作。
数据管理:
提供用户信息的管理
地铁站售票系统功能模块图如图4.3所示。
图4.3地铁站售票系统功能模块图
五数据库设计
5.1数据库实体设计
E-R图是描述系统概念模型的有力工具,它是将分析得到的用户需求抽象为概念模型的过程,即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系的模型。
这样才能更好地、更准确地用某一DBMS实现这些需求,它是整个数据库设计的关键。
概念结构的主要特点是能真实、充分地反映现实世界,易于理解,易于更改,易于向关系等各种数据模型转换。
系统的实体图如下。
IC卡类别属性包括IC卡编号、用户、电话、余额、折扣,如图5.1所示。
图5.1IC卡类别属性图
临时卡属性包括临时卡编号、用户、电话、折扣,如图5.2所示。
图5.2临时卡属性图
车站类别属性包括车站编号、车站名、人流量、图片。
如图5.3所示。
图5.3车站类别属性图
票价类别包括票价编号、起点、终点、金额,如图5.4所示。
图5.4票价属性图
订单类别属性包括订单编号、起点、终点、订单总额、票数、日期、往返、卡号,如图5.5所示。
图5.5订单类别属性图
列车类别包括列车编号、车站名、图片。
如图5.6所示。
图5.6列车属性图
5.2数据库表设计
在本系统中,涉及到如下的表结构。
(1)IC卡类别表——ICCard,IC卡类别属性包括IC卡编号、余额、用户、电话、折扣这些属性,如表5-1所示。
表5-1IC卡类型表(ICCard)
字段名
类型
描述
备注
ICCardNo
char(9)
IC卡编号
主键(自增)
balance
Double
IC卡余额
user
varchar2(10)
IC卡用户
tel
Char(11)
IC卡电话
discount
Double
IC卡折扣
外键
(2)临时卡表——TemporaryCard,临时卡属性包括临时卡编号、用户、电话、折扣,如表5-2所示。
表5-2临时卡(TemporaryCard)
字段名
类型
描述
备注
TemporaryCardNo
char(9)
临时卡编号
主键(自增)
user
varchar2(30)
临时卡用户
tel
char(11)
临时卡电话
discount
varchar2(10)
临时卡折扣
外键
(3)车站类别表——StationType,车站类别属性包括车站编号、车站名、人流量、图片,如表5-3所示。
表5-3车站类别表(StationType)
字段名
类型
描述
备注
StationNo
char(9)
车站编号
主键(自增)
StationName
varchar2(30)
车站名称
vistorsflowrate
Int
人流量
picture
varchar2(10)
车站图片
(4)票价表——Fare,票价类别包括票价编号、起点、终点、金额这些属性,如表5-4所示。
表5-4票价表(Fare)
字段名
类型
描述
备注
fareNo
char(9)
票价编号
主键(自增)
origin
varchar2(10)
起点
terminal
varchar2(20)
终点
sum
Double
金额
(5)列车类别表——Train,列车类别包括列车编号、车站名、图片这些属性,如表5-5所示。
表5-5列车类型表(Train)
字段名
类型
描述
备注
TrainNo
char(9)
列车编号
主键(自增)
StationName
varchar2(10)
列车名称
Picture
varchar2(20)
图片
六详细设计
6.1查询模块设计
普通用户具有查询车票信息权限,用户输入车次或者始发站、终点站后就可以查询车票信息。
首先,用户输入车次或者始发站、终点站后,统计模块从数据库中查询相应的表项,然后将车票信息反馈给用户,如果存在余票则显示余票数量,提示用户可以订票,否则,显示无票信息。
该查询模块流程图如图6.1所示。
图6.1用户查询模块流程图
6.2售票模块设计
当有顾客想要购买地铁票时,投入的钱币经过感应器,感应器记忆投币的个数且传送到检测系统(即电子天平)和计币系统。
只有当电子天平测量的重量少于误差值时,允许计币系统进行叠加钱币,叠加的钱币数据存放在数据寄存器中,钱币可以一直累加,直到顾客选择结束投币后,钱币数据停止叠加并显示当前累计的钱币的总额。
投入完毕后,系统会把钱币数据和可以购买票据的价格进行区间比较,当投入的钱币小于所要购买的票据的价格时,指示灯亮,显示投入的钱币不足,还差多少钱币。
此时可以选择再投币或选择退币。
当投入的钱币等于或大于所购买的票据的价格时,物品选择指示灯长亮,交易成功。
当顾客购完地铁票后,多余的钱币只要按下退币按钮。
系统就会把数据寄存器D2内的钱币数首先除以10得到整数部分,是1元钱需要退回的数量,存放在D10里。
余数存放在D11里。
再用D11除以5得到的整数部分是5角钱需要退回的数量,存放在D12里。
余数存放在D13里。
最后D13里面的数值,就是1角钱需要退回的数量。
在选择退币的同时启动3个退币电机。
3个感应器开始计数,当感应器记录的个数等于数据寄存器退回的币数时,退币电机停止运转。
该模块流程图如图6.2所示。
图6.2售票模块流程图
6.3列车信息管理
只有管理员才可以对列车信息以及列车出发站、终点站信息进行增加、修改、删除。
管理员在登录页面按输入自己的用户名和密码,服务器接受到客户的请求后与数据库的用户表中的用户名和密码进行比较,如果表中存在该用户名且密码也相同,则用户登录成功,程序将进行下一步处理,如果用户名不存在或密码错误,将会给出相应的提示信息“用户名不存在”或“密码不正确”;如果用户不输入用户名或密码直接登录,系统则会提示“用户名或密码不能为空”。
管理员在登陆后可以对列车信息进行修改。
列车信息管理模块流程图如图6.3所示。
图6.3列车信息管理模块流程图
七测试报告
7.1管理员登录模块测试用例
管理员登录测试用例如表7-1所示。
7-1管理员登录测试
序号
测试内容
测试数据
期望结果
测试结果
测试结论
1
合法输入格式
“chenhuan”
“123456”
提示“登录成功”
提示“登录成功”
正确
2
错误用户名
“chenhua”
“123456”
提示“该用户不存在”
提示“该用户不存在”
正确
3
错误密码
“chenhuan”“1234556”
提示“密码不正确”
提示“密码不正确”
正确
4
空数据
Null
无显示
无显示”
正确
7.2用户输入功能测试用例
用户输入功能测试用例如表7-2所示。
7-2用户输入功能测试用例
序号
测试内容
测试数据
期望结果
测试结果
测试结论
1
合法输入格式
1
太原科技大学站
太原科技大学站
正确
2
错误功能号
12
提示“输入正确的功能号”
提示“输入正确的功能号”
正确
3
空数据
Null
无显示
无显示”
正确
7.3列车信息管理模块及车票查询模块测试
运行代码,显示全部车站的详细信息。
#include
#include
voidtaiyuankejidaxue();
voidzhongjisushe(intc);
voidxiayuan(intc);
voidligongdaxue(intc);
voidyingzeqiaodong(intc);
voiddananmen(intc);
voidwuyiguangchang(intc);
voidtiyuzhongxin(intc);
voidhuochezhan(intc);
intmain()
{intj;
printf("*********Hello,Welcometo地铁售票系统******\n");
printf("太原科技大学站欢迎你!
\n");
printf("===================================================\n");
printf("--------1.太原科技大学--------\n");
printf("--------2.重机宿舍--------\n");
printf("--------3.下元--------\n");
printf("--------4.理工大学--------\n");
printf("--------5.迎泽桥东--------\n");
printf("--------6.大南门--------\n");
printf("--------7.五一广场--------\n");
printf("--------8.火车站--------\n");
printf("0.退出\n");
printf("====================================================\n");
printf("选择你要到的站的编号以回车结束\n");
do{
scanf("%d",&j);
switch(j)
{case1:
/*调用该站的结构功能模块*/
taiyuankejidaxue();break;
case2:
/*调用该站的结构功能模块*/
zhongjisushe(j);break;
case3:
/*调用该站的结构功能模块*/
xiayuan(j);break;
case4:
/*调用该站的结构功能模块*/
ligongdaxue(j);break;
case5:
/*调用该站的结构功能模块*/
yingzeqiaodong(j);break;
case6:
/*调用该站的结构功能模块*/
dananmen(j);break;
case7:
/*调用该站的结构功能模块*/
wuyiguangchang(j);break;
case8:
huochezhan(j);break;
default:
printf("请输入正确的功能号\n");
}
}
while(j!
=0);/*结束*/
printf("谢谢\n");
}/*主函数结束*/
车票查询模块见图7.3
图7.3车票查询模块
7.4售票模块测试
printf("理工大学站\n");
printf("--------------------------------------------------------\n");
printf("每张票应付金额:
%d元\n",sum);printf("请输入你要购买的数量:
\n",c);
scanf("%d",&c);
total=sum*c;
printf("你应支付的金额是:
%d\n",total);
printf("------------------------------------------------------\n");
printf("本机只收取的硬币,一元,五元,十元及二十元的纸币,请按键输入金额\n");
printf("------------------------------------------------------\n");
printf("硬
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 售票 系统 详解