航空客運(yùn)訂票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁(yè)
航空客運(yùn)訂票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁(yè)
航空客運(yùn)訂票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁(yè)
航空客運(yùn)訂票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁(yè)
航空客運(yùn)訂票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

如有你有幫助,請(qǐng)購(gòu)買下載,謝謝!如有你有幫助,請(qǐng)購(gòu)買下載,謝謝!頁(yè)P(yáng)AGE頁(yè)如有你有幫助,請(qǐng)購(gòu)買下載,謝謝!頁(yè)課程設(shè)計(jì)報(bào)告設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)選題名稱:航空客運(yùn)訂票系統(tǒng)專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)系院):計(jì)算機(jī)工程學(xué)院設(shè)計(jì)時(shí)間:設(shè)計(jì)地點(diǎn):軟件工程實(shí)驗(yàn)室、教室成績(jī):指導(dǎo)教師評(píng)語(yǔ):成績(jī):簽名:年月日1.課程設(shè)計(jì)目的1、訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識(shí),獨(dú)立完成問(wèn)題分析,結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識(shí),編寫程序求解指定問(wèn)題。2.初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;3.提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;4.訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),鞏固、深化學(xué)生的理論知識(shí),提高編程水平,并在此過(guò)程中培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。2.課程設(shè)計(jì)任務(wù)與要求:任務(wù)根據(jù)教材《數(shù)據(jù)結(jié)構(gòu)-C語(yǔ)言描述》(耿國(guó)華主編)和參考書《數(shù)據(jù)結(jié)構(gòu)題集(C語(yǔ)言版)》(嚴(yán)蔚敏、吳偉民主編)選擇課程設(shè)計(jì)題目,要求通過(guò)設(shè)計(jì),在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面加深對(duì)課程基本內(nèi)容的理解和綜合運(yùn)用。設(shè)計(jì)題目從任務(wù)書所列選題表中選取,每班每題不得超過(guò)2人。學(xué)生自選課題學(xué)生原則上可以結(jié)合個(gè)人愛(ài)好自選課題,要求課題有一定的深度與難度,有一定的算法復(fù)雜性,能夠鞏固數(shù)據(jù)結(jié)構(gòu)課程所學(xué)的知識(shí)。學(xué)生自選課題需在18周前報(bào)課程設(shè)計(jì)指導(dǎo)教師批準(zhǔn)方可生效。要求:1、在處理每個(gè)題目時(shí),要求從分析題目的需求入手,按設(shè)計(jì)抽象數(shù)據(jù)類型、構(gòu)思算法、通過(guò)設(shè)計(jì)實(shí)現(xiàn)抽象數(shù)據(jù)類型、編制上機(jī)程序和上機(jī)調(diào)試等若干步驟完成題目,最終寫出完整的分析報(bào)告。前期準(zhǔn)備工作完備與否直接影響到后序上機(jī)調(diào)試工作的效率。在程序設(shè)計(jì)階段應(yīng)盡量利用已有的標(biāo)準(zhǔn)函數(shù),加大代碼的重用率。2、設(shè)計(jì)的題目要求達(dá)到一定工作量(300行以上代碼),并具有一定的深度和難度。3、程序設(shè)計(jì)語(yǔ)言推薦使用C/C++,程序書寫規(guī)范,源程序需加必要的注釋;4、每位同學(xué)需提交可獨(dú)立運(yùn)行的程序;5、每位同學(xué)需獨(dú)立提交設(shè)計(jì)報(bào)告書(每人一份),要求編排格式統(tǒng)一、規(guī)范、內(nèi)容充實(shí),不少于10頁(yè)(代碼不算);6、課程設(shè)計(jì)實(shí)踐作為培養(yǎng)學(xué)生動(dòng)手能力的一種手段,單獨(dú)考核。3.課程設(shè)計(jì)說(shuō)明書一需求分析1.每條航線所設(shè)計(jì)的信息有:終點(diǎn)站名,航班號(hào),飛機(jī)號(hào),飛行周日(星期幾),乘員定額,余票量,已訂票的客戶名單(包括姓名,訂票量,艙位等級(jí)1,2或3)以及等候替補(bǔ)的客戶名單(包括姓名,所需票量);2.作為示意系統(tǒng),全部數(shù)據(jù)可以只存放在內(nèi)存中;3.系統(tǒng)能實(shí)現(xiàn)的操作功能如下:a)查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號(hào),飛機(jī)號(hào),星期幾飛行,最近一天航班的日期和余票額;b.)承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號(hào),訂票數(shù)額)查詢?cè)摵桨嗥鳖~情況,若尚余票則為客戶辦理訂票手續(xù),輸出座位號(hào);若已滿員或余票額少于訂票額,則需重新詢問(wèn)客戶要求。若需要可登記排隊(duì)候補(bǔ);c.)承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期,航班),為客戶辦理退票手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問(wèn)排在第一的客戶,若退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問(wèn)其它排隊(duì)候補(bǔ)的客戶。二概要設(shè)計(jì)系統(tǒng)結(jié)構(gòu)圖主函數(shù)主函數(shù)航線信息客戶信息查詢航線訂票辦理退票辦理剩票排序退出系統(tǒng)(2)簡(jiǎn)介主函數(shù):主要運(yùn)用了switch函數(shù)和do語(yǔ)句。航線信息:顯示已初始化的全部航線信息,定義了函數(shù)類型以及打印函數(shù),運(yùn)用了while語(yǔ)句以及指針??蛻粜畔ⅲ簽g覽已訂票客戶信息,定義了函數(shù)類型,運(yùn)用了if和while語(yǔ)句。查詢航線:調(diào)用find()函數(shù)尋找航線信息,定義了函數(shù)類型,運(yùn)用了if和while語(yǔ)句以及指針。訂票辦理:定義了函數(shù)類型,運(yùn)用了if語(yǔ)句及指針。退票辦理:定義了函數(shù)類型,調(diào)用查詢函數(shù),退票成功后,重新將航線名單域指向訂票單鏈表的頭指針。根據(jù)隊(duì)列中從出的客戶信息判斷是否滿足要求,如果滿足,則將該客戶的信息插入到乘客信息鏈表中。運(yùn)用了if和while語(yǔ)句以及指針。剩票排序:定義了函數(shù)類型,運(yùn)用了if和for語(yǔ)句及指針。退出系統(tǒng):直接退出。三詳細(xì)設(shè)計(jì)航空客運(yùn)訂票系統(tǒng):主函數(shù):intmenu_select()/*菜單界面*/{intc;chars[20];printf("\n");printf("\t\t\t航空客運(yùn)訂票系統(tǒng)\n");printf("\t\t\n");printf("\t\t\n");printf("***1.航線信息***\n");printf("***2.客戶信息***\n");printf("***3.查詢航線***\n");printf("***4.訂票辦理***\n");printf("***5.退票辦理***\n");printf("***6.剩票排序***\n");printf("***7.退出系統(tǒng)***\n");printf("\t\t\n");printf("\t\t\n");do{printf("請(qǐng)選擇:");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;case7:printf("\n感謝使用本系統(tǒng)歡迎您下次使用!\n");exit(0);};printf("Pressanykeytocontinue\n");}}航線信息:structairline{charter_name[10];/*終點(diǎn)站名*/charair_num[10];/*航班號(hào)*/charplane_num[10];/*飛機(jī)號(hào)*/chardate[7];/*飛行日期(星期幾)*/inttkt_amt;/*乘員定額*/inttkt_sur;/*余票量*/linklist*order;/*乘員名單域,指向乘員名單鏈表的頭指針*/linkqueuewait;/*等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/}lineinfo;structairline*start;structairlineair[MAXSIZE]={{"aaaaa","1","#123","Mon",4,2},{"bbbbb","2","#456","Tue",5,3},{"ccccc","3","#789","Fri",2,4}};;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("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行日期\t乘員定額\t余票量\n");while(i<MAXSIZE){display(info);info++;i++;}printf("\n\n");}查詢航線:voidsearch()/*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/{structairline*info,*find();charname[10];inti=0;info=start;printf("請(qǐng)輸入終點(diǎn)站名:");scanf("%s",name);while(i<MAXSIZE){if(!strcmp(name,info->ter_name))break;info++;i++;}if(i>=MAXSIZE)printf("對(duì)不起,該航線未找到!\n");else{printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行日期\t乘員定額\t余票量\n");display(info);}}structairline*find()/*根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回*/{structairline*info;charnumber[10];inti=0;info=start;printf("請(qǐng)輸入航班號(hào):");scanf("%s",number);while(i<MAXSIZE){if(!strcmp(number,info->air_num))returninfo;info++;i++;}printf("對(duì)不起,該航線未找到!\n");returnNULL;}客戶信息:voidprtlink()/*打印訂票乘員名單域的客戶名單信息*/{linklist*p;structairline*info;info=find();p=info->order;if(p!=NULL){printf("客戶姓名訂票數(shù)額艙位等級(jí)\n");while(p){printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);p=p->next;}}elseprintf("該航線沒(méi)有客戶信息!!\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)/*若原無(wú)訂票客戶信息*/{head=new1;new1->next=NULL;}elsehead=new1;new1->next=p1;returnhead;}linkqueueappendqueue(linkqueueq,charname[],intamount)/*增加排隊(duì)等候的客戶名單域*/{qptrnew1;new1=(qptr)malloc(sizeof(qnode));strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL)/*若原排隊(duì)等候客戶名單域?yàn)榭?/q.front=new1;elseq.rear->next=new1;q.rear=new1;returnq;}訂票業(yè)務(wù):voidorder()/*辦理訂票業(yè)務(wù)*/{structairline*info;intamount,grade;charname[10];info=start;if(!(info=find()))return;/*根據(jù)客戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊*/printf("請(qǐng)輸入你訂票所需要的數(shù)量:");scanf("%d",&amount);if(amount>info->tkt_amt)/*若客戶訂票額超過(guò)乘員定票總額,退出*/{printf("\n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!");return;}if(amount<=info->tkt_sur)/*若客戶訂票額未超過(guò)余票量,訂票成功并等記信息*/{inti;printf("請(qǐng)輸入您的姓名(訂票客戶):");scanf("%s",name);printf("請(qǐng)輸入%s票的艙位等級(jí):",name);scanf("%d",&grade);info->order=insertlink(info->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/for(i=0;i<amount;i++)/*依次輸出該訂票客戶的座位號(hào)*/printf("%s的座位號(hào)是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);info->tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/printf("\n祝您乘坐愉快!\n");}else/*若滿員或余票額少于訂票額,詢問(wèn)客戶是否需要進(jìn)行排隊(duì)等候*/{charr;printf("\n已經(jīng)沒(méi)有更多的票,您需要排隊(duì)等候嗎?(Y/N)");r=getch();printf("%c",r);if(r=='Y'||r=='y'){printf("\n請(qǐng)輸入您的姓名(排隊(duì)訂票客戶):");scanf("%s",name);info->wait=appendqueue(info->wait,name,amount);/*在排隊(duì)等候乘員名單域中添加客戶信息*/printf("\n注冊(cè)成功!\n");}elseprintf("\n歡迎您下次再次訂購(gòu)!\n");}}退票業(yè)務(wù):voidreturn_tkt()/*退票模塊*/{structairline*info;qnode*t,*back,*f,*r;intgrade;linklist*p1,*p2,*head;charcusname[10];if(!(info=find()))return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索*/head=info->order;p1=head;printf("請(qǐng)輸入你的姓名(退票客戶):");scanf("%s",cusname);while(p1!=NULL){/*根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢*/if(!strcmp(cusname,p1->name))break;p2=p1;p1=p1->next;}if(p1==NULL){printf("對(duì)不起,你沒(méi)有訂過(guò)票!\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",p1->name);free(p1);}剩票排序: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("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行日期\t乘員定額\t余票量\n");for(j=0;j<MAXSIZE;j++){display(info);info++;}}四設(shè)計(jì)與調(diào)試分析航空客運(yùn)訂票系統(tǒng):首先,可視化界面讓程序?qū)崿F(xiàn)的比較直接、省時(shí)。在分析實(shí)現(xiàn)時(shí),利用棧和隊(duì)列的相關(guān)知識(shí)實(shí)現(xiàn)所要實(shí)現(xiàn)的功能。鏈表在其中發(fā)揮了比較重要的作用。運(yùn)行程序時(shí)輸入了多種不同字符信息,經(jīng)過(guò)多次修改結(jié)果達(dá)到了預(yù)期效果。說(shuō)明程序具有一定的可靠性和穩(wěn)定性。當(dāng)然,該系統(tǒng)的語(yǔ)言比較基礎(chǔ),降低了運(yùn)行效率除此之外,該程序也有很多不足,若乘客訂多票并要退票時(shí),應(yīng)設(shè)計(jì)一個(gè)板塊詢問(wèn)其是否全部退票。當(dāng)乘客訂票選艙位時(shí),應(yīng)詢問(wèn)是否訂不同票價(jià)的機(jī)艙。還有,只設(shè)置了終點(diǎn)站,沒(méi)設(shè)起始站。除此之外,關(guān)于星期幾的設(shè)置沒(méi)有設(shè)成字符串型,無(wú)疑降低了運(yùn)行效率。五用戶手冊(cè)航空客運(yùn)訂票系統(tǒng):當(dāng)用戶進(jìn)入指定界面后,根據(jù)自身的需求選擇1-7其中一個(gè)序號(hào)。若選擇“1”,則會(huì)顯示出本系統(tǒng)內(nèi)存中的3條航線的相關(guān)信息;若選擇“3”,輸入航班號(hào),則可以瀏覽所求航線的相關(guān)信息;若選擇“4”,則輸入航班號(hào)以及訂票量,若訂票量的數(shù)目不大于余票量,則訂票成功,若大于余票量,系統(tǒng)提示是否候票,接著用戶選擇是否候票;若選擇“2”,輸入航班號(hào),就可以得到該航班上的客戶信息;若選擇“5”,輸入航班號(hào)和客戶姓名,則可以成功退票,此時(shí)若有人候票,則前幾個(gè)人便可以訂票成功;若選擇“6”,系統(tǒng)將會(huì)將航班的相關(guān)信息按剩票的多少排逆序;若選擇“7”,便會(huì)直接退出系統(tǒng),系統(tǒng)會(huì)顯示“感謝使用本系統(tǒng),歡迎您下次使用!”六測(cè)試成果航空客運(yùn)訂票系統(tǒng):七附錄(源程序清單)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#defineMAXSIZE3typedefstructwat_ros{charname[10];intreq_amt;structwat_ros*next;}qnode,*qptr;typedefstructpqueue{qptrfront;/*等候替補(bǔ)客戶名單域的頭指針*/qptrrear;/*等候替補(bǔ)客戶名單域的屬指針*/}linkqueue;typedefstructord_ros/*訂票信息*/{charname[10];intord_amt;intgrade;structord_ros*next;}linklist;structairline/*航線信息*/{charter_name[10];/*終點(diǎn)站名*/charair_num[10];/*航班號(hào)*/charplane_num[10];/*飛機(jī)號(hào)*/chardate[7];/*飛行日期(星期幾)*/inttkt_amt;/*乘員定額*/inttkt_sur;/*余票量*/linklist*order;/*乘員名單域,指向乘員名單鏈表的頭指針*/linkqueuewait;/*等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/}lineinfo;structairline*start;structairlineair[MAXSIZE]={{"qqqqq","1","#123","Mon",4,2},{"bbbbb","2","#456","Tue",5,3},{"ccccc","3","#789","FRI",2,4}};;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("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行日期\t乘員定額\t余票量\n");while(i<MAXSIZE){display(info);info++;i++;}printf("\n\n");}voidsearch()/*查詢航線*/{structairline*info,*find();/*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/charname[10];inti=0;info=start;printf("請(qǐng)輸入終點(diǎn)站名:");scanf("%s",name);while(i<MAXSIZE){if(!strcmp(name,info->ter_name))break;info++;i++;}if(i>=MAXSIZE)printf("對(duì)不起,該航線未找到!\n");else{printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行日期\t乘員定額\t余票量\n");display(info);}}structairline*find(){structairline*info;/*根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回*/charnumber[10];inti=0;info=start;printf("請(qǐng)輸入航班號(hào):");scanf("%s",number);while(i<MAXSIZE){if(!strcmp(number,info->air_num))returninfo;info++;i++;}printf("對(duì)不起,該航線未找到!\n");returnNULL;}voidprtlink()/*客戶信息*/{linklist*p;/*打印訂票乘員名單域的客戶名單信息*/structairline*info;info=find();p=info->order;if(p!=NULL){printf("客戶姓名訂票數(shù)額艙位等級(jí)\n");while(p){printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);p=p->next;}}elseprintf("該航線沒(méi)有客戶信息!!\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)/*若原無(wú)訂票客戶信息*/{head=new1;new1->next=NULL;}elsehead=new1;new1->next=p1;returnhead;}linkqueueappendqueue(linkqueueq,charname[],intamount){qptrnew1;/*增加排隊(duì)等候的客戶名單域*/new1=(qptr)malloc(sizeof(qnode));strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL)/*若原排隊(duì)等候客戶名單域?yàn)榭?/q.front=new1;elseq.rear->next=new1;q.rear=new1;returnq;}voidorder()/*訂票業(yè)務(wù)*//*辦理訂票業(yè)務(wù)*/{structairline*info;intamount,grade;charname[10];info=start;if(!(info=find()))return;/*根據(jù)客戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊*/printf("請(qǐng)輸入你訂票所需要的數(shù)量:");scanf("%d",&amount);if(amount>info->tkt_amt)/*若客戶訂票額超過(guò)乘員定票總額,退出*/{printf("\n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!");return;}if(amount<=info->tkt_sur)/*若客戶訂票額未超過(guò)余票量,訂票成功并等記信息*/{inti;printf("請(qǐng)輸入您的姓名(訂票客戶):");scanf("%s",name);printf("請(qǐng)輸入%s票的艙位等級(jí):",name);scanf("%d",&grade);info->order=insertlink(info->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/for(i=0;i<amount;i++)printf("%s的座位號(hào)是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);info->tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/printf("\n祝您乘坐愉快!\n");}else/*若滿員或余票額少于訂票額,詢問(wèn)客戶是否需要進(jìn)行排隊(duì)等候*/{charr;printf("\n已經(jīng)沒(méi)有更多的票,您需要排隊(duì)等候嗎?(Y/N)");r=getch();printf("%c",r);if(r=='Y'||r=='y'){printf("\n請(qǐng)輸入您的姓名(排隊(duì)訂票客戶):");scanf("%s",name);info->wait=appendqueue(info->wait,name,amount);/*在排隊(duì)等候乘員名單域中添加客戶信息*/printf("\n注冊(cè)成功!\n");}elseprintf("\n歡迎您下次再次訂購(gòu)!\n");}}voidreturn_tkt()/*退票業(yè)務(wù)*//*退票模塊*/{structairline*info;qnode*t,*back,*f,*r;intgrade;linklist*p1,*p2,*head;charcusname[10];if(!(info=find()))return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索*/head=info->order;p1=head;printf("請(qǐng)輸入你的姓名(退票客戶):");scanf("%s",cusname);while(p1!=NULL)/*根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢*/{if(!strcmp(cusname,p1->name))break;p2=p1;p1=p1->next;}if(p1==NULL){printf("對(duì)不起,你沒(méi)有訂過(guò)票!\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",p1->name);free(p1);}info->order=head;/*重新將航線名單域指向訂票單鏈表的頭指針*/f=(info->wait).front;/*f指向排隊(duì)等候名單隊(duì)列的頭結(jié)點(diǎn)*/r=(info->wait).rear;/*r指向排隊(duì)等候名單隊(duì)列的尾結(jié)點(diǎn)*/t=f;/*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)名單域*/while(t){if(info->tkt_sur=info->wait.front->req_amt){/*若滿足條件者為頭結(jié)點(diǎn)*/inti;info->wait.front=t->next;printf("%s訂票成功!\n",t->name);for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/printf("%s的座位號(hào)是:%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;if((info->tkt_sur)>=(t->req_amt)&&t!=NULL))/*若滿足條件者不為頭結(jié)點(diǎn)*/{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()/*剩票排序*/{intj;structairlinet,*info,*p,*q;p=info=air;for(p=info;(p+1)->tkt_sur;p++)/*按剩余票數(shù)排序*/for(q=p+1;q->tkt_sur;q++){if(p->tkt_sur<q->tkt_sur){t=*p;*p=*q;*q=t;}}printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行日期\t乘員定額\t余票量\n");for(j=0;j<MAXSIZE;j++){display(info);info++;}}intmenu_select(){intc;chars[20];printf("\n");printf("\t\t\t航空客運(yùn)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論