




免费预览已结束,剩余36页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内 蒙 古 科 技 大 学 课 程 设 计 说 明 书内蒙古科技大学本科生课程设计论文题 目:C+课程设计铁路售票管理系统的设计学生姓名:愚天者学 号:专 业:通信工程 班 级:10-2 指导教师: 目录第一章 C+简介-3第二章 问题描述 -6一 阐述你对问题的理解、解决问题的方案说明-6二 系统功能模块的划分-6第三章 数据模型-8一 类的设计-8二 程序结构说明-8三 全局变量的设置,重要形参,局部变量,以及它们的用途解释-8第四章 算法描述-10一 解题算法的设计思路介绍-10三 对运行结果进行测试和说明-11第五章 设计总结-20附录代码-21参考文献第一章 C+简介【摘要】随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,铁路客运系统在交通系统中已扮演着一个越来越重要的角色。然而,交通的快捷离不开信息的快捷。随着随着计算机的发展和普及,人们的生活方式发生了巨大的改变,计算机在代替和延伸脑力劳动方面发挥着越来越重要的作用。在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给计算机处理,就可以很好地满足我们的需求。列车售票管理系统可以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等工作。本文介绍了简易列车售票管理系统的实现过程。发展历史美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C+(最初这种语言被称作“C with Classes”)。一开始C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C+程序设计语言的国际标准ISO/IEC 1988-1998。C+是具有国际标准的编程语言,通常称作ANSI/ISOC+。 1998年是C+标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C+0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C+0x已经毫无疑义地成为正式国际标准。先前被临时命名为C+0x的新标准将被称为C+ 2011。C+ 2011将取代现行的C+标准ISO/IEC 14882,它公开于1998年并于2003年更新,通称C+98以及C+03。国际标准化组织于2011年9月1日出版发布ISO/IEC 14882:2011,名称是:Information technology - Programming languages - 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)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的C+语言的设计和演化(1994)里做了详尽的陈述。第二章 问题描述 一 说明所选题目要实现的功能以及设计思路。用C+设计一个系统,能提供下列服务:(1)录入车次信息,格式为:车次发车时间起始终点硬座票价剩余座位k26420:30包头北京110200可不定时地增加车次数据。(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类,通过设计一个对象数组,对应于每个对象都是一辆列车,对每个对象的属性都在定义类的时候加以定义,主要包括私有数据成员列车的车次checi10,列车的起始站点qishi10,列车的终点站zhongdian10,列车的票价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#includeint i=0; /定义全局变量控制列车总数class train_system private :/*/ char checi10,qishi10,zhongdian10; /定义列车属性 int timehour,timeminiute,cost,leftseat;/*/ public : void checi_output()/输出车次信息 coutcheci; void qishi_output()/输出起始站 coutqishi; void zhongdian_output()/输出终点站 coutcheci; void qishi_input()/录入起始站 cinqishi; void zhongdian_input()/录入终点站 cinzhongdian; void timehour_input()/录入时 cintimehour; cout时timeminiute; coutcost; void leftseat_input()/录入剩余座位数 cinleftseat; void shou()/售票后剩余票数自动减一 leftseat-; void tui()/退票后剩余票数自动加一 leftseat+;/*/;train_system *train=new train_system999; /定义全局对象数组void main()/*/ void foundation_1(); void foundation_2(); void foundation_3(); /声明基础功能模块 void foundation_4(); void foundation_5();/*/while(1)/*/ struct tm *local; char s1128; time_t t; /获取系统时间 t=time(NULL); local=localtime(&t); strftime(s1,128,%Y-%m-%d %H:%M ,local);/*/ cout欢迎进入铁路售票系统n; cout * 主菜单: *n; cout * 1-录入与删除列车信息(需管理员身份验证) 2-浏览列车信息 *n; cout * 3-查询列车路线 4-订票 和 退票 *n; /*系统页面*/ cout * 5-刷新时间 0-退 出 系 统 *n; cout *; cout 当前系统时间:s1;/系统时间输出 coutn; cout 请输入操作编号(选择05)feedback; while(!(feedback = 1 | feedback = 2 | feedback = 3 | feedback = 4 | feedback = 5 |feedback = 0) cout 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; case 5 :foundation_5();break; case 0 :return ;break;/*/ /*功能模块一*/void foundation_1()cout欢迎进入信息管理系统!; staticint mima=123; int miyue=0; coutn提示:初始密码设为123,初次登陆后请修改您的密码!miyue; if(miyue=mima) cout密码正确!n请输入操作编号,删除请按-1,添加请按-2,更改密码请按-3,退出请按-4xy; while(!(xy = 1 | xy = 2 | xy = 3| xy = 4) cout xy; switch(xy) /*/ case 4:return ;break; case 3:coutyuanshi; if(yuanshi=mima) cout密码正确!; coutmima; cout密码修改成功!; else cout密码错误,您没有修改权限!; cout继续请按-1,退出请按-2x; while(!(x = 1 | x = 2 ) cout x; /实现循环操作 switch(x) case 1: foundation_1();break;/递归调用实现循环 case 2: return ;break; ;break; case 2:cout请输入车次:; traini.checi_input(); cout请输入起始站点:; traini.qishi_input(); cout请输入终点站:; traini.zhongdian_input(); cout请输入时间:n; traini.timehour_input(); traini.timeminiute_input(); /列车信息录入 coutn; cout请输入票价:; traini.cost_input(); cout请输入座位数:; traini.leftseat_input(); cout信息录入成功!n; i+; cout继续请按-1,退出请按-2x; while(!(x = 1 | x = 2 ) cout x; /实现循环操作 switch(x) case 1: foundation_1();break;/递归调用实现循环 case 2: return ;break;break; /*/ case 1: coutx; int t=0; for(t=0;ti;t+) /利用数据覆盖的方法实现删除列车的目的 if(!(traint.checi_return(x) traint=traini-1; cout删除成功!; i-; cout继续请按-1,退出请按-2x; while(!(x = 1 | x = 2 ) cout x; /实现循环操作 switch(x) case 1: foundation_1();break;/递归调用实现循环 case 2: return ;break; /*/ ;break; /*/ else cout您输入的密码错误,请重新输入!; foundation_1(); /*/*功能模块二*/void foundation_2() cout欢迎来到浏览大厅!; int x; cout当前可查看列车总数为:in; cout火车基本信息如下:; for(x=0;xi;x+) coutendln车次 发车时间 起点站 终点站 硬座票价 剩余票数n; trainx.checi_output();cout ; couttrainx.timehour_output();cout点; couttrainx.timeminiute_output();cout分;cout ; trainx.qishi_output(); cout ; /信息输出模块 trainx.zhongdian_output();cout ; couttrainx.cost_output();cout ; couttrainx.leftseat_output(); coutn信息输出完毕!; couta; return ;/*功能模块三*/void foundation_3()cout欢迎来到列车信息查询页面!n; cout请输入列车查询方式,按列车车次查询请按-1,按起始终点站查询请输入-2,退出请按-3x1; /选择查询方式 while(!(x1 = 1 | x1 = 2| x1 = 3 )cout x1; /*按车次检索*/ switch(x1) case 3:break; case 1:coutx; for(t=0;ti;t+) y=traint.checi_return(x); if(y=0) cout车次 发车时间 起点站 终点站 硬座票价 剩余票数n; traint.checi_output();cout ; couttraint.timehour_output();cout点; couttraint.timeminiute_output();cout分;cout ; traint.qishi_output(); cout ; traint.zhongdian_output();cout ; couttraint.cost_output();cout ; couttraint.leftseat_output(); else cout当前列车信息不存在,请稍后查询!; coutn继续请按-1,退出请按-2x2; while(!(x2 = 1 | x2 = 2 ) cout 请输入正确编号(12):x2; /循环操作 switch(x2) case 1:foundation_3();break; case 2:return ;break;break; /*按起始终点站检索*/ case 2:cout请输入起始站或者终点站名!x; for(t=0;ti;t+) y1=traint.zho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年组织部招聘笔试模拟题及答案解析
- 2025年配电运维工招聘考试模拟题及答案详解
- 2025年村级安全员应急题集
- 2025年国画培训师中级面试模拟题及答案
- 2025年小学国家安全知识答案
- 2025年农村供水岗位招聘模拟题集
- 2025年村级碳汇管理中药招聘模拟卷
- 2025年供销总社招考笔试备考资料
- 护理概念图教学课件
- 2025年应急管理部面试常见问题及答案
- 艾滋病梅毒丙肝培训课件
- 导医课件培训
- 灭火毯培训课件
- 临床脑卒中后吞咽障碍患者进食护理团体标准
- 作业许可安全管理制度
- 2025年交通工程师考试试卷及答案
- 2023年白酒酿造、生产工艺、品鉴评师等知识竞赛试题库(附含答案)
- 2024-2025学年上课趣味互动《太乙惩罚》课件
- 建筑木工包工协议书
- 新药研发与临床应用的试题及答案
- 《抗高血压药物》课件
评论
0/150
提交评论