车站售票系统课程设计.docx
《车站售票系统课程设计.docx》由会员分享,可在线阅读,更多相关《车站售票系统课程设计.docx(49页珍藏版)》请在冰豆网上搜索。
![车站售票系统课程设计.docx](https://file1.bdocx.com/fileroot1/2023-6/14/d177b348-f3a6-4df8-b1ab-4cc3d8365d6f/d177b348-f3a6-4df8-b1ab-4cc3d8365d6f1.gif)
车站售票系统课程设计
2010-2011学年第二学期
《软件工程》课程设计
----售票管理系统
系部:
计算机科学系
专业:
计算机科学与技术
班级:
学号:
姓名:
指导教师:
设计日期:
2011年5月17日——2011年6月1日
第一章火车站售票系统可行性分析
1.1引 言
随着计算机技术的发展,人们对计算机智能化的需求越来越大,对软件的实用性、速度等性能的要求也越来越高。
未来火车站的发展趋势是完全自动化的售票、信息查询、网络订票、智能化订票,而且随着计算机的普及,信息处理量的逐渐扩大,手工处理方式已经远远不能满足人们管理活动的需要,各种工作都逐渐由手工转为自动化,将使许多复杂、繁琐、且需要很多人力的工作变得简单。
在本此系统设计中,由于时间与技术的关系,当然不可能做到这样的程度,只是基本实现火车站售票人员的基本功能——查询、购票、退票、订票、改签等,另外本系统还针对系统管理人员系统维护和管理功能进行实现。
1.1.1目的
火车站售票功能是本系统的根本任务,通过实现票务信息的计算机管理,以提高工作效率。
实现计算机管理的最佳技术就是数据库技术。
我们可以利用数据库将整个火车站的票务情况存入计算机,再配置上功能丰富的用户接口,以满足用户需求。
一个火车站售票信息管理系统应达到的目标是提供及时、广泛的信息服务,加快信息检索的效率,实况灵活的查询,减轻管理人员制作报表和统计分析的负担,且系统规模不太大但又要保证支持日常工作的要求,以便系统应易于扩充,方便日后统一联网与管理,提高管理水平。
火车票售票管理是一件比较复杂但又非常重要的事情,它是涉及国家铁路运输的正常工作、国民经济的发展和人民生活水平质量的大事情。
火车站售票涉及到许多内容,有乘客购票、咨询、改签或退票、电话订票、售票信息管理等。
因此,本系统设计就是专门解决这些问题的。
但是,本系统仅仅就火车站售票系统部分常用功能以及部分维护功能进行实现。
1.1.2学术背景与现实意义
在当今社会,计算机占据了非常重要的位置,这些大部分都是通过使用软件而提高生产、管理效率来体现的。
本文研究的火车站售票系统正好就是这样性质的一个软件。
铁路运输一直都是我国重要的经济命脉,而且由于我国是内陆国家,这铁路运输的意义就显得更加突出了,对于这样重要的一件事,当然需要良好的管理了。
经过几十年的发展,事实早就证明了使用计算机软件来辅助自己比单纯的人工处理手段高明的多,在这样的背景下,研究这样的课题的意义也就不言而喻了。
在以前,像售票这样的事,都是人工处理的,人工处理的缺点是显而易见的,成本大、处理的速度慢、出错的几率比较大,效率是很低的。
现在,在世界各国,火车售票使用的基本上都是员工操作计算机的模式,在这里,计算机主要是借助软件用来存储、更新数据的,并有统计帐目的功能。
严格的说,这并不是智能化,但是,这样的处理模式比已往的人工处理的好处显然还是很明显的,所有的数据都由数据库管理,可以随时动态的提取、存储数据,并可以将修改后的数据覆盖掉原有的数据。
所以,开发火车站售票系统软件是很有意义、有必要的。
系统的名称:
售票管理系统;
工程组织者:
08计算机科学与技术
(1)班;
产品所有权:
火车站售票系统开发小组拥有
任务的详细信息:
1)任务提出人:
陈利平老师
2)需求分析人:
蒋杰、邵欢
3)用户:
使用该软件的对象是火车站售票服务人员和信息管理人员。
1.1.3编写目的
本报告主要阐述了火车站售票系统的开发意义以及开发的可行性。
主要从技术可行性、经济可行性、法律可行性、操作可行性、运行可行性以及法律可行性等进行分析。
本文可供火车站售票管理部门以及相关软件开发人员参考。
1.2要求和目标
1.2.1基本要求
(1)功能该软件的功能为:
售票功能、查询功能、报表维护功能、管理功能、统计功能。
(可参考:
系统功能模块——图1.1)
售票功能:
服务人员可以进行售票、订票、退票等操作。
查询功能:
购票者可以请求服务人员完成车次、时间或地点完成查询操作,并浏览查询信息。
报表维护功能:
系统管理人员可以及时对车票表、预定表、退票表进行添加、删除、修改。
管理功能:
系统管理员可以对运价、车次、终点站以及售票员的信息进行删除、添加、修改。
统计功能:
售票员和系统管理员均可浏览车票统计情况以及打印报表。
(2)性能
方便数据的录入,使查询、售票速度大大提高。
方便数据管理和报表维护,使得铁路部门信息工作井然有序。
(3)系统的输入
购票者所要求的查询信息、购票信息、退票信息、订票信息等(主要是张数)。
(4)系统的输出
查询结果、操作提示和各类报表信息。
(5)数据安全和保密
系统对不同权限的用户提供不同的功能模块,有一定权限的用户可以进行操作,一般的用户只能进行查询的操作。
因技术原因,本系统数据库安全性需要进一步改进。
售票管理系统
售票功能
查询功能
管理功能
统计功能
车次查询
时间查询
地点查询
改
签
订
票
退
票
运价
修改
车次
修改
终点站
修改
车票统计
打印报表
售
票
图1.1——系统功能模块
1.2.2开发目标
本系统开发意在实现售票员快速、准确、方便地的完成查询、售票、改签、退票等操作,使得顾客短时间内获取所需的准确信息、节约时间,最终提高顾客满意程度。
另外,本系统还可对运价、车次、终点进行调整,对各类报表进行维护和统计,有利于铁道部门分析报表结果适时作出路线、车次、票价的调度,最终实现铁路线路保持畅通运行,为旅客提供优质满意的服务。
其次,本系统可减少一定人力资源,一名售票员或一个窗口可以“同步”完成查询、售票、改签以及退票等所有基本功能;本系统界面操作简单,功能全面,能够很好满足火车站售票需求。
这样,可以有效的利用适当的人力完成火车站的各种服务。
最后,本系统还提供功能强大的管理功能,即实现人员、车次、运价、终点站的修改以及各类报表的维护和打印,方便铁道部门信息管理。
1.2.3具备条件
开发环境:
自己计算机环境下开发(安装VisualC++6.0软件,Access2000数据库以及其他相关软件Rose)。
开发时间:
预计3个星期之内完成整个系统
开发人数:
2人。
系统预计使用寿命:
预计3年左右
经费条件:
无需经费。
法律条件:
所开发系统未侵犯任何系统版权,该系统所有权归开发小组所有。
1.2.4进行可行性研究的方法
本系统可行性研究主要是建立在调查结果之上,开发小组通过网络信息、实地考察以及问卷形式进行调查,统计结果表明:
本系统有开发的条件和价值。
本系统所需经费少、开发环境能达到所需要求,人力充足,技术比较成熟,时间比较合理,所以该系统开发是可行的、可实现的。
1.3所建议的系统
1.3.1所建议的系统说明
本系统充分地利用数据库技术对火车售票信息进行准确多方面的管理,其中数据库的安全性采用数据库加密的新技术。
火车站售票系统优化对数据库的查询、删除、添加等操作,同时可以为铁道部门管理人员提供准确的报表信息。
1.3.2系统处理流程以及数据流程
购票者
售票系统
数据库
提供所需信息
查询数据库
显示查询结果
反馈给购票者
图1.2—系统数据流图
1.4影响
1)对设备的影响
所建议的系统是在原有系统基础上开发的,在数据库技术方面做了改进,其功能具有兼容性,本系统是C/S单机版,在现有的计算机环境只需安装相应软件即可使用本系统。
2)对用户单位机构的影响
本系统主要供火车站售票人员和信息管理人员使用,系统界面友好、操作简单,用户不需进行专门培训,用户仅需要对各功能模块的流程熟悉,从而操作起来更加准确熟练。
3)对系统运行过程的影响
A.用户的操作规程:
用户根据购票者需求进行不同的操作时,只需要点击鼠标切换相应的界面。
B.源数据的处理:
信息管理人员需要及时更新系统数据库信息(车票信息)。
C.数据进入系统的过程:
当用户进行查询、售票、退票等操作时,数据主要在信息界面和数据库进行访问和更新。
D.输出报告的处理过程:
信息维护员可对各类报表进行修改、统计和打印,此时主要是对数据库的数据信息表进行操作。
4)对开发的影响
A.为了支持所建议系统的开发,用户需要了解火车站基本操作的流程。
B.数据资源:
本系统的的数据资源主要来至于铁道部门车票管理中心。
C.开发和测验所建议系统且需要的计算机资源:
现有的计算机硬软件条件均能满足本系统的开发和测试。
D.保密与安全问题:
本系统对数据库的安全问题采用加密技术,权限不同的用户执行不同的操作。
5)对经费开支的影响
本系统是有软件工程老师提出,作为一个课程设计,所以无需经费。
6)局限性
目前,本系统是C/S版,单机版运行,在异地时数据通信方面受限。
1.6可行性分析
1.6.1法律方面的可行性
该系统的开发和研制,将不会侵犯他人、集体和国家的利益,不会违犯国家政策和法律。
1.6.2使用方面的可行性
该系统操作简单,需要火车站售票人员熟悉业务流程,一般工作人员即可胜任。
1.6.3技术可行性
身为湖南工学院计算机信息与科学系的学生,通晓一些计算机软件知识是肯定的,技术方面其实也不用多说了。
我们刚刚学过数据库原理以及高级程序设计,这样本系统的界面设计可以使用VC制作,数据库方面可以使用Server2005、Access2000。
同时软件工程课程给予我们系统开发很大的理论支持。
所以技术方面是可行的。
1.6.4经济可行性
由于本系统是为火车站售票使用的系统,安装该应用软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为火车站节约大量的人力,物力。
所带来的效益远远大于系统软件的开发成本。
在经济上完全可行。
1.6.5操作可行性
界面设计时充分考虑使用人员的习惯,使得操作简单;数据录入简单、迅速、规范、可靠;统计、计算准确;制表灵活;适应力强。
1.7结论
综上所述,该项目应立即开始进行研发。
从人力资源优化角度来说,可以充分利用学校已有人力资源。
第二章需求分析
本售票系统需要满足来自两方面的需求,分别是售票人员和管理人员。
其中的图用RationRose和UMLStar绘制,由于篇幅所限,有部分内容予以省略。
2.1系统概述
2.1.1编写目的
编写本文档的目的在于详细、准确和全面的定义本售票系统的功能和用户需求,用以指导系统顺利地进行开发,并保证后续地开发能够保质保量的完成。
本文档所描述的需求信息将作为该项目最终验收的标准和依据。
2.1.2文档参阅对象
本文档的阅读对象有:
用户、需求分析人员、软件设计人员、软件实现人员、软件测试人员。
2.1.3本系统概述
本开发小组所开发的火车站售票系统能够完成火车票的查询、出售等一系列工作,方便火车票的出售、管理以及简化工作的过程,同时也节约人力、物力和财力,更加完善火车票的出售。
本项目开发的软件采用C/S结构,售票人员和管理人员使用,售票人员可以完成查询车票、售票、退票、改签等工作,管理员可以对整个系统进行管理(包括使用人员管理、数据库维护)。
2.2一般性描述
本系统不算太大,数据库设计比较简单,用户信息、系统信息、车票信息都放在数据库中。
2.2.1SystemUseCaseDiagram
系统用例图下图1-3所示。
图1-3系统用例图
各UseCase说明如下:
成功登陆系统
(1)查询——售票人员可做如下操作:
Step1:
输入所要查询车票信息;
Step2:
查看所查询结果显示信息;
Step3:
回复客户。
(2)售票——售票人员可做如下操作:
Step1:
按客户要求查询所需车票;
Step2:
查看车票信息,并回复客户;
Step3:
确认是否出售此票,收取现金;
Step4:
完成售票操作;
(3)退票——售票人员可做如下操作:
Step1:
核对所退车票信息是否符合退票;
Step2:
系统计算判断,确认找还余额;
Step3:
找还现金,完成退票操作;
(4)改签——售票人员可做如下操作:
Step1:
查询客户所提供车票信息;
Step2:
退票改签,系统判断;
Step3:
确认改签,找补现金;
Step4:
完成改签操作;
(5)管理:
系统管理人员可使用人员信息管理操作;
(6)系统功能模块如下表所示:
表1-1系统功能模块
功能模块
功能使用者
查询车票
售票人员
售票
售票人员
退票
售票人员
改签
售票人员
用户管理
管理人员
系统管理
管理人员
数据库管理
管理人员
2.2.2用户特征
本项目所开发的系统用户有两类,售票人员和系统管理员。
当火车站开始出售10天以内的车票时,售票人员就可以对车票进行出售。
对售票人员来说,只需要根据系统可显示出的车票信息进行出售。
系统中有哪些可出售车票,由列车运行中心传递信息,再由各售票站管理员添加信息至售票系统数据库。
管理人员可以对售票人员变更信息进行修改,或者临时变更对其进行更改信息等工作,并且售票人员不能使用管理功能。
2.2.3限制与约束
此系统必须满足以下限制:
系统中所有账户能够供用户随时使用,能够随时使用相应功能。
同一时刻,所有账户不能在多个地方登陆。
该系统必须确保所有数据安全,以免损失。
所有用户都要登陆才能访问,每个用户只能使用所属角色的权限,必要时限定访问次数。
该系统优点:
界面友好,操作简单;软件系统开放性好,结构灵活,可扩充,方便维护;安全可靠。
2.4假设与前提条件
假设用户忘记密码,可与信息管理员联系。
2.3功能需求描述
2.3.1 系统的类图
图1-4系统类图
所有的类:
购票者:
包括购票者的信息和可以执行的操作
售票员:
包括售票员的信息和售票员可以执行的操作。
管理员:
包括管理员的息和管理员可执行的操作。
火车票:
包括车票信息以及车票可执行的操作
2.3.2 类的详细说明
售票员
属性:
售票员编号:
每个售票员唯一的证件号码。
姓名:
售票人员姓名。
方法
录入信息:
录入需求信息。
提交信息:
根据用户需求经过录入信息,访问数据库。
管理员
属性:
编号:
数据库识别记录所用编号。
方法:
管理用户:
对售票人员进行管理。
管理系统:
对系统进行检查及维护。
管理数据库:
对数据库进行及时更新与管理。
2.3.3系统购票功能时序图
图1-5系统购票功能时序图
说明:
火车站售票是主要任务,所以分析人员选择了购票操作进行详细分析。
购票整个过程主要参与对象有:
顾客、服务人员以及购票系统。
过程中,主要是通过交流,获取准确的信息,系统通过对数据库处理。
进而完成购票。
2.4其它需求描述
2.4.1 性能要求
(1)对服务器的要求,至少能够满足当地售票人员同时访问。
(2)对客户端,在现使用的电脑中安装即可使用。
要求不高。
(3)使用本系统功能时,电脑配置一般情况下,响应速度2s左右,
2.4.2 设计约束
开发工具:
VisualC++6.0平台
发语言:
C++和C语言
开发方式:
团队开发。
2.4.3 进度要求
如果5到8人,在10天内应该要完成整个开发并测试。
如果5人以下,在15内应该完成整个工作并测试。
2.4.4 交付要求
该项目完成后,需向用户提交以下信息:
(1)软件可行性说明书,电子版和纸质版。
(2)软件需求分析说明书,电子版和纸质版。
(3)可运行的软件系统。
(4)部分或者全部C源码。
第三章火车站售票系统设计
本章根据火车站售票系统可行性分析报告和需求分析报告,并运用面向对象的设计思想,采用UML+StarUML和MSDEV工具的方法来对本项目的系统进行设计。
3.1 引言
3.1.1 系统概要及运行环境
火车站售票系统是根据需求分析开发的原型系统,目的是为了火车站工作人员顺利快速完成每次售票工作,以致火车运行畅通。
该系统在开发各个阶段,都突出现代软件设计的新思想、新技术的研究与应用及其有效性和实用性的证实。
本系统采用客服端/服务器模式(C/S),系统使用的用户主要有:
火车站售票员、系统管理员。
都是在客服端界面上进行操作,并不需要了解服务器具体情况。
只要用户的计算机上安装本单机版软件便可方便的使用本系统。
3.1.2 系统的组成部分及其结构
系统的软件系统总体分为四部分:
售票、退票、查询,浏览。
售票模块:
提供查询和售票操作;
退票模块:
提供查询、核对信息和退票操作;
3.1.3 参考资料
张海藩《软件工程导论》;
张荣梅《VisualC++使用教程》;
孙鑫《VC++从入门到精通》视频教程
《UML从入门到精通》
3.2 软件设计约束
3.2.1设计目标和原则
(1)本设计欲达到的目标:
能够达到用户的需求且系统具有良好的性能、易用性、可扩展和可维护性。
(2)为实现上述目标,在设计软件过程中采用UML语言来描述整个系统,在分析设计时充分利用软件框框及组合软件模式,利用前人的专家级经验,提高开发效率。
3.2.2设计约束
(1)无论是售票员还是管理员,都可以通过验证登录信息访问该系统,完成各自授权的活动和工作。
(2)该系统必须保证数据库的安全,设计时在数据库访问时添加了加密类,保证数据库安全。
(3)整个开发过程应满足软件需求分析的进度要求所规定的时间。
3.3 软件设计描述
该系统基于ViusalC++6.0平台开发,整体设计是根据火车站实际售票功能的流程而设计的。
3.3.1系统状态分析
该系统的状态划分比较具体,所展示给读者的是:
火车站售票员操作系统的几种状态。
系统状态图如下图所示,
图1-6系统状态图
3.3.2 总体结构设计
本系统由以下几个功能模块组成:
(1)售票/订票属性页类CTicketSalingDlg,该对话框主要是实现售票、订票业务。
(2)退票属性页类CTicketBackDlg,该对话框主要实现退票业务处理。
3.3.3 详细结构设计
(1)售票功能实现:
售票员登录进入系统,第一属性页即是售票窗口。
售票员根据顾客要求,输入购票信息(车次、时间、站点等),点击“查询”按钮,即可显示相关信息。
确认顾客购票信息,输入所需车票张数,点击“购票”按钮,系统即可显示所需金额,点击“确认”按钮进入确定购票操作,此时系统完成了票数减1。
具体设计界面如下:
图3-7系统售票图
(2)退票功能的实现:
先根据顾客所提供的车票查询,确认车票信息是否符合退票规定,售票输入退票张数,点击“退票”按钮系统界面显示找还余额和扣除余额,方便告知顾客详情。
系统实现票数加1,退票成功。
具体设计界面如下:
图3-8系统退票图
(3)系统浏览的实现。
图3-9系统浏览图
以上各个界面只为参考,具体设计结果根据可行性研究报告和需求分析报告设计来定,美观和整体主色周由设计师完成。
3.4参考代码
#include
#include
#include
#include
typedefstructinformation
{
intnumb;
charstarttime[10];
charbegin[21];
charend[21];
floatlasttime;
intcanload;
intalreadyload;
}INFORMATION;
voidAddInformation(void)
{
FILE*fp;
INFORMATIONinfo;
printf("请录入车次等信息,输入0返回到目录:
\n");
scanf("%d",&info.numb);
if(info.numb==0)return;
scanf("%s%s%s%f%d%d",info.starttime,info.begin,info.end,&info.lasttime,&info.canload,&info.alreadyload);
if((fp=fopen("c:
\\information.txt","a+"))==0)
{
printf("打开文件时发生错误!
");
exit(0);
}
fprintf(fp,"%d%s%s%s%f%d%d\n",info.numb,info.starttime,info.begin,info.end,info.lasttime,info.canload,info.alreadyload);
fclose(fp);
}
intGetHour(char*s)
{
char*p,*q;
p=(char*)malloc(10);
strcpy(p,s);
q=p;
while(*q!
=':
')
{
q++;
}
*q='\0';
returnatoi(p);
}
intGetMinute(char*s)
{
char*p;
p=(char*)malloc(10);
strcpy(p,s);
while(*p!
=':
')
{
p++;
}
p++;
returnatoi(p);
}
voidShowInformation(void)
{
FILE*fp;
INFORMATIONinfo;
time_tt;
structtm*timeinfo;
if((fp=fopen("c:
\\information.txt","r+"))==0)
{
printf("打开文件时发生错误!
");
exit(0);
}
time(&t);
timeinfo=localtime(&t);
while(!
feof(fp))
{
fscanf(fp,"%d%s%s%s%f%d%d\n",&info.numb,info.starttime,info.begin,info.end,&info.lasttime,&info.canload,&info.alreadyload);
printf("%d%s%s%s%f%d%d",info.numb,info.starttime,info.begin,info.end,info.lasttime,info.canload,info.alreadyload);
if(GetHour(info.starttime)tm_hour)printf("此班已发出!
\n");
elseif(GetHour(info.starttime)==timeinfo->tm_hour)
{
if(GetMinute(info.starttime)<=timeinfo->tm_min)printf("此班已发出!
\n");
elseprintf("\n");
}
elseprintf("\n");
}
fclose(fp);
}
vo