版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(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í)間: 2010.12.190 設(shè)計(jì)地點(diǎn): 軟件工程實(shí)驗(yàn)室、教室 成績(jī):指導(dǎo)教師評(píng)語(yǔ): 簽名: 年 月 日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ò)程
2、中培養(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ū)數(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ù)書(shū)所列選題表中選取,每班每題不得超過(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í),要求從分析題目的需求入手
3、,按設(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+,程序書(shū)寫規(guī)范,源程序需加必要的注釋;4、每位同學(xué)需提交可獨(dú)立運(yùn)行的程序;5、每位同學(xué)需獨(dú)立提交設(shè)計(jì)報(bào)告書(shū)(每人一份),要求編排格式統(tǒng)一、規(guī)范、內(nèi)容充實(shí),不少于10頁(yè)(代碼不算);6、課程設(shè)計(jì)實(shí)踐作為培養(yǎng)學(xué)生動(dòng)手能力的一種手段,單獨(dú)考核。 3課程設(shè)計(jì)說(shuō)
4、明書(shū)一 需求分析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.
5、) 承辦退票業(yè)務(wù): 根據(jù)客戶提供的情況(日期,航班),為客戶辦理退票手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問(wèn)排在第一的客戶,若退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問(wèn)其它排隊(duì)候補(bǔ)的客戶。二 概要設(shè)計(jì) 系統(tǒng)結(jié)構(gòu)圖主函數(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ù)類
6、型,運(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ù):int menu_select()/*菜單界面*/ int c; char s20;printf(n);printf(ttt 航空客運(yùn)訂票系統(tǒng)n);printf(
7、tt-n);printf(tt-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(tt-n);printf(tt-n);do printf(請(qǐng)選擇:); scanf(%s,s); c=atoi(s); while(c7); return c;void main() start=air;for(;) swi
8、tch(menu_select() case 1:list();break; case 2:prtlink();break; case 3:search();break; case 4:order();break; case 5:return_tkt();break; case 6:sort_tkt();break; case 7:printf(n感謝使用本系統(tǒng) 歡迎您下次使用!n);exit(0); ; printf(Press any key to continue n);航線信息: struct airline char ter_name10;/*終點(diǎn)站名 */ char air_num
9、10;/*航班號(hào)*/ char plane_num10;/*飛機(jī)號(hào)*/ char date7;/*飛行日期(星期幾)*/ int tkt_amt;/*乘員定額*/ int tkt_sur;/*余票量*/ linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/ linkqueue wait;/*等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/lineinfo;struct airline *start;struct airline airMAXSIZE=aaaaa,1,#123,Mon,4,2, bbbbb,2,#456,Tue,5,3, ccccc,3,#78
10、9,Fri,2,4;void display(struct airline *info)/*打印每條航線的基本信息*/printf(%8st%3st%st%4stt%3dt%10dn,info-ter_name,info-air_num,info-plane_num,info-date,info-tkt_amt,info-tkt_sur);void list()/*打印全部航線信息*/ struct airline *info; int i=0; info=start; printf(終點(diǎn)站名t航班號(hào)t飛機(jī)號(hào)t飛行日期t乘員定額t余票量n); while(iMAXSIZE) display(i
11、nfo); info+; i+; printf(nn);查詢航線:void search()/*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/ struct airline *info,*find(); char name10; int i=0; info=start; printf(請(qǐng)輸入終點(diǎn)站名:); scanf(%s,name); while(iter_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); struct
12、 airline *find()/*根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回*/ struct airline *info; char number10; int i=0; info=start; printf(請(qǐng)輸入航班號(hào):); scanf(%s,number); while(iair_num) return info; info+; i+; printf(對(duì)不起,該航線未找到!n); return NULL;客戶信息: void prtlink()/*打印訂票乘員名單域的客戶名單信息*/ linklist *p; struct airline *info; info=find(); p=i
13、nfo-order; if(p!=NULL) printf(客戶姓名 訂票數(shù)額 艙位等級(jí)n); while(p) printf(%stt%dt%dn,p-name,p-ord_amt,p-grade); p=p-next; else printf(該航線沒(méi)有客戶信息!n);linklist *insertlink(linklist *head,int amount,char name,int grade)/*增加訂票乘員名單域的客戶信息*/ linklist *p1,*new1; p1=head; new1=(linklist *)malloc(sizeof(linklist); if(!ne
14、w1) printf(nOut of memory!n);return NULL; strcpy(new1-name,name); new1-ord_amt=amount; new1-grade=grade; new1-next=NULL; if(head=NULL)/*若原無(wú)訂票客戶信息*/ head=new1;new1-next=NULL; else head=new1; new1-next=p1; return head;linkqueue appendqueue(linkqueue q,char name,int amount)/*增加排隊(duì)等候的客戶名單域*/ qptr new1;ne
15、w1=(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;else q.rear-next=new1;q.rear=new1;return q;訂票業(yè)務(wù):void order()/*辦理訂票業(yè)務(wù)*/ struct airline *info; int amount,grade; char name10; info=start; if(!(info=find() return;/*根據(jù)客
16、戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊*/ printf(請(qǐng)輸入你訂票所需要的數(shù)量:); scanf(%d,&amount); if(amountinfo-tkt_amt)/*若客戶訂票額超過(guò)乘員定票總額,退出*/ printf(n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!); return; if(amounttkt_sur)/*若客戶訂票額未超過(guò)余票量,訂票成功并等記信息*/ int i; printf(請(qǐng)輸入您的姓名(訂票客戶):); scanf(%s,name); printf(請(qǐng)輸入%s票的艙位等級(jí):,name); scanf(%d,&grade); info-order=ins
17、ertlink(info-order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/ for(i=0;itkt_amt-info-tkt_sur+i+1); info-tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/ printf(n祝您乘坐愉快!n); else /*若滿員或余票額少于訂票額,詢問(wèn)客戶是否需要進(jìn)行排隊(duì)等候*/ char r; printf(n已經(jīng)沒(méi)有更多的票,您需要排隊(duì)等候嗎?(Y/N); r=getch(); printf(%c,r); if(r=Y|r=y) printf(n請(qǐng)輸入您的姓名(排隊(duì)訂票客戶):); sc
18、anf(%s,name); info-wait=appendqueue(info-wait,name,amount);/*在排隊(duì)等候乘員名單域中添加客戶信息*/ printf(n注冊(cè)成功!n); else printf(n歡迎您下次再次訂購(gòu)!n); 退票業(yè)務(wù):void return_tkt()/*退票模塊*/ struct airline *info; qnode *t,*back,*f,*r; int grade; linklist *p1,*p2,*head; char cusname10; if(!(info=find() return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索*/
19、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; else p2-next=p1-next; in
20、fo-tkt_sur+=p1-ord_amt; grade=p1-grade; printf(%s成功退票!n,p1-name); free(p1); 剩票排序:void sort_tkt()/*按剩余票數(shù)排序*/int j;struct airline t,*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_surtkt_sur) t=*p; *p=*q; *q=t; printf(終點(diǎn)站名t航班號(hào)t飛機(jī)號(hào)t飛行日期t乘員定額t余票量n); for(j=0;jMAXSIZE;j
21、+) 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)行效率。五 用
22、戶手冊(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),歡
23、迎您下次使用!”六 測(cè)試成果航空客運(yùn)訂票系統(tǒng): 七 附錄(源程序清單)#include #include #include #include #define MAXSIZE 3 typedef struct wat_ros char name10; int req_amt; struct wat_ros *next;qnode,*qptr;typedef struct pqueue qptr front; /*等候替補(bǔ)客戶名單域的頭指針*/ qptr rear; /*等候替補(bǔ)客戶名單域的屬指針*/linkqueue;typedef struct ord_ros/*訂票信息*/ char nam
24、e10; int ord_amt; int grade; struct ord_ros *next;linklist;struct airline/*航線信息*/ char ter_name10;/*終點(diǎn)站名 */ char air_num10;/*航班號(hào)*/ char plane_num10;/*飛機(jī)號(hào)*/ char date7;/*飛行日期(星期幾)*/ int tkt_amt;/*乘員定額*/ int tkt_sur;/*余票量*/ linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/ linkqueue wait;/*等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)
25、頭隊(duì)尾的指針*/lineinfo;struct airline *start;struct airline airMAXSIZE=qqqqq,1,#123,Mon,4,2, bbbbb,2,#456,Tue,5,3, ccccc,3,#789,FRI,2,4;void display(struct airline *info)/*打印每條航線的基本信息*/printf(%8st%3st%st%4stt%3dt%10dn,info-ter_name,info-air_num,info-plane_num,info-date,info-tkt_amt,info-tkt_sur);void list
26、()/*打印全部航線信息*/ struct airline *info; int i=0; info=start; printf(終點(diǎn)站名t航班號(hào)t飛機(jī)號(hào)t飛行日期t乘員定額t余票量n); while(iMAXSIZE) display(info); info+; i+; printf(nn);void search()/*查詢航線*/ struct airline *info,*find();/*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/ char name10; int i=0; info=start; printf(請(qǐng)輸入終點(diǎn)站名:); scanf(%s,name); while(iter_
27、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); struct airline *find() struct airline *info;/*根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回*/ char number10; int i=0; info=start; printf(請(qǐng)輸入航班號(hào):); scanf(%s,number); while(iair_num) return info; info+; i+; pri
28、ntf(對(duì)不起,該航線未找到!n); return NULL;void prtlink()/*客戶信息*/ linklist *p;/*打印訂票乘員名單域的客戶名單信息*/ struct airline *info; info=find(); p=info-order; if(p!=NULL) printf(客戶姓名 訂票數(shù)額 艙位等級(jí)n); while(p) printf(%stt%dt%dn,p-name,p-ord_amt,p-grade); p=p-next; else printf(該航線沒(méi)有客戶信息!n);linklist *insertlink(linklist *head,in
29、t amount,char name,int grade) linklist *p1,*new1;/*增加訂票乘員名單域的客戶信息*/ p1=head; new1=(linklist *)malloc(sizeof(linklist); if(!new1) printf(nOut of memory!n);return NULL; strcpy(new1-name,name); new1-ord_amt=amount; new1-grade=grade; new1-next=NULL; if(head=NULL)/*若原無(wú)訂票客戶信息*/ head=new1;new1-next=NULL; e
30、lse head=new1; new1-next=p1; return head;linkqueue appendqueue(linkqueue q,char name,int amount) qptr new1;/*增加排隊(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;else q.rear-next=new1;q.rear=new1;return
31、 q;void order()/*訂票業(yè)務(wù)*/*辦理訂票業(yè)務(wù)*/ struct airline *info; int amount,grade; char name10; info=start; if(!(info=find() return;/*根據(jù)客戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊*/ printf(請(qǐng)輸入你訂票所需要的數(shù)量:); scanf(%d,&amount); if(amountinfo-tkt_amt)/*若客戶訂票額超過(guò)乘員定票總額,退出*/ printf(n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!); return; if(amounttkt_sur)/*若客戶訂
32、票額未超過(guò)余票量,訂票成功并等記信息*/ int i; 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;itkt_amt-info-tkt_sur+i+1); info-tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/ printf(n祝您乘坐愉快!n); else /*若滿員或余票額少于訂
33、票額,詢問(wèn)客戶是否需要進(jìn)行排隊(duì)等候*/ char r; 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); else printf(n歡迎您下次再次訂購(gòu)!n); void return_tkt()/*退票業(yè)務(wù)*/*退票模塊*/ struct airline
34、*info; qnode *t,*back,*f,*r; int grade; linklist *p1,*p2,*head; char cusname10; 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=N
35、ULL) printf(對(duì)不起,你沒(méi)有訂過(guò)票!n);return; else /*若信息查詢成功,刪除訂票客戶名單域中的信息*/ if(p1=head) head=p1-next; else p2-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ì)等候
36、名單隊(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)*/ int i; info-wait.front=t-next; printf(%s訂票成功!n,t-name); for(i=0;ireq_amt;i+) /*輸出座位號(hào)*/ printf(%s的座位號(hào)是:%dn,t-name,(info-tkt_sur)-i); info-tkt_sur-=t-req_amt; info-order=insertlink(info-order,t-req_am
37、t,t-name,grade);/*插入到訂票客戶名單鏈表中*/ free(t); break; back=t;t=t-next; if(info-tkt_sur)=(t-req_amt)&t!=NULL) )/*若滿足條件者不為頭結(jié)點(diǎn)*/ int i; back-next=t-next; printf(%s訂票成功!n,t-name); for(i=0;ireq_amt;i+) printf(s seat number is:%dn,t-name,(info-tkt_sur)-i); info-tkt_sur-=t-req_amt; info-order=insertlink(info-or
38、der,t-req_amt,t-name,grade); free(t);break; if(f=r) break; void sort_tkt()/*剩票排序*/ int j; struct airline t,*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_surtkt_sur) t=*p; *p=*q; *q=t; printf(終點(diǎn)站名t航班號(hào)t飛機(jī)號(hào)t飛行日期t乘員定額t余票量n); for(j=0;jMAXSIZE;j+) display(info); info+; int menu_select() int c; char s20; printf( n); printf(ttt 航空客運(yùn)訂票系統(tǒng)n); printf(tt-n); printf(tt-n); printf(*1.航 線 信 息*n); printf(*2.客 戶 信 息*n); pr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教新版第一冊(cè)生物下冊(cè)階段測(cè)試試卷含答案
- 2025年滬教新版九年級(jí)化學(xué)上冊(cè)階段測(cè)試試卷含答案
- 2025年冀教新版九年級(jí)物理下冊(cè)階段測(cè)試試卷含答案
- 2025年北師大新版高一數(shù)學(xué)下冊(cè)月考試卷含答案
- 家政洗滌居間服務(wù)協(xié)議
- 2025年北師大版九年級(jí)科學(xué)下冊(cè)階段測(cè)試試卷含答案
- 2025年外研版必修1物理下冊(cè)階段測(cè)試試卷含答案
- 2025年冀教版九年級(jí)科學(xué)上冊(cè)階段測(cè)試試卷含答案
- 文創(chuàng)產(chǎn)品店裝修合同樣本
- 2025年華師大版七年級(jí)物理下冊(cè)月考試卷含答案
- 安徽省合肥市包河區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末化學(xué)試題
- 《酸堿罐區(qū)設(shè)計(jì)規(guī)范》編制說(shuō)明
- PMC主管年終總結(jié)報(bào)告
- 售樓部保安管理培訓(xùn)
- 倉(cāng)儲(chǔ)培訓(xùn)課件模板
- 2025屆高考地理一輪復(fù)習(xí)第七講水循環(huán)與洋流自主練含解析
- GB/T 44914-2024和田玉分級(jí)
- 2024年度企業(yè)入駐跨境電商孵化基地合作協(xié)議3篇
- 《形勢(shì)與政策》課程標(biāo)準(zhǔn)
- 2023年海南省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 橋梁監(jiān)測(cè)監(jiān)控實(shí)施方案
評(píng)論
0/150
提交評(píng)論