#includestring.h#includeiostream.h#defineM5//每种飞机票的总数目#defineN3//飞机票的总数目classPlane{private:charname[40];//终点站名intnumber;//航班号intNumber;//飞机号intweek;//星期几飞行intday;//日期intleft;//余票额intn;//与数组flag一起确定客户订票状态public:intflag[20];//订票状态数组,-1为预订票,1为已定票,0为初始化状态Plane()//构造函数{name[0]='\0';number=0;Number=0;week=0;day=0;left=M;n=0;//数组从0开始计数for(inti=0;i20;i++)flag[i]=0;}voidinit()//初始化每种飞机票{cout请输入终点站名:;cinname;cout请输入航班号:;cinnumber;cout请输入飞机号:;cinNumber;cout请输入星期几飞行:;cinweek;cout请输入航班的日期:;cinday;}~Plane(){};//析构函数char*getname(){returnname;}//获得终点站名intgetnumber(){returnnumber;}//获得航班号intgetNumber(){returnNumber;}//获得飞机号intgetweek(){returnweek;}//获得星期几飞行intgetday(){returnday;}//获得日期intgetleft(){returnleft;}//获得余票额intgetn(){returnn;}//获得旅客数目voidinleft(intn){left=left+n;}//余票额增加函数voiddeleft(intn){left=left-n;}//余票额减少函数voidinn(){n++;}//旅客数目增加函数};Planepl[N];intshowmenu();//菜单函数voidstart();//初始化函数voidquery();//查询函数voidmake();//订票函数voidback();//退票函数intmain(){cout这是民航售票处的计算机系统程序endl;start();while(1){intchoice;choice=showmenu();switch(choice){case1:query();break;case2:make();break;case3:back();break;case0:return0;default:cout你敲错了!\n;}}return0;}intshowmenu(){intch;coutendl;cout请选择你要执行的功能endl;cout1:查询航线endl;cout2:承办订票业务endl;cout3:承办退票业务endl;cout0:退出程序的运行endl;cinch;returnch;}voidstart(){for(inti=0;iN;i++){pl[i].init();coutendl;}}voidquery(){inti,num=0;charname[40];coutendl;cout请输入终点站名:;cinname;for(i=0;i=N;i++)if(strcmp(name,pl[i].getname())==0){num++;cout航班号:pl[i].getnumber()endl;cout飞机号:pl[i].getNumber()endl;cout星期:pl[i].getweek()飞行endl;cout航班日期:pl[i].getday()endl;cout余票额:pl[i].getleft()endl;break;}if(num==0)cout没有此航班endl;}voidmake(){intnumber,n,sitnumber,nu,ch,num=0;cout请输入航班号:;cinnumber;cout请输入订票数额:;cinn;for(inti=0;iN;i++)if(number==pl[i].getnumber()){num++;if(n=pl[i].getleft()){cout此航班有票endl;pl[i].deleft(n);pl[i].inn();pl[i].flag[pl[i].getn()]=1;for(i=0;in;i++){cout座位号;cinsitnumber;}}else{cout余票额少于订票额,请重新输入订票数额,订票数额应该少于或等于pl[i].getleft();cinnu;if(nu=pl[i].getleft()){cout此航班有票endl;pl[i].deleft(nu);pl[i].inn();pl[i].flag[pl[i].getn()]=1;for(i=0;iN;i++){cout座位号;cinsitnumber;}}else{cout是否需要预约endl;cout是(1)否(2)endl;cinch;switch(ch){case1:pl[i].inn();pl[i].flag[pl[i].getn()]=-1;break;case2:break;default:cout你敲错了!endl;}}}}if(num==0)cout没有此航班endl;}voidback(){intnumber,day,n,nu,sitnumber,num=0;//航班号,日期,退票数目,订票数目,座位号,标志量cout请输入日期:;cinday;cout请输入航班:;cinnumber;for(inti=0;iN;i++)if((day==pl[i].getday())&&(number==pl[i].getnumber()))//日期与航班是否满足{num++;//日期与航班满足cout输入退票数目;cinn;cout退票成功endl;pl[i].inleft(n);//该种飞机票增加,即已退票for(intj=0;j=pl[i].getn();j++)//顺序查询客户订票状态{if(pl[i].flag[j]==-1)//客户是否为预定状态{cout有预约订票,请输入订票数额:;cinnu;if(nu=pl[i].getleft())//余票额是否满足要求{cout此航班有票endl;pl[i].flag[j]=1;cout订票成功endl;pl[i].deleft(nu);for(intk=0;knu;k++){cout座位号;cinsitnumber;}cout余票额为pl[i].getleft()endl;}}elsecout没有预约订票!余票额为pl[i].getleft()endl;}}if(num==0)cout没有此票endl;}