《C++课程大作业参考报告(共25页).doc》由会员分享,可在线阅读,更多相关《C++课程大作业参考报告(共25页).doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上目 录专心-专注-专业第一章 需求分析1.1 问题描述飞机订票系统设计假定民航机场共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额。试设计一民航订票系统,使之能提供下列服务:v 航班信息录入功能(航班信息用文件保存)输入v 航班信息浏览功能输出v 查询航线:(至少两种查询方式)算法按航班号查询 按终点站查询v 承办订票和退票业务1.2 功能需求 根据要求用户需要设计一个关于售票处服务系统程序,使航空公司可以通过的乘客简单地输入个人部分信息,便可方便的管理机票。该程序还要实现以下功能:(1) 能够对航空航线进行查询
2、;(2) 能够自主的承办订票业务(3) 能够自主的承办退票业务1.3 开发环境应用VisualC+,VisualC+不仅仅是一个C+编译器,而且是一个基于Windows操作系统的是集成开发环境IDE,这种环境开发出来的软件稳定性好、可移植性强,可以编制各种的Windows应用程序。1.4 开发过程第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)第二章 概要设计2.1 总体设计根据需求分析,由于程序较为简单我们将只设计一个类:plane(即航班类)。其主要功能模块有:(1) 输入(2) 输出(3) 票额计算(4
3、) 查询(5) 订票(6) 退票各功能模块的调用应通过菜单进行选取。由于乘客和机票的主要信息是由plane类的对象所生成,而且机票的管理自动运行,plane类的构造函数的设计以及机票数额计算的设计要尤其精细,因为这两个函数的调用十分的频繁。2.2 航空类的定义class Planeprivate:char name40;/终点站名int number;/航班号int Number;/飞机号int week;/星期几飞行int day;/日期int left;/余票额int n;/与数组flag一起确定客户订票状态public:int flag20;/订票状态数组,-1为预订票,1为已定票,0为
4、初始化状态Plane()/构造函数name0=0;number=0;Number=0;week=0;day=0;left=M;n=0;/数组从0开始计数for(int i=0;i20;i+)flagi=0;void init()/初始化每种飞机票coutname;coutnumber;coutNumber;coutweek;coutday;Plane();/析构函数char *getname()return name;/获得终点站名int getnumber()return number;/获得航班号int getNumber()return Number;/获得飞机号int getweek(
5、)return week;/获得星期几飞行int getday()return day;/获得日期int getleft()return left;/获得余票额int getn()return n;/获得旅客数目void inleft(int n)left=left+n;/余票额增加函数void deleft(int n)left=left-n;/余票额减少函数void inn()n+;/旅客数目增加函数;2.3 接口设计 表2.1:函数列表函数名函数格式 /即函数首部函数功能Showmenu()Int Showmenu()菜单函数Start()Void start()初始化函数query()
6、Void query()查询函数make()Void make()订票函数back()Void back()退票信息Writetofile()Void writetofile()写入文件2.4 运行界面设计Plane类售票处的服务系统 图2-2 类的结构Plane类数据保存查询订票退票数据录入 图2-3 系统结构示意图第三章 详细设计3.1 输入模块设计主要功能用来对航班信息的进行收集和输入。将航班信息保存在系统中的前提下,需要输入航班资料,比如航班号,飞机号,航班终点站,航班时间,机票数。该信息输入成功后,可继续输入航班信息,否则系统返回到主菜单。第一段:void init()/初始化每种飞
7、机票coutname;coutnumber;coutNumber;coutweek;coutday;第二段:void start()for(int i=0;iN;i+)pli.init();coutendl;3.2 查找模块设计主要功能是对航班信息的查找。在系统已经录入航班信息前提下,使用该功能通过查找方式进行查找航班信息。具体包括按按终点站查找。在查找航班各方面信息后,按任意键就可以返回主菜单。void query()int i,num=0;char name40;coutendl;coutname;for(i=0;i=N;i+)if(strcmp(name,pli.getname()=0)
8、num+;cout航班号:pli.getnumber()endl;cout飞机号:pli.getNumber()endl;cout星期:pli.getweek()飞行endl;cout航班日期:pli.getday()endl;cout余票额:pli.getleft()endl;break;if(num=0)cout没有此航班endl;3.3 订票模块设计(1) 用于乘客预定机票并就乘客的操作管理机票(2) 具体语句为:void make()int number,n,sitnumber,nu,ch,num=0;coutnumber;coutn;for(int i=0;iN;i+)if(numb
9、er=pli.getnumber()num+;if(n=pli.getleft()cout此航班有票endl;pli.deleft(n);pli.inn();pli.flagpli.getn()=1;for(i=0;in;i+)3.4 退票模块的设计(1) 用于乘客退定机票并就乘客的操作管理机票(2) 具体语句为:void back()int number,day,n,nu,sitnumber,num=0;/航班号,日期,退票数目,订票数目,座位号,标志量coutday;coutnumber;for(int i=0;iN;i+)if(day=pli.getday()&(number=pli.g
10、etnumber()/日期与航班是否满足num+;/日期与航班满足coutn;cout退票成功endl;pli.inleft(n);/该种飞机票增加,即已退票for(int j=0;j=pli.getn();j+)/顺序查询客户订票状态if(pli.flagj=-1)/客户是否为预定状态coutnu;if(nu=pli.getleft()/余票额是否满足要求cout此航班有票endl;pli.flagj=1;cout订票成功endl; pli.deleft(nu);for(int k=0;knu;k+)cout座位号sitnumber;cout余票额为pli.getleft()endl;els
11、ecout没有预约订票!余票额为pli.getleft()endl;if(num=0)cout没有此票endl;3.5 保存及读取模块设计主要功能是对订票信息的保存及读取。在对系统进行一系列操作,对系统的最新操作进行保存,及时更新系统,方便下次的操作。void writetofile()ofstream ofs(123.dat);int i;for(i=0;iN;i+)ofspli.getname()endl;ofspli.getnumber()endl;ofspli.getNumber()endl;ofspli.getweek()endl;ofspli.getday()endl;ofs.cl
12、ose();cout数据已经写入文件123.dat中endl; 第四章 测试分析4.1 测试程序执行情况 图4-1 主菜单1. 输入航班信息 图4-2 输入航班信息2. 查询航班信息 图4-3 查询航班信息3. 订票信息 图4-4 订票信息4. 退票信息 图4-5 退票信息5. 保存及读取信息 图4-6 保存及读取信息第五章 用户手册(可选)5.1 使用说明用户进入系统后,就会看到飞机订票系统的主菜单页面。系统总共有六个模块,分别由0到5表示,主菜单页面只能输入0到6,输入其他字符无效,如果用户输入无效字符,系统仍留在主菜单页面。第六章 课程设计总结大二第一学期,我学习了C+面向对象程序设计,
13、进一步熟悉了C+语言,以及面向对象程序设计的思想与方法。在这门课程的学习过程中,我常常对C+灵活多变的编程风格感到难以适应,对于创建一个可编程模型来解决实际问题感到无从下手,对如何运用所学过的算法与常见结构去解决编程问题感到困惑,对类的设计,程序结构的设计更感到茫然。这一年的C+编程学习,可以说是在痛苦中渡过的,每当我无法解决非常初等的程序设计问题时,每当我连十几行的程序代码都写不出来时,我觉得编程太难了。我多次在心里对学习与掌握好计算机编程产生过畏难情绪,甚至产生过放弃这门课程学习的念头。好在老师在这一年里一直在鼓励着我们。她告诉我们,每一个程序员在成长过程中,都有过类似的经历与感受,使我克
14、服了畏难与自卑心理;他还告诉我们,掌握编程需要累积薄发,需要多动手实验,在实验中去感悟,终会有水滴石穿、云开日出、豁然开朗的那一刻;他还要求我们向士兵突击这部电视剧中主人翁许三多学习,“不抛弃,不放弃”,让我们坚持到对编程“开窍”的那一天。老师为了让我们练好编程,为我们开设了许多练习编程的实验课,让我们不断地磨砺自已的意志品质与思维灵犀,借他山之石,攻已之玉。老师的这些话,我感到有一定的道理,心里却仍存疑虑,将信将疑。但也不好拂却了老师的好意与付出,于是,我只好硬着头皮坚持着,坚持了一年。这次课程设计,是我第一次完成较大的程序编写,开始时,我们心里根本没底,想都不敢想自已能写出一点东西来,并真
15、正地解决这一实际问题。但随着工作的逐渐深入,对问题的理解越来越透彻,想写的东西越来越多,信心越来越足,程序越编越大,系统的功能越做越强。当我们洋洋洒洒地撰写完千余行代码,将一个又一个功能模块实现出来,并将它们调试通过之后,那种喜悦感、幸福感、成就感让我感到兴奋。我终于等到了所谓“开窍”的这一刻,原来它是这样的一种感觉。此时此刻,回想一年来学习编程的经历,我明白了这样一个道理:此时的喜悦感、幸福感、成就感,不正好是过去的沮丧、痛苦、自卑所带来的馈赠吗!其实,这种道理对我们这个年龄段的青年人,谁人不知又谁人不晓呢,它所应证的不就是那几句老名言吗?不经历风雨,怎么能见彩虹宝剑锋从磨砺出,梅花香自苦寒
16、来让我们值得进一步思考的是,为什么我们一碰到困难,就忘记了这些至理名言呢?为什么我们一遇到挫折,总希望别人来安慰与鼓励,甚至是扶你前行呢?做完这次课程设计,我感到自己成熟起来了,想起以前老师说过: 古今之成大事业大学问者,必经过三种之境界。 “昨夜西风凋碧树,独上高楼,望尽天涯路。”此第一境界也; “衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也; “从里寻她千百度,蓦然回首,那人却在灯火栏珊处。”此第三境界也。 航空订票程序已开发完成了,它实现了我们在需求分析中所提出的功能,但它仍有许多需要改进的地方。附录:程序代码#include #include #includefstream.h#de
17、fine M 5/每种飞机票的总数目#define N 3/飞机票的总数目class Planeprivate:char name40;/终点站名int number;/航班号int Number;/飞机号int week;/星期几飞行int day;/日期int left;/余票额int n;/与数组flag一起确定客户订票状态public:int flag20;/订票状态数组,-1为预订票,1为已定票,0为初始化状态Plane()/构造函数name0=0;number=0;Number=0;week=0;day=0;left=M;n=0;/数组从0开始计数for(int i=0;i20;i
18、+)flagi=0;void init()/初始化每种飞机票coutname;coutnumber;coutNumber;coutweek;coutday;Plane();/析构函数char *getname()return name;/获得终点站名int getnumber()return number;/获得航班号int getNumber()return Number;/获得飞机号int getweek()return week;/获得星期几飞行int getday()return day;/获得日期int getleft()return left;/获得余票额int getn()ret
19、urn n;/获得旅客数目void inleft(int n)left=left+n;/余票额增加函数void deleft(int n)left=left-n;/余票额减少函数void inn()n+;/旅客数目增加函数;Plane plN;void init();int showmenu();/菜单函数void start();/初始化函数void query();/查询函数void make();/订票函数void back();/退票函数void writetofile();int main()cout这是民航售票处的计算机系统程序endl;while(1)int choice;cho
20、ice=showmenu();switch(choice)case 1:start();break;case 2:query();break;case 3:make();break;case 4:back();break;case 5:writetofile();break;case 0:return 0;default:cout你敲错了!n;return 0;int showmenu()int ch;coutendl;cout请选择你要执行的功能endl;cout1:录入数据endl;cout2:查询航线endl;cout3:承办订票业务endl;cout4:承办退票业务endl;cout5
21、:将数据写入文件endl;cout0:退出程序的运行ch;return ch;void start()for(int i=0;iN;i+)pli.init();coutendl;void query()int i,num=0;char name40;coutendl;coutname;for(i=0;i=N;i+)if(strcmp(name,pli.getname()=0)num+;cout航班号:pli.getnumber()endl;cout飞机号:pli.getNumber()endl;cout星期:pli.getweek()飞行endl;cout航班日期:pli.getday()en
22、dl;cout余票额:pli.getleft()endl;break;if(num=0)cout没有此航班endl;void make()int number,n,sitnumber,nu,ch,num=0;coutnumber;coutn;for(int i=0;iN;i+)if(number=pli.getnumber()num+;if(n=pli.getleft()cout此航班有票endl;pli.deleft(n);pli.inn();pli.flagpli.getn()=1;for(i=0;in;i+)coutsitnumber;elsecout余票额少于订票额,请重新输入订票数额
23、,订票数额应该少于或等于nu;if(nu=pli.getleft()cout此航班有票endl;pli.deleft(nu);pli.inn();pli.flagpli.getn()=1;for(i=0;iN;i+)coutsitnumber;elsecout是否需要预约endl;cout是(1) 否(2)ch;switch(ch)case 1:pli.inn();pli.flagpli.getn()=-1;break;case 2:break;default:cout你敲错了!endl;if(num=0)cout没有此航班endl;void back()int number,day,n,nu
24、,sitnumber,num=0;/航班号,日期,退票数目,订票数目,座位号,标志量coutday;coutnumber;for(int i=0;iN;i+)if(day=pli.getday()&(number=pli.getnumber()/日期与航班是否满足num+;/日期与航班满足coutn;cout退票成功endl;pli.inleft(n);/该种飞机票增加,即已退票for(int j=0;j=pli.getn();j+)/顺序查询客户订票状态if(pli.flagj=-1)/客户是否为预定状态coutnu;if(nu=pli.getleft()/余票额是否满足要求cout此航班有
25、票endl;pli.flagj=1;cout订票成功endl; pli.deleft(nu);for(int k=0;knu;k+)cout座位号sitnumber;cout余票额为pli.getleft()endl;elsecout没有预约订票!余票额为pli.getleft()endl;if(num=0)cout没有此票endl;void writetofile()ofstream ofs(123.dat);int i;for(i=0;iN;i+)ofspli.getname()endl;ofspli.getnumber()endl;ofspli.getNumber()endl;ofspli.getweek()endl;ofspli.getday()endl;ofs.close();cout数据已经写入文件123.dat中endl;参考文献如果参考了某些资料,可以写在这