C語言航空訂票系統(tǒng)方案_第1頁
C語言航空訂票系統(tǒng)方案_第2頁
C語言航空訂票系統(tǒng)方案_第3頁
C語言航空訂票系統(tǒng)方案_第4頁
C語言航空訂票系統(tǒng)方案_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

專業(yè)技術資料專業(yè)技術資料航空客運訂票系統(tǒng):XXX班級:XXXX學號:XXXXXXXXX目錄TOC\o"1-5"\h\z一、問題描述??1二、設計要求…??..1三、數(shù)據(jù)結構設計??2四、詳細設計程序??3五、運行與測試?9六、收獲及體會???13一、問題描述設計一個航空客運訂票系統(tǒng),為乘客提供各種航空客運信息服務。二、設計要求每條航線所涉及的信息有:終點站名、航班號、飛機號、飛行日(星期幾)乘員定額、余票量、已訂票的客戶(包括、訂票量、艙位等級1,2或3)以及等候替補的客戶(包括、所需票量);系統(tǒng)能實現(xiàn)的操作和功能如下:a)查詢航線:根據(jù)旅客提出的終點站名輸出下列信息:航班號、飛機號、星期幾飛行,最近一天航班的日期和余票額;b)承辦訂票業(yè)務:根據(jù)客戶提出的要求(航班號、訂票數(shù)額)查詢該航班票額情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員或余票額少于定票額,則需重新詢問客戶要求。若需要,可登記排隊候補;c)承辦退票業(yè)務:根據(jù)客戶提供的情況(日期、航班),為客戶辦理退票手續(xù),然后查詢該航班是否有人排隊候補,首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊候補的客戶。三、數(shù)據(jù)結構設計a)等候替補的客戶(包括、所需票量)typedefstructwat_ros{charname[10];/**/intreq_amt;/*訂票量*/structwat_ros*next;}qnode,*qptr;typedefstructpqueu{qptrfront;/*等候替補客戶域的頭指針*/qptrrear;/*等候替補客戶域的屬指針*/}linkqueue;b)訂票的客戶(包括、訂票量、艙位等級1,2或3)typedefstructord_ros{charname[10];/*客戶*/intord_amt;/*訂票量*/intgrade;/*艙位等級*/structord_ros*next;}linklist;C)每條航線所涉及的信息:終點站名、航班號、飛機號、飛行日(星期幾)、乘員定額、余票量、已訂票的客戶、以及等候替補的客戶structairline{charzong_name[10];/*終點站名*/charair_num[10];/*航班號*/charplane_num[10];/*飛機號*/chardate[7];/*飛行日期(星期幾)*/inttkt_amt;/*乘員定額*/inttkt_sur;/*余票量*/linklist*order;/*乘員域,指向乘員鏈表的頭指針*/linkqueuewait;/*等候替補的客戶域,分別指向排隊等候隊頭隊尾的指針*/}lineinfo;四、詳細設計程序主函數(shù):intmenu_select()/*菜單界面*/{intc;chars[20];printf("\n\t\t航空客運訂票系統(tǒng)\n");printf("******************************************\n");printf("1.瀏覽航線信息\n");printf("2.瀏覽已訂票客戶信息\n");printf("3.查詢航線\n");printf("4.辦理訂票業(yè)務\n");printf("5.辦理退票業(yè)務\n");printf("6.查看剩余票數(shù)并排序\n");printf("0.退出系統(tǒng)\n");printf("*******************************************\n");do{printf(〃請選擇:〃);scanf("%s",s);c=atoi(s);}while(c<0||c>7);returnc;}voidmain(){start=air;for(;;){switch(menu_select()){case1:list();break;case2:prtlink();break;case3:search();break;case4:order();break;case5:return_tkt();break;case6:sort_tkt();break;caseO:printf("\n歡迎使用本系統(tǒng),再見!\n");exit(0);}printf("\nPressanykeytocontinue!\n");getch();}}航線信息:structairline{charzong_name[10];/*終點站名*/charair_num[10];/*航班號*/charplane_num[10];/*飛機號*/chardate[7];/*飛行日期(星期幾)*/inttkt_amt;/*乘員定額*/inttkt_sur;/*余票量*/linklist*order;/*乘員域,指向乘員鏈表的頭指針*/linkqueuewait;/*等候替補的客戶域,分別指向排隊等候隊頭隊尾的指針*/}lineinfo;structairline*start;structairlineair[MAXSIZE]={{"aaa","1","001","SUN",30,15},{"bbb","2","002","MON",40,10},{"ccc","3","003","FRI",50,14},{"ddd","4","004","TUE",60,20}};voiddisplay(structairline*info)/*打印每條航線的基本信息*/{printf("%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur);}voidlist()/*打印全部航線信息*/{structairline*info;inti=0;info=start;printf("終點站名\t航班號\t飛機號\t飛行日期\t乘員定額\t余票量\n");while(i<MAXSIZE){display(info);info++;i++;}printf("\n\n");}查詢航線:voidsearch()/*根據(jù)客戶提出的終點站名輸出航線信息*/{structairline*info,*find();charname[10];inti=0;info=start;printf("請輸入終點站名:");scanf("%s",name);while(i<MAXSIZE){if(!strcmp(name,info->zong_name))break;info++;i++;}if(i>=MAXSIZE)printf("對不起,該航線未找到!\n");else{printf("終點站名\t航班號\t飛機號\t飛行日期\t乘員定額\t余票量\n");display(info);}}structairline*find()/*根據(jù)系統(tǒng)提出的航班號查詢并以指針形式返回*/{structairline*info;charnumber[10];inti=0;info=start;printf("請輸入航班號:");scanf("%s",number);while(i<MAXSIZE){if(!strcmp(number,info->air_num))returninfo;info++;i++;}printf("對不起,該航線末找到!\n");returnNULL;}客戶信息:voidprtlink()/*打印訂票乘員域的客戶信息*/{linklist*p;structairline*info;info=find();p=info->order;if(p!=NULL){printf("客戶訂票數(shù)額艙位等級\n");while(p){printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);p=p->next;}}elseprintf("該航線沒有客戶信息??!\n");}linklist*insertlink(linklist*head,intamount,charname[],intgrade)/*增加訂票乘員域的客戶信息*/{linklist*p1,*new1;p1=head;new1=(linklist*)malloc(sizeof(linklist));if(!new1){printf("\nOutofmemory!!\n");returnNULL;}strcpy(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head==NULL)/*若原無訂票客戶信息*/{head=new1;new1->next=NULL;}elsehead=new1;new1->next=p1;returnhead;}linkqueueappendqueue(linkqueueq,charname[],intamount)/*增加排隊等候的客戶域*/{qptrnew1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL)/*若原排隊等候客戶域為空*/q.front=new1;elseq.rear->next=new1;q.rear=new1;returnq;訂票業(yè)務:voidorder()/*辦理訂票業(yè)務*/{structairline*info;intamount,grade;charname[10];info=start;if(!(info二find()))return;/*根據(jù)客戶提供的航班號進行查詢,如為空,退出該模塊*/printf(〃請輸入你訂票所需要的數(shù)量:");scanf("%d",&amount);if(amount〉info-〉tkt_amt)/*若客戶訂票額超過乘員定票總額,退出*/{printf("\n對不起,您輸入的票的數(shù)量已經(jīng)超過乘員定額!");return;}if(amount〈二info-〉tkt_sur)/*若客戶訂票額末超過余票量,訂票成功并等記信息、*/{inti;printf(〃請輸入您的(訂票客戶):");scanf("%s",name);printf("請輸入%s票的艙位等級:",name);scanf("%d",&grade);info->order=insertlink(info-〉order,amount,name,grade);/*在訂票乘員域中添加客戶信息*/for(i=0;i<amount;i++)/*依次輸出該訂票客戶的座位號*/printf("%s的座位號是:%d\n",name,info-〉tkt_amt-info-〉tkt_sur+i+l);info->tkt_sur-=amount;/*該航線的余票量應減掉該客戶的訂票量*/printf("\n祝您乘坐愉快!\n");}else/*若滿員或余票額少于訂票額,詢問客戶是否需要進行排隊等候*/{charr;printf("\n已經(jīng)沒有更多的票,您需要排隊等候嗎?(Y/N)");r=getch();printf("%c",r);if(r=='Y'||r=='y'){printf("\n請輸入您的(排隊訂票客戶):");scanf("%s",name);info-〉wait二appendqueue(info-〉wait,name,amount);/*在排隊等候乘員域中添加客戶信息*/printf("\n注冊成功!\n");}elseprintf("\n歡迎您下次再次訂購!\n");}}退票業(yè)務:voidreturn_tkt()/*退票模塊*/{structairline*info;qnode*t,*back,*f,*r;intgrade;linklist*p1,*p2,*head;charcusname[10];if(!(info二find()))return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進行搜索*/head=info->order;p1=head;printf("請輸入你的(退票客戶):");scanf("%s",cusname);while(p1!=NULL){/*根據(jù)客戶提供的到訂票客戶域進行查詢*/if(!strcmp(cusname,p1->name))break;p2=p1;p1=p1->next;}if(pl==NULL){printf("對不起,你沒有訂過票!\n");return;}/*若未找到,退出本模塊*/else{/*若信息查詢成功,刪除訂票客戶域中的信息*/if(p1==head)head=p1->next;elsep2->next=p1->next;info->tkt_sur+=p1->ord_amt;grade=p1->grade;printf("%s成功退票!\n",pl-〉name);free(p1);}info-〉order二head;/*重新將航線域指向訂票單鏈表的頭指針*/f=(info-〉wait).front;/*f指向排隊等候隊列的頭結點*/r=(info-〉wait).rear;/*r指向排隊等候隊列的尾結點*/t=f;/*t為當前滿點條件的排隊候補域*/while(t){if(info-〉tkt_sur=info-〉wait.front-〉req_amt){/*若滿足條件者為頭結點*/inti;info-〉wait.front=t-〉next;printf("%s訂票成功!\n",t-〉name);for(i=0;i<t-〉req_amt;i++)/*輸出座位號*/printf("%s的座位號是:%d\n",t-〉name,(info-〉tkt_sur)-i);info-〉tkt_sur-=t-〉req_amt;info-〉order二insertlink(info-〉order,t-〉req_amt,t-〉name,grade);/*插入到訂票客戶鏈表中*/free(t);break;}back=t;t=t-〉next;辻((info-〉tkt_sur)〉=(t-〉req_amt)&&t!=NULL)/*若滿足條件者不為頭結點*/{inti;back->next=t->next;printf("%s訂票成功!\n〃,t-〉name);for(i=0;i〈t-〉req_amt;i++)/*輸出座位號*/printf("<%s〉'sseatnumberis:%d\n",t-〉name,(info-〉tkt_sur)-i);info-〉tkt_sur-=t-〉req_amt;info-〉order二insertlink(info-〉order,t-〉req_amt,t-〉name,grade);/*插入到訂票客戶鏈表中*/free(t);break;}if(f==r)break;}}剩票排序:voidsort_tkt(){/*按剩余票數(shù)排序*/intj;structairlinet,*info,*p,*q;p=info=air;for(p=info;(p+1)-〉tkt_sur;p++)for(q=p+1;q-〉tkt_sur;q++){if(p-〉tkt_sur〈q-〉tkt_sur){t=*p;*p=*q;*q=t;}}printf("終點站名\t航班號\t飛機號\t飛行日期\t乘員定額\t余票量\n");for(j=0;j〈MAXSIZE;j++){display(info);info++;}}六、運行與測試

