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