青岛理工大学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目录一、需求分析............................................2二、内容设计............................................22.1、根据所选题目给出模块图...........................22.2、画出主要程序的流程图:...........................32.2、编写程序关键代码:...............................8三、调试分析...........................................13四、用户手册...........................................14五、设计总结...........................................20六、参考文献............................错误!未定义书签。七、附录...............................错误!未定义书签。2一、需求分析1.选做此课题或项的目的1.通过实验实现对学生信息系统的管理操作;2.进一步掌握和利用C++进行程设计的能力;3.进一步理解和运用结构化程序设计的思想和方法;4.初步掌握开发一个小型实用系统的基本方法;5.学会利用流程图或N-S图表示算法;6.掌握书写程设计开发文档的能力2.程序所实现的功能1.输入航班信息并保存到磁盘;2.浏览航班信息;3.修改航班信息并保存到磁盘4.查找航班5.订票6.退票二、内容设计1.根据所选题目给出模块图如图1.1所示图1.1模块图飞机订票管理系统查询航班信息订票修改航班信息退票查询全部信息录入航班信息32.画出主程序及其主要模块的流程图(1).如图2.1所示为查询函数的流程图:图2.1查询函数的流程图(2).图2.2所示为订票函数流程图开始查询成功?输出航班信息输入航班号返回主菜单?是否是否主菜单结束4图2.2订票函数流程图开始输入要订票的姓名姓名与初始姓名相同?否输入航班号还有余票,订票?是存储客户信息到文件修改航班信息(票额)输出订票信息返回主菜单?是主菜单结束否是否5(3).图2.3所示为退票函数流程图图2.3退票函数流程图开始输入姓名和航班号信息与文件中信息相同?是是否退订?是从文件中删除该用户订票信息返回主菜单?退票成功!主菜单结束是否否否6(4).如图2.4所示为查询全部信息函数图2.4查询全部信息函数开始输出乘客信息输出航班信息返回主菜单?是主菜单结束否7(5.)如图2.5所示为主程序流程图图2.5查询全部信息函数开始录入航班信息进入主菜单飞机订票管理系统查询航班订票管理退票管理查询所有信息返回主菜单?退出系统否是结束83.编写程序关键代码(1).录入航班信息:voidchushi(){inti;ofstreamoutfile(airline.dat);ofstreamfile(customer.dat);for(i=0;i3;i++){outfilefl[i].flighfl[i].numfl[i].placefl[i].datafl[i].dticketfl[i].riqifl[i].yticketendl;filecu[i].namecu[i].numcu[i].seatcnumendl;}outfile.close();file.close();cout初始化已完毕!endlendl;caidan1();}}(2).查询航班信息:voidchaxun1(){charplace[10];inttemp,i,a;cout输入终点站名:;cinplace;for(i=0;i100;i++)if(strcmp(fl[i].place,place)==0){temp=i;a=0;}cout航班信息endl航班号:fl[temp].fligh飞机号:fl[temp].num起飞日期:fl[temp].data最近航班日期fl[temp].riqi余票量fl[temp].yticketendl;if(a!=0)cout查询失败!endl;cout返回主菜单?1.是2.否;cintemp;if(temp==1)caidan2();}(3).订票:voiddingpiao()//订票{charname[10];intnum,i,t,j,k,temp;intx;cout请输入你的姓名和想订的航班号:endlendl;9cout姓名:;cinname;coutendl;cout航班号:;cinnum;for(i=0;i300;i++)if(strcmp(name,cu[i].name)==0){cout您已经定过航班,要返回主菜单吗?(1.返回/2.退出);cint;switch(t){case1:caidan1();break;default:break;}}for(i=0;i300;i++)if(name!=cu[i].name)for(j=0;j10;j++)if(fl[j].fligh==num)temp=j;if(fl[temp].yticket=100){cout此航班还有余票,要订票吗?(1.是/2.否);cinx;switch(x){case1:{for(k=0;k3;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;j3;j++)outfile1fl[j].flighfl[j].numfl[j].placefl[j].datafl[j].dticketfl[j].riqifl[j].yticketendl;ofstreamoutfile2(customer.dat,ios::app);outfile2cu[cnum].namecu[cnum].numcu[cnum].seatcnumendl;//打开文件并存储数据10cout订票成功!endlendl客户信息:cu[cnum].name'\t'航班号:cu[cnum].num'\t'座位号:cu[cnum].seatendl;outfile1.close();outfile2.close();cout1.返回主菜单2.退出:;cintemp;if(temp==1)caidan1();else;}};break;default:caidan1();break;}}elsecout此航班票已经售完,请订其他航班次的票~;}(4).退票:voidtuipiao()//退票{charname[10];inti,temp,t,num,a,j;structtmp;cout请输入您的姓名和航班号:endl;cout姓名:;cinname;cout航班号:;cinnum;coutendl;for(i=0;i300;i++){if(strcmp(cu[i].name,name)==0){a=0;cout确定退订吗?(1.是2.否):;cintemp;if(temp==1){ofstreamoutfile1(airline.dat);ofstreamoutfile2(customer.dat);for(j=0;j=i;j++)outfile2cu[j].namecu[j].numcu[j].seatjendl;for(t=0;t3;t++){if(fl[t].fligh==num){fl[t].dticket=fl[t].dticket-1;fl[t].yticket=fl[t].yticket+1;}}for(t=0;t3;t++)outfile1fl[t].flighfl[t].numfl[t].placefl[t].datafl[t].dticketfl[t].riqifl[t].yticketendl;}11}elsea!=0;}if(a!=0)cout没有你的信息,请查证后再操作!;cout返回主菜单?1.是2.否:;cintemp;if(temp==1)caidan1();}(5).查询全部信息:voidchaxunquanbu(){inti,temp;cout乘客信息:endlendl;for(i=0;i300;i++){if(cnum==i)temp=i;}for(i=0;itemp;i++)cout姓名:cu[i].name'\t'航班号:cu[i].num'\t'座位号:cu[i].seat'\t'编号:i+1endl;coutendl航班信息:endlendl;for(i=0;i3;i++)cout航班号:fl[i].fligh'\t'飞机号:fl[i].num'\t'目的地:fl[i].place'\t