C++课程设计报告飞机订票管理系统.docx
- 文档编号:16188583
- 上传时间:2023-07-11
- 格式:DOCX
- 页数:40
- 大小:278.43KB
C++课程设计报告飞机订票管理系统.docx
《C++课程设计报告飞机订票管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告飞机订票管理系统.docx(40页珍藏版)》请在冰点文库上搜索。
C++课程设计报告飞机订票管理系统
青岛理工大学
C++面向对象课程设计报告
院(系):
计算机工程学院
专业:
软件工程
学生姓名:
班级软件131班学号:
题目:
飞机订票管理系统设计____
起迄日期:
_2015.6.29~2015.7.10
设计地点:
计算机学院机房
指导教师:
翟正利丁凡
完成日期:
2015年7月10日
C++面向对象课程设计任务书
题目24“飞机订票管理系统设计”
1、问题描述:
航空客运订票的业务包括:
查询航班、客票预订和办理退票等。
试设计一个航空客运订票系统,已使上述业务可以借助计算机完成。
2.功能要求:
(1)每条航线所涉及的信息有:
终点站名、航班号、飞机号、星期几飞行飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级)以及等候补替补的客户名单(包括姓名、所需票量);
(2)作为示意系统,全部数据可以只放在内存中;
(3)系统能实现的操作和功能如下:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定);
查询航线:
根据旅客提出的终点站名输入下列信息:
航班号、飞机号、星期几起飞,最近航班的日期和余票量。
承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或者余票数少于订票额,则需重新寻味客户要求,若需要,可登记排队候补;
承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队等候补,首先询问排在第一的客户,若所有退票额能满足他的要求,则为他办理订票手续否则依次询问其他排队候补的客户。
修改航班信息:
当航班信息改变可以修改航班数据文件。
(选作)为客户订票要求不能满足时,系统可向客户提供到达同一目的地的其他航线情况。
3、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
一、需求分析
1.选做此课题或项的目的
1.通过实验实现对学生信息系统的管理操作;
2.进一步掌握和利用C++进行程设计的能力;
3.进一步理解和运用结构化程序设计的思想和方法;
4.初步掌握开发一个小型实用系统的基本方法;
5.学会利用流程图或N-S图表示算法;
6.掌握书写程设计开发文档的能力
2.程序所实现的功能
1.输入航班信息并保存到磁盘;
2.浏览航班信息;
3.修改航班信息并保存到磁盘
4.查找航班
5.订票
6.退票
二、内容设计
1.根据所选题目给出模块图
如图1.1所示
图1.1模块图
2.画出主程序及其主要模块的流程图
(1).如图2.1所示为查询函数的流程图:
图2.1查询函数的流程图
(2).图2.2所示为订票函数流程图
图2.2订票函数流程图
(3).图2.3所示为退票函数流程图
图2.3退票函数流程图
(4).如图2.4所示为查询全部信息函数
图2.4查询全部信息函数
(5.)如图2.5所示为主程序流程图
图2.5查询全部信息函数
3.编写程序关键代码
(1).录入航班信息:
voidchushi()
{
inti;
ofstreamoutfile("airline.dat");
ofstreamfile("customer.dat");
for(i=0;i<3;i++)
{
outfile< < < < < file< outfile.close();file.close(); cout<<"初始化已完毕! "< caidan1(); } } (2).查询航班信息: voidchaxun1() { charplace[10]; inttemp,i,a; cout<<"输入终点站名: ";cin>>place; for(i=0;i<100;i++) if(strcmp(fl[i].place,place)==0){temp=i;a=0;} cout<<"航班信息"< "< "< "< if(a! =0)cout<<"查询失败! "< cout<<"返回主菜单? 1.是2.否";cin>>temp; if(temp==1)caidan2(); } (3).订票: voiddingpiao()//订票 { charname[10]; intnum,i,t,j,k,temp; intx; cout<<"请输入你的姓名和想订的航班号: "< cout<<"姓名: "; cin>>name; cout< cout<<"航班号: "; cin>>num; for(i=0;i<300;i++) if(strcmp(name,cu[i].name)==0) { cout<<"您已经定过航班,要返回主菜单吗? (1.返回/2.退出)"; cin>>t;switch(t) {case1: caidan1();break; default: break;} } for(i=0;i<300;i++) if(name! =cu[i].name) for(j=0;j<10;j++) if(fl[j].fligh==num)temp=j; if(fl[temp].yticket<=100) { cout<<"此航班还有余票,要订票吗? (1.是/2.否)"; cin>>x; switch(x) { case1: { for(k=0;k<3;k++) if(fl[k].fligh==num) { fl[k].dticket=fl[k].dticket+1; fl[k].yticket=fl[k].yticket-1; cnum=cnum+1; strcpy(cu[cnum].name,name);cu[cnum].num=num; cu[cnum].seat=fl[k].dticket; ofstreamoutfile1("airline.dat"); for(j=0;j<3;j++) outfile1< ofstreamoutfile2("customer.dat",ios: : app); outfile2< cout<<"订票成功! "< <<"客户信息: "< "< "< outfile1.close(); outfile2.close(); cout<<"1.返回主菜单2.退出: "; cin>>temp; if(temp==1) caidan1(); else; }}; break; default: caidan1();break;}}elsecout<<"此航班票已经售完,请订其他航班次的票~"; } (4).退票: voidtuipiao()//退票 { charname[10]; inti,temp,t,num,a,j; structtmp; cout<<"请输入您的姓名和航班号: "< cout<<"姓名: "; cin>>name;cout<<"航班号: "; cin>>num;cout< for(i=0;i<300;i++) {if(strcmp(cu[i].name,name)==0) { a=0;cout<<"确定退订吗? (1.是2.否): "; cin>>temp; if(temp==1) { ofstreamoutfile1("airline.dat"); ofstreamoutfile2("customer.dat"); for(j=0;j<=i;j++) outfile2< for(t=0;t<3;t++) { if(fl[t].fligh==num){fl[t].dticket=fl[t].dticket-1;fl[t].yticket=fl[t].yticket+1;}} for(t=0;t<3;t++) outfile1< } } else a! =0; } if(a! =0) cout<<"没有你的信息,请查证后再操作! "; cout<<"返回主菜单? 1.是2.否: "; cin>>temp; if(temp==1) caidan1(); } (5).查询全部信息: voidchaxunquanbu() { inti,temp; cout<<"乘客信息: "< for(i=0;i<300;i++) { if(cnum==i)temp=i; } for(i=0;i cout<<"姓名: "< "< "< "< cout< "< for(i=0;i<3;i++) cout<<"航班号: "< "< "< "< "< cout<<"返回主菜单? 1.是2.否"; cin>>temp; if(temp==1)caidan1(); } (6).主菜单函数: voidcaidan1() { inti; cout<<"*************航空订票系统v2012*************"< cout<<"*** ***"< cout<<"***1.订票业务2.退票业务***"< cout<<"***3.查询客户信息4.查询全部信息***"< cout<<"***5.查询飞机票6.退出系统***"< cout<<"******"< cout<<"***如果是第一次使用本系统,请载入初始信息***"< cout<<"*********************************************************"< ifstreaminfile1("airline.dat"); ifstreaminfile2("customer.dat"); for(i=0;i<3;i++){infile1>>fl[i].fligh>>fl[i].num>>fl[i].place>>fl[i].data>>fl[i].dticket>>fl[i].riqi>>fl[i].yticket;} for(i=0;i<300;i++){infile2>>cu[i].name>>cu[i].num>>cu[i].seat>>cnum;} infile1.close();infile2.close();//读取数据 cout<<"请输入业务代码: "; list(); } (7).选择列表函数: voidlist() { inta; cin>>a;cout< switch(a) { case1: dingpiao();break; case2: tuipiao();break; case3: chaxun();break; case4: chaxunquanbu();break; case5: chaxun1();break; case6: ;break; default: {cout<<"输入错误,请重新输入正确的代码: ";list();}//输入代码 } } (8).查询客户信息函数: voidchaxun() { charname[10]; inttemp,i,a; cout<<"请输入你的姓名: ";cin>>name; for(i=0;i<300;i++) if(strcmp(cu[i].name,name)==0){temp=i;a=0;} cout<<"*****乘客信息*****"< "< <<"航班号: "< "< if(a! =0)cout<<"没有你的信息,请查证后再操作! "< cout<<"返回主菜单? 1.是2.否"; cin>>temp; if(temp==1) caidan1(); } 三、调试分析 1.实际完成的情况说明(完成的功能,支持的数据类型等)。 该航空订票管理系统主要完成的支持int(航班号,座位号等),char(姓名,终点,到达日期等,主要实现的功能如下: 1.航班信息与客户信息的初始化。 2.客户信息的录入。 3.航班信息的修改(包括余票和已定票的改动)。 4.订票功能。 5.退票功能。 6.查询航线功能。 7.查询全部信息功能(包括用户和航班的信息)。 2.程序的性能分析。 1.本程充分利用了各种系统函数,使程序十分简洁。 2.程序相比之下较大,运行起来需要一定的时间。 3.根据不同的功能建立不同的类,对具体功能又分别用相应的函数来据体实现使程序变得有序易懂。 3.上机过程中出现的问题及其解决方案。 上机过程遇到的问题有: 1.不了解文件的使用,包括读取文件到程序,将数据写入文件等。 2.对整体程序的模版不够理解,刚开始不能够完全地构思出程序的全部。 3.出现括号和符号忘记匹配,或者马虎造成单词拼错以及函数体写错。 4.结构体的格式开始不够熟练。 5.循环体的嵌套使用不够熟悉。 6.使用string类型不是那么熟练。 解决方案: 1.查阅相关书籍,以及上网查找资料,询问基础较好的同学,从而对文件的操作有了进一步的提升。 2.上网查找类似的程序,观看其大致结构,从而提炼出精华,找出大致规律,运用到自己的程序里,使程序不至于那么僵硬。 3.每写完一段程序就检查该段程序有没有错误,分段缩小范围修改,采用分步调试方法,逐步找出问题所在。 4.上网以及查阅结构体的详细说明,学会熟练使用结构体。 5.可以先画流程图列出所有循环体的图示,根据图示来编写程序中循环体的嵌套,这样可以大大减少循环体的出错。 6.开始使用char类型来定义字符串,后来改成方便的string类型,之前忘记头文件#include 4.程序中可以改进的地方说明。 1.退票管理中可增加功能,区分退票在飞机起飞前和飞机起飞后,根据不同的选择来退还不同金额的退款。 2.订票函数里可适当提升订票的最大人数,以免发生系统崩溃的现象。 3.查询函数里可以增加查询合适航班的方式,以便于更好程度地适应用户多方面的不同订票需求。 5.程序中可以扩充的功能及设计实现构想。 1.可以增加用户登录功能,让用户可以设置自己的帐号密码,以便于用户更方便的使用本飞机订票系统办理航空业务。 2.可以将dos系统界面显示做成mfc界面显示,使显示更加清晰,更便于用户理解和使用本系统。 3.可以在航空飞机订票的基础上发展其他订票功能,比如火车订票,汽车订票,更全面地提供订票管理服务。 四、用户手册 1.运行程序,显示主菜单如图3.1所示: 图3.1主菜单 2.选择5.查询航班信息,然后选择返回主菜单如图3.2图3.3所示: 图3.2查询航班信息 图3.3查询航班信息 3.选择1订票,进行订票,输入姓名,要订的航班号,显示已定过情况如图3.4所示,若未定过,则订票,此时客户信息将新增进文件customer中,订票完成后选择返回主菜单,如图3.5图3.6图3.7所示: 图3.4订票失败 图3.5订票成功 图3.6返回主菜单 图3.7文件数据存储情况 3.退票,输入你的姓名,返回主菜单,此时文件改变,如图3.8图3.9所示: 图3.8退票成功 图3.9文件存储情况 4.查询,输入4,查询如图3.10,图3.11所示: 图3.10查询全部信息 图3.11查询全部信息 6.退出系统,如图3.12所示 图3.12退出系统 五、设计总结 自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 编程看起来似乎是一件很枯燥、乏味的事情,但是经历了这次大程序的编辑之后,发现其实里面还是充满乐趣的,一旦真的钻研下去什么事情都可以放下,来认真研究。 在试验中还发现了许多的不足,对于以后对C++的学习有很大的帮助。 六、参考文献 [1]李兰,任凤华.C++面向对象程序设计.西安: 西安电子科技大学出版社,2010 [2]李兰,任凤华.《C++面向对象程序设计》实验指导及习题解析.西安: 西安电子科技大学出版社,2010 [3]郑莉,董渊.C++程序设计基础教程.北京: 清华大学出版社,2010 [4]郑莉.C++程序设计基础教程学生用书.北京: 清华大学出版社,2010 七、附录(要加上注释。 ) #include #include #include usingnamespacestd; structflight { intfligh; intnum; charplace[10]; chardata[10];//起飞日期(星期几) intdticket; charriqi[15];//最近航班日期 intyticket; }fl[10]={{101,01,"北京","monday",1,"2015.01.01",99}, {102,02,"青岛","tuesday",0,"2015.02.10",100}, {103,03,"郑州","friday",0,"2015.3.15",100}}; structcustomer {charname[10]; intseat; intnum; }cu[300]={{"李华",01,101},{"赵光",01,102},{"王磊",01,103}};//定义结构体 intcnum=3;//定义客户编号 voidlist(); voiddingpiao(); voidtuipiao(); voidchaxun(); voidchaxunquanbu(); voidchaxun1(); voidcaidan1();//函数声明 voidcaidan2(); voidchushi(); voidmain() {cout<<"*******欢迎使用航空订票系统******"< caidan2(); }//主函数 voidcaidan1() { inti; cout<<"*************航空订票系统v2015*************"< cout<<"*** *
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 飞机 订票 管理 系统