青岛理工大学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)完成系统总结报告。
目录一、需求分析 (2)二、内容设计 (2)2.1、根据所选题目给出模块图 (2)2.2、画出主要程序的流程图: (3)2.2、编写程序关键代码: (8)三、调试分析 (13)四、用户手册 (14)五、设计总结 (20)六、参考文献 ............................ 错误!未定义书签。
七、附录............................... 错误!未定义书签。
一、需求分析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).录入航班信息:void chushi(){int i;ofstream outfile("airline.dat");ofstream file("customer.dat");for (i=0;i<3;i++){outfile<<fl[i].fligh <<" "<<fl[i].num<<" "<<fl[i].place<<" "<<fl[i].data<<" "<<fl[i].dticket<<" "<<fl[i].riqi<<" "<<fl[i].yticket<<endl;file<<cu[i].name<<" "<<cu[i].num<<" "<<cu[i].seat<<" "<<cnum<<endl;}outfile.close();file.close();cout<<"初始化已完毕!"<<endl<<endl;caidan1();}}(2).查询航班信息:void chaxun1(){char place[10];int temp,i,a;cout<<"输入终点站名:";cin>>place;for(i=0;i<100;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].yticket<<endl;if(a!=0)cout<<"查询失败!"<<endl;cout<<"返回主菜单?1.是2.否";cin>>temp;if(temp==1) caidan2();}(3).订票:void dingpiao()// 订票{char name[10];int num,i,t,j,k,temp;int x;cout<<"请输入你的姓名和想订的航班号:"<<endl<<endl;cout<<"姓名:";cin>>name;cout<<endl;cout<<"航班号:";cin>>num;for(i=0;i<300;i++)if(strcmp(name,cu[i].name)==0){cout<<"您已经定过航班,要返回主菜单吗?(1.返回/2.退出)";cin>>t;switch(t){case 1: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){case 1:{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;ofstream outfile1("airline.dat");for(j=0;j<3;j++)outfile1<<fl[j].fligh<<" "<<fl[j].num<<" "<<fl[j].place<<" "<<fl[j].data<<" "<<fl[j].dticket<<" "<<fl[j].riqi<<" "<<fl[j].yticket<<endl;ofstream outfile2("customer.dat",ios::app);outfile2<<cu[cnum].name<<" "<<cu[cnum].num<<" "<<cu[cnum].seat<<" "<<cnum<<endl; //打开文件并存储数据cout<<"订票成功!"<<endl<<endl<<"客户信息:"<<cu[cnum].name<<'\t'<<"航班号:"<<cu[cnum].num<<'\t'<<"座位号:"<<cu[cnum].seat<<endl;outfile1.close();outfile2.close();cout<<" 1.返回主菜单 2.退出:";cin>>temp;if(temp==1)caidan1();else;}};break;default :caidan1();break;}}else cout<<"此航班票已经售完,请订其他航班次的票~";}(4).退票:void tuipiao()// 退票{char name[10];int i,temp,t,num,a,j;struct tmp;cout<<"请输入您的姓名和航班号:"<<endl;cout<<"姓名:";cin>>name;cout<<"航班号:";cin>>num;cout<<endl;for(i=0;i<300;i++){if (strcmp(cu[i].name,name)==0){a=0;cout<<"确定退订吗?(1.是 2.否):";cin>>temp;if(temp==1){ofstream outfile1("airline.dat");ofstream outfile2("customer.dat");for(j=0;j<=i;j++)outfile2<<cu[j].name<<" "<<cu[j].num<<" "<<cu[j].seat<<" "<<j<<endl;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<<fl[t].fligh<<" "<<fl[t].num<<" "<<fl[t].place<<" "<<fl[t].data<<" "<<fl[t].dticket<<" "<<fl[t].riqi<<" "<<fl[t].yticket<<endl;}}elsea!=0;}if (a!=0)cout<<"没有你的信息,请查证后再操作!";cout<<"返回主菜单?1.是2.否:";cin>>temp;if(temp==1)caidan1();}(5).查询全部信息:void chaxunquanbu(){int i,temp;cout<<"乘客信息:"<<endl<<endl;for(i=0;i<300;i++){if (cnum==i) temp=i;}for(i=0;i<temp;i++)cout<<"姓名:"<<cu[i].name<<'\t'<<"航班号:"<<cu[i].num<<'\t'<<"座位号:"<<cu[i].seat<<'\t'<<"编号:"<<i+1<<endl;cout<<endl<<"航班信息:"<<endl<<endl;for(i=0;i<3;i++)cout<<"航班号:"<<fl[i].fligh<<'\t'<<"飞机号:"<<fl[i].num<<'\t'<<"目的地:"<<fl[i].place<<'\t'<<"起飞日期"<<fl[i].data<<'\t'<<"已订票数:"<<fl[i].dticket<<'\t'<<"最近航班日期"<<fl[i].riqi<<'\t'<<"剩余票数:"<<fl[i].yticket<<endl;cout<<"返回主菜单?1.是2.否";cin>>temp;if(temp==1)caidan1();}(6).主菜单函数:void caidan1(){int i;cout<<"************* 航空订票系统v2012 *************"<<endl;cout<<"*** ***"<<endl;cout<<"*** 1.订票业务 2.退票业务 ***"<<endl;cout<<"*** 3.查询客户信息 4.查询全部信息 ***"<<endl;cout<<"*** 5.查询飞机票 6.退出系统 ***"<<endl;cout<<"*** ***"<<endl;cout<<"*** 如果是第一次使用本系统,请载入初始信息 ***"<<endl;cout<<"*********************************************************"<<endl; ifstream infile1("airline.dat");ifstream infile2("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).选择列表函数:void list(){int a;cin>>a;cout<<endl;switch(a){case 1:dingpiao();break;case 2:tuipiao();break;case 3:chaxun();break;case 4:chaxunquanbu();break;case 5:chaxun1();break;case 6:;break;default:{cout<<"输入错误,请重新输入正确的代码:";list();} //输入代码}}(8).查询客户信息函数:void chaxun(){char name[10];int temp,i,a;cout<<"请输入你的姓名:";cin>>name;for(i=0;i<300;i++)if (strcmp(cu[i].name,name)==0){temp=i;a=0;}cout<<"*****乘客信息*****"<<endl<<"姓名:"<<cu[temp].name<<'\t' <<"航班号:"<<cu[temp].num<<'\t'<<"座位号:"<<cu[temp].seat<<endl;if (a!=0) cout<<"没有你的信息,请查证后再操作!"<<endl;cout<<"返回主菜单?1.是2.否";cin>>temp;if(temp==1)caidan1();}三、调试分析1.实际完成的情况说明(完成的功能,支持的数据类型等)。