'C'■■,lirdDV;^\Ceskt2c\L:rtiJci\l134ehe'1Pressankeytocontinue!航空客運訂票系統(tǒng)■KKKKKKK)OC)OCX)(X)()O<m<m<m<K)C)()C)()CMJCMWK)CK)CK)C)C祝您乘坐愉快!rC:\Users\爲irid□ws\DesIctcp\DebLg\l134.exe'航空客運訂票系統(tǒng)息序信排戶并息客務^信票業(yè)業(yè)票線晉票亜荼統(tǒng)航已航貫掣理理看出嘴倍歷囈-11234560請選甲1終點站名aaabbhcccdddrC:\Users\爲irid□ws\DesIctcp\DebLg\l134.exe'航空客運訂票系統(tǒng)息序信排戶并息客務^信票業(yè)業(yè)票線晉票亜荼統(tǒng)航已航貫掣理理看出嘴倍歷囈-11234560請選甲1終點站名aaabbhcccddd航班號1234飛機號901002383384飛行日期SUNMONFRITUE乘員定頷30405060/J、“j、-^―20202626PressanuBevtocontinuBT自.3信息客信票線體票曇統(tǒng)航已航理理看岀查辦辦查退序lllm并業(yè)業(yè)票般班營剛刖zhan前戰(zhàn)凹的座需要的熬塁:(訂票蓉聲)刀艙位Wh=2.位號是;"旦吃)=sFans(i'C:\Us-ers\vdndow5\De-5k±ap\Debug\llL34.exe‘祝您乘坐愉快!Pressan_ykey七ocontInLief航空客運訂票系統(tǒng)息息Jf亠呂41-戶并息客務4^信票業(yè)業(yè)票線怎票畧統(tǒng)航已航幫翠理理看出1234560請選擇泊澎I△鴛■點站名5評I丄,H-..IS終貞站名航班號飛機號飛行日期乘員定額ISaaa1001SUN30Pressanukeytocontinue?-C:\Use-re\windows\.De5kt=p\Deb'ug\l1S4.e)c&'PressanyKeytocentmueT航空客運訂票系統(tǒng)1234560息信息客信票線£票零統(tǒng)航已航也景理理看出砌查辦辦查退序-二—1234560息信息客信票線£票零統(tǒng)航已航也景理理看出砌查辦辦查退序-二—?

并務業(yè)業(yè)票擇入姓fr選幫an請埴各話赭數(shù)額2PressanyKey七ocent:mue?'C:\U&ers\vi;indows\口旦5lctcp\Debuq'\lli)4,巨""ressanytocontinue?1航空客運訂票系統(tǒng)自3序信排戶并息客務信票業(yè)業(yè)票線真票橐統(tǒng)航已航也犁理理看岀嚼->呀詹-11234560冬點站名hbb航班號2飛機號002飛行日期MON乘員疋額46ccc0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論