c++课程设计铁路售票系统方案.docx
- 文档编号:16585201
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:38
- 大小:818.18KB
c++课程设计铁路售票系统方案.docx
《c++课程设计铁路售票系统方案.docx》由会员分享,可在线阅读,更多相关《c++课程设计铁路售票系统方案.docx(38页珍藏版)》请在冰点文库上搜索。
c++课程设计铁路售票系统方案
科技大学
本科生课程设计论文
题目:
C++课程设计
——铁路售票管理系统的设计
学生:
团结
学号:
**********
学院:
信息工程学院
专业:
软件工程
班级:
12-2
******
第一章C++简介-------------------------------------------------------------------------------3
第二章问题描述-----------------------------------------------------------------------------6
一.阐述你对问题的理解、解决问题的方案说明----------------------------6
二.系统功能模块的划分----------------------------------------------------------6
第三章数据模型------------------------------------------------------------------------------8
一.类的设计-------------------------------------------------------------------------8
二.程序结构说明-------------------------------------------------------------------8
三.全局变量的设置,重要形参,局部变量,以及它们的用途解释--8
第四章算法描述-----------------------------------------------------------------------------10
一.解题算法的设计思路介绍---------------------------------------------------10
三.对运行结果进行测试和说明------------------------------------------------11
第五章设计总结-----------------------------------------------------------------------------20
附录代码----------------------------------------------------------------------------------------21
参考文献
第一章C++简介
【摘要】
随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,铁路客运系统在交通系统中已扮演着一个越来越重要的角色。
然而,交通的快捷离不开信息的快捷。
随着随着计算机的发展和普及,人们的生活方式发生了巨大的改变,计算机在代替和延伸脑力劳动方面发挥着越来越重要的作用。
在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给计算机处理,就可以很好地满足我们的需求。
列车售票管理系统可以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等工作。
本文介绍了简易列车售票管理系统的实现过程。
发展历史
美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(BjarneStroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“CwithClasses”)。
一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。
虚函数(virtualfunction)、运算符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常(exception)、RTTI、命名空间(namespace)逐渐被加入标准。
1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC1988-1998。
C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。
1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。
C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。
先前被临时命名为C++0x的新标准将被称为C++2011。
C++2011将取代现行的C++标准ISO/IEC14882,它公开于1998年并于2003年更新,通称C++98以及C++03。
国际标准化组织于2011年9月1日出版发布ISO/IEC14882:
2011,名称是:
Informationtechnology--Programminglanguages--C++Edition:
3。
发展阶段
C++语言发展大概可以分为三个阶段:
第一阶段从80年代到1995年。
这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;
第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。
当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;
第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
语言特点
·C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
·C++设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
·C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
·C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
·C++避免平台限定或没有普遍用途的特性。
·C++不使用会带来额外开销的特性。
·C++设计成无需复杂的程序设计环境。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。
关于此类话题,BjarneStroustrup的《C++语言的设计和演化》(1994)里做了详尽的述。
第二章问题描述
一.说明所选题目要实现的功能以及设计思路。
用C++设计一个系统,能提供下列服务:
(1)录入车次信息,格式为:
车次
发车时间
起始
终点
硬座票价
剩余座位
k264
20:
30
北京
110
200
可不定时地增加车次数据。
(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。
(3)查询路线:
可按车次编号查询,可按起始站,终点站查询
(4)售票和退票功能
A:
查询车次或站点。
当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。
B:
退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。
二.根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和力一法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)提交课程设计报告:
完成系统总结报告以及系统使用说明书
从对问题的描述可以知道,我们需要建立的是具有能对数据录入,追加,浏览,检索和修改功能的软件。
由于乘客的数量较大且不固定,因此选择用动态数组来保存乘客的基本信息:
列车号、起始站名、终点站名、发车时间、票价、剩余票数等。
所以我们建立了一个可以动态增长的数组,每次运行程序时手动录入数据。
系统主要实现的操作和功能是:
录入列车信息、浏览列车信息、查询列车信息、订票功能、退票功能。
由于在这些功能的实现中很多的功能都需要重复使用,因此编写时可适当注意代码的重复利用性,以降低整个程序编写的工作量。
一.阐述你对问题的理解、解决问题的方案说明
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类;
(3)完成类的描述(包括属性和方法);
(4)完成类中各个成.员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)完成系统总结报告以及系统使用说明书。
二.系统功能模块的划分
该系统总共包含五大功能模块:
1.更新列车信息功能模块
该模块为对列车信息的操作,仅向管理员开放使用,普通用户不
使用该功能对列车信息进行操作,故进入该功能需进行身份验证。
该模块又被分为两个子功能模块——信息的录入、与删除。
2.浏览列车信息
完成将文件中的列车信息按照要求格式全部输出。
3.查询列车信息
可以实现按列车号和按站点的查询并将查询到的信息输出。
4.订票和退票系统
该模块根据订票和退票操作的相似性,将这两种操作放在一起。
另外,由于各模块函数是直接对数组进行操作,所以各功能模块是相互独立的。
在模块实现各自功能时,部分代码可以相互利用,如在购票时首先会检索车次及站点信息,这是就可以重复运用模块三中的检索信息部分的代码,同时在输出检索结果时又可以重复利用功能模块二中的信息输出的代码。
还有就是各种操作指令的录入以及录入时的纠错功能都可以在每个模块中重复利用。
第三章设计分析
1.类的设计
在程序用到了一个train_system类,通过设计一个对象数组,对应于每个对象都是一辆列车,对每个对象的属性都在定义类的时候加以定义,主要包括私有数据成员列车的车次checi[10],列车的起始站点qishi[10],列车的终点站zhongdian[10],列车的票价cost,列车的发车时间timeminiute和timehour,以及列车的剩余座位数leftseat等。
然后根据功能的需要对每个数据成员都定义一个输出函数和输入函数,来提高数据的独立性。
2.程序结构说明
3.全局变量的设置,及各种参数的说明
设置了一个全局变量i控制系统的列车数,当程序各部分对i操作时都可以保证列车数的时时更新。
定义了一个全局对象数组,用来表示及存储数据信息
在整个程序的实行过程中,根据需要定义了,若干变量,同时利用作用域的特点在不同的位置定义相同的自变量已达到简化自变量的目的。
如指令输入的操作在系统中分布很广,因此就可以利用不同位置作用域有限的特点,灵活设置相同的操作变量x,y
第四章运行及测试结果
一.解题算法的描述
1.主函数里首先声明五个基础功能函数,然后进入循环体,接着定义一个变量来接受操作指令,并判断指令是否合法,然后运用一个条件判断语句来处理命令,对每条指令设置一个基础功能函数foundation(),根据指令进入相关功能模块。
2.模块一为数据录入与删除。
要进入该模块必须进行密码验证,初始密码设为123,进入后有三个选项,通过纠错语句保证指令正确然后执行相应功能---密码重置,信息录入,信息删除。
密码重置要求输入初始密码保证安全性,通过设置静态变量保存密码信息来达到修改的目的。
信息录入包括车次,发车时间,起始与终点站,票价,剩余票数等。
录入时调用对象数组的成员函数来接收和储存信息。
信息的删除则是利用信息覆盖的技巧来实施,将对象数组的最后一个对象拷贝覆盖到当前待删除的对象,然后整个对象数组的长度减一,从而实现删除信息的目的。
3.模块二为数据浏览。
这里由于没有其它要求,只要将对象数组的每个数据成员输出到屏幕即可,因此这里主要是调用对象的成员函数将数据输出。
4.模块三为检索信息。
这里系统提供两种检索方式,即按车次(checi)检索和按起始终点站(qishi,zhongdian)检索。
按车次检索时,首先定义一个字符串数组,来接收带检索信息,然后送入循环语句,用strcmp比较函数将检索信息同对象数组的每一个对象的车次(checi)进行比较,相同则返回0.通过if语句判断执行输出该车次信息。
而按起始终点站检索则同车次检索信息原理一样,只不过这里增加了一个比较变量,返回时用或语句将两个返回值合并起来再用if语句进行判断,最后输出检索信息。
5.模块四为为售票与退票系统。
首先检索待购车次信息,这时可直接移植模块四中的代码,然后在输出结果后面添加上购票与退票的代码,同时售票或者是退票完成后调用成员函数shou()与tui()实现剩余座位数自加或者是自减来同步票数信息。
6.模块五为刷新时间程序,由于系统时间只在程序运行时获取,所以失去了实时性,因此添加一个模块什么也不做来达到刷新屏幕时间的目的。
二.对运行及测试结果进行说明,并添加运行界面的截图。
进入主页面:
有输入纠错的功能,当输入错误时,提示:
选择1,进入模块一
提示输入密码
密码正确后进入管理系统
有三个选项
输入3修改密码为0000
继续操作,然后开始录入信息
提示录入成功
进入浏览模块,提示总数为5,并输出全部列车信息
然后进入模块一删除列车1484
然后浏览车次信息,发现1484已被删除
接着进入模块三检索车次信息,系统提供两种检索方式---车次检索,站点检索。
首先按车次检索,输入1482
检索成功,然后按照站点检索。
输入
检索成功,进入模块四订票
先检索预购的车次信息,若发车时间早于系统时间,则显示列车已发车
若没有票,则显示票已售完
否则
提示购票或者是退票
分别选择购票和退票后输出如下信息
退票
最后就是刷新时间和推出系统两个测试模块了
刷新时间
退出系统
第五章课程设计总结
总结课程设计中用到的知识点,加上自己的心得体会。
在这次课程设计中,由于对很多的知识不太了解,因此也不敢随意运用。
所写的程序全都是用非常基础的知识写成的,然后运用各种逻辑算法组合而成,虽然整体写的比较简单,但是对于程序所要求达到功能都已一一实现。
尽管程序代码比较简单。
但还是参考了《C++面向对象程序设计》以及《C语言程序设计》这两本教材。
整个设计的过程中基本用到了,类与对象的知识,指针数组,对象数组,循环语句,条件判断语句,然后就是各式的函数调用语句以及参数传递的知识等
通过这次课程设计,我明白了编写那些大型的软件的艰辛与不易,每一个用户的动作都需要程序员精心的设计代码,配以严格的算法最终才能实现软件各式各样的功能。
另外就是要能灵活的运用各种简单的代码,代码虽然简单,可是只要程序员有灵活运用它们的能力,再简单的代码也能组合出功能丰富的程序。
最后一点就是写程序是一件极为考验耐心的事情,有时你可能得连续编程好几个小时只为了解决一个操作上的问题,这就要求程序员要有极好的耐心与热情,以及写好程序的决心。
刚开始时,基本上是无从下手的,于是上网查找了很多的资料加上参看一些优秀的论文,开始写出了主函数,接着顺着主函数的思路,一个一个的写模块,写完后,花了两天的时间写出了程序的主要代码,完成了主体结构的设计,然而开始时并不能运行,于是又花了一天的时间进行调试排错,运行出来后,又花了一天时间改进修饰,如加上了密码修改的代码。
最终完成了现在的程序。
由于临近考试,时间总体来说不是很充分,因此很多地方都是可以再加以改进的,如对于一些整形变量的输入,当输入字符类型时,系统便会出错,还有就是整个程序由于没有实现写入文件的操作,因此每次运行时都得重新录入信息,这是一个缺陷,但是总体来说,程序的功能达到了设计的要求。
写好一个程序并最终能完美的运行出来是一个程序员最激动兴奋地事情,它是程序员心血与智慧的结晶。
附录
#include
#include
#include
inti=0;//定义全局变量控制列车总数
classtrain_system
{private:
/*******************************************/
charcheci[10],qishi[10],zhongdian[10];//定义列车属性
inttimehour,timeminiute,cost,leftseat;
/*******************************************/
public:
voidcheci_output()//输出车次信息
{cout< voidqishi_output()//输出起始站 {cout< voidzhongdian_output()//输出终点站 {cout< inttimehour_output()//输出时 {return(timehour);} inttimeminiute_output()//输出分 {return(timeminiute);} intcost_output()//输出票价 {return(cost);} intleftseat_output()//输出剩余票数 {return(leftseat);} intqishi_return(char*p)//找出符合条件的起始站 {inti; i=strcmp(p,qishi); return(i);} intzhongdian_return(char*p)//找出符合条件的终点站 {inti; i=strcmp(p,zhongdian); return(i);} intcheci_return(char*p)//找出符合条件的车次 {inti; i=strcmp(p,checi); return(i);} voidcheci_input()//录入车次 {cin>>checi;} voidqishi_input()//录入起始站 {cin>>qishi;} voidzhongdian_input()//录入终点站 {cin>>zhongdian;} voidtimehour_input()//录入时 {cin>>timehour; cout<<"时"<<'\n';} voidtimeminiute_input()//录入分 {cin>>timeminiute; cout<<"分";} voidcost_input()//录入票价 {cin>>cost;} voidleftseat_input()//录入剩余座位数 {cin>>leftseat;} voidshou()//售票后剩余票数自动减一 {leftseat--;} voidtui()//退票后剩余票数自动加一 {leftseat++;} /*******************************************/ }; train_system*train=newtrain_system[999];//定义全局对象数组 voidmain() {/************************************/ voidfoundation_1(); voidfoundation_2(); voidfoundation_3();//声明基础功能模块 voidfoundation_4(); voidfoundation_5(); /************************************/ while (1) {/*******************/ structtm*local; chars1[128]; time_tt;//获取系统时间 t=time(NULL); local=localtime(&t); strftime(s1,128,"%Y-%m-%d%H: %M",local); /*************************************************************************************************/ cout<<"\n>>>>>>>>>>>>>>>>>>>>>>>>>>欢迎进入铁路售票系统<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<'\n'; cout<<"******主菜单: *********"<<'\n'; cout<<"******1--录入与删除列车信息(需管理员身份验证)2--浏览列车信息*********"<<'\n'; cout<<"******3--查询列车路线4--订票和退票*********"<<'\n';/*系统页面*/ cout<<"******5--刷新时间0--退出系统*********"<<'\n'; cout<<"********************************************************************************"; cout<<"当前系统时间: "< cout<<'\n'; cout<<"请输入操作编号(选择0~5)"< /************************************************************************************************/ charfeedback; cin>>feedback; while(! (feedback=='1'||feedback=='2'||feedback=='3'||feedback=='4'||feedback=='5'||feedback=='0')) { cout<<"请输入正确编号(0~5): "; cin>>feedback; } switch(feedback) {case'1': {cout<<"已为您转入信息管理系统.........."<<'\n';foundation_1();};break; case'2': {cout<<"已为您转入当前列车信息页面........."<<'\n';foundation_2();};break;//功能选择模块 case'3': {cout<<"已为您转入列车查询系统........"<<'\n';foundation_3();};break; case'4': {cout<<"已为您转入车票服务系统........"<<'\n';foundation_4();};break
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计 铁路 售票 系统 方案