数据结构航空客运订票系统.doc
航空客运订票系统程序要求:1、 问题描述航空客运订票得业务活动包括:查询航线、客票预订与办理退票等。设计一个航空客运订票系统,以使上述业务可以借助计算机完成。2、 要求1) 每条航线所涉及得信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票得客户名单(包括名字、订票量、舱位等级1、2、3)以及等候替补得客户名单;2) 系统实现得功能如下:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线得情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班就是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件存储结构:航线得所有信息存储在一个结构体中,增加,查询,订票,退票等操作按队列得操作来实现。程序流程图: Switch(1)录入功能请按次序输入航班号,飞机号,终点站,飞行日期,乘客总数,余票数等信息查询功能通过目得地查询Switch(1)请输入要查询得目得地Switch(2)请输入要查询得航班号通过航班号查询Switch(2)Switch(3)订票功能请输入您需要得订票数订票成功订票数<余票数输入您定得票数输入您得名字退票功能Switch(4)订票数<余票数退票成功Switch(5)退出系统详细代码:inclue ostrem、h>incue <stdo、h>#clude strng、h>#inclde <cno、heim /3架飞机dene 5 /每架飞机5张票strct ode car name21; ha i21; int seat,plane,ate; ode next,pre;stuctait ha nm21; hri1;haphoe8; it seat,lane,da,coun; wat next,r;struct pi int seatn+;;voi menu(); void makenllpiao();void makenul_iforaion();od listmenu();id istiao();vi makenull_wai();oidlis_inormation();oipl_infaion(oad);void book();vi add_infratn(node *ead,itx,nt y);id add_wt(int x,nt y);voi searc_delet(int x);dwit_to_ile();void shwwat();o p(nex,node);node had1,head2,*ead,*q;wat w_had,wat_end;harc;io;void an() makenl(); it_enu(); cu<endl<<”chose noeraon:”; nc; i (!=) stch(c) case 0' : show_ait();break; case 1 : st_pi();ook();eak; cse 2' : searh_dle();brek; cae '3': stp();brea; cs '4 : list_infrtio();rak; cae 5 : search_delte();brk; deault : rek; whil(c!=6); cu"Eit System "oid knull() makeul_p(); anu_iomn(); makenull_wit();oid lt_menu() ou<e<" cound 菜单"; otndl< *"; cutendl" 、 查瞧排队情况*"; cuted” * 、订票 "; cutedl<" * 2 、 退票 "; cendl” * 3 、 查瞧剩余票 ”; cut<endl<” * 4、查瞧飞机信息 ”; cot<ed" 、 查瞧乘客信息 *; cout<endl<" * 6、 退出 *"; coted<" *" couten<”";d makeul_iao() FILE fp; it i; i((fp=fope(”pia、d","r)) = NULL ) fp=fopen("ao、dat”,”w"); or (=;i<=m1;i+) fwrite(ai,izeof(iao),1,fp); fcose(f); fp=en(piao、dat”,”); f(1;=m;i+) fred(i,sizeo(pia),1,fp); fcoe(fp);void akenu_infomatn() noder; FILE*p;it ,j,sum;u=a1、t+2、sat0a、t; ffopen(iormation、da”,r”); had1new ode; ha=ne nod; ead3=new noe; ed1re=ULL; had1>nx=NULL; head->preNULL; head2eUL; epreNULL; ead3->nx=ULL; q=head1; for(=1;<=um;i) j0; rewnod; frea(r,izof(no),1,fp); q>nx=r; re=q; r-net=ULL; qnet; fcose(f); i(i=a1、set0+1) had2->nex=q; ptNLL; q>pre=h; if(i=、seat0+a2、eat0) hed3nex=q; pre-next=NUL; q>p=ha3; void manull_wait() wt *emw; FILf; tep=ne at; it i; if((f=foe(”ait、tt,”r”)=ULL ) fpfopen("wai、txt",w); fls(p); at_nd=ewait; wai_head=new wait; witenxt=NLL; watnr=ULL; wait_ead=i_; wthad-cunt=; p=fopen("wt、xt,"r”); fread(wi_he,size(wait),1,p); r(i=1;ait_had-un;i+) frd(tepw,sizof(wait),1,fp); wit_edntemw; tep->re=i_nd; temp>nxt=ULL; wit_ed=tempw; id listao() int i,j; for(i;<=m1;) f(i、eat0!=) cot<enl第”<i< 架飞机剩余得票:"<enl; o(=1;j=;+) f (a、set=0) cout<” j; co<endl; ele cut<ndl<Te"<” plneis ul !"n<end; voidlt_informion() int; ocot<end<<”显示哪架飞机得信息? ”;in>x;couend;whie(x | xm); cout<endl<"第 <架飞机得信息如下 "<nd; i(x=1) planeinormon(head1); if(x=2)lae_iformaion(ea2); if(x=) plae_information(hea3);voidplaneinfoai(node hea) node *q; charch; int =; f(head!NL &hed->net!=NUL) q=headnex; lse qNULL; ut”飞机空,无预订票 !”<en; while(q!=NLL) coendl”*”endl; q->dte=qpan; cout”日期:"<q-da<ed; cout<<”座位号 : "qseaendl; cut”姓名 : "q>nme; cou<endl”ID 号 :"<-d; =qnext;x+; if(x% 3 =0)ch=getc(); u<nd;voi ok() it i,j,; coundl<<"请选择地点:(、2、3)"; do cin>i; if(i1|) undl<"* 超出范围!*<<el<”请重新输入:; s cutedl"您要订得就是到”i<”地得飞机"edl; cu<<endl<"第 ”<i< 架飞机剩余得票 :”d; for(p=1;p<n;p+) if(ai、seatp) cout<<” "p; ot<<endl; brea; ile(1); coedl”请选择座位号: "; d cin> if (1| >n) cout<nl"* 超出范围!*nd<请重新输入:; else qdate=i; cout<<el”您得订票日期: "<q->deedl; beak; while(1);i (ai、sej=) i、seat1; u<endl; 、sa0+; if(1)add_ioratin(hea1,); if(i=2) addnormaton(ead2,j); if(i=3) ad_informti(ea3,3,j); ele cot<nd<" 对不起,该座位已被预订,您被安排到订票等候队列 *”<el; ad_wa(i,j); vd addwait(intx,n ) wait tpw; temwnwait; tew>ext=NULL; out"请输入个人信息<<nd; ound<"*<endl; cut姓名 : ”;ciempwam; cout"号 :";n>tew>id; cout"电话:"in>tepwhone; tempseat=; tmwpane=x; wiend>ext=temp; temp->pe=wait_ed; win=watend>nxt; cut<enl<”*正在排队等候 *dl; watheadcnt+; rie_toile();void how_wat() wait tep; tempw=wai_ead-nex; if (tmw=NUL) ctndl<<排队中没有人!"<dl; whle(tw!=NULL) cot<tempwame<” "; empw=tempw>next; vdadd_nforaton(ode*had,in x,int y) ode *temp; tempnew oe; emp>eLL; temp-ext=NULL; ot”请输入个人信息"e; cotedl<”*”<endl; cout<"姓名 :;n>tep>ame; cout<"ID号 : ";cn>tmp->id; tempseat=; emp-lne=x; tm->nex=ead; temp-reead; f(head-nex!U)headet->pr=emp; he-nextemp; wrt_t_fil(); ct<edl<<* 订票成功 *en;void seachlete(i ) node*,*,; i *tempw,tmpw2,*epw; it step=,t1,t2,i; char ch; p=new noe; tempw=ne wait; temw2=nw wait; tempnewwait; q=ead; coutendl<”请输入个人信息”<end; cot<"*”endl; col<"姓名 : ”;cnp->name; do q=q->nxt; if ( (q!=NLL) (p(q,p) ot<end; q->date=qne; t"Lcae!"<dl; cut”*”; ou<endl"姓名:”<name; cout<end<D号 : "qid; t<el”座位号 : <q>set; o<<ndl<"班机号 : "<plne; cou<edl<”日期 : "qdatenl; if (x=) cout<”删除该纪录 ?Y/N "; cin>>h; if (c='Y|ch=y') t1=qplan; t=q->set; at1、seat=0; t1、et0; r=q;=q>pre; -preex=rnext; i(rext!=NUL) r>nxtprr->pe; dle(r); cout*记录删除成功 ! *" wr_tofile(); empw=wait_ead; o(i;iwa_head-;i+) pw=tpnxt; if(emw=UL) ek; i((tempwplane=t1) & (tempwse=2) strcp(tmpw3>nam,mwme); strcpy(tempw3->phone,temp-phn); cout<end<"等候得人中有可以订票得了:"<ndl; cout<<ed姓名 : "<tpw-na; utendl<<"ID号 : ”<tepwi<<n; at1、sat0+; t1、seatt2=; if(tepw-plan=1) add_nfrmtion(head1,1,tew-seat); i(tem->pn=2) ad_iformaion(ead2,2,emp>); if(tmpw-pa=3) addnformatio(ead3,3,temwsat); emp2=tepwpe; temw>nxt=temp->next; f(temwnt=NUL) wen=epw2; els eext>re=tempw2; dete(tempw); wihed>cut-; ri_to_e(); cout<endl”等候得”<tempwnam<"已经成功订票,已经由电话”<emp>phon<<”通知了”<el; rak; coine; else if (q=NLL) ste+; if(step=2) qd2; if(p=3)q=had3; if(step=4) cou<endl*信息检索完毕 *”;break; while(1);ool (node ,noe y) node p,*; it i,j,k; p=; q=y; =0; d hie( (pnamei !=q>namej) & (p>naei ! ') )+; f (pnmei = 0') retrn(fle);break; se ki; whil ( (p-e =q-naej) & (me!='0) k+;+; i (qname='0) urn(tre); els j=; +; whie( (>nj!=0) & (-aei ! '0) ); return(fase);oid rite_o_fle() FILE f; in i,j; nm; node*p; wait tmpw; empw=new wait; tmpw=wat_had; fpope("a、dt",”w"); or (i;i=m1;+) fre(ai,sizef(po),,f); fls(f); fp=fpen("informatn、","”); x0;x1=a1、seat0; for(=0,j=1;=m-1;j) i=i+aj、et;xjj、et0+xj-1; =1;p=had1next; for(j=1;j=;j+) i(jx1+1) p=headnext; if(j=x2+) p=heaet; f(p=NUL)break; fwrie(p,szof(noe),1,p); p->nex; fose(fp); ffope(”wait、tt,w"); f(=0;j=wait_head>ont;+) if(tempw=NL)break; fite(tepw,sieo(wit),1,fp); pw=tmpe; fcos(fp);