版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、-. z. . . . 資料 . .?數(shù)據(jù)構(gòu)造課程設(shè)計(jì)?報(bào)告設(shè)計(jì)題目 航空客運(yùn)訂票系統(tǒng) 專業(yè)班級 學(xué) 號 姓 名 電 話 完成日期 目 錄1.問題描述22.系統(tǒng)設(shè)計(jì)23.數(shù)據(jù)構(gòu)造與算法描述44.測試結(jié)果與分析65.總 結(jié)106.參考文獻(xiàn)10附錄 程序源代碼10課程設(shè)計(jì)題目1. 問題描述基于人們對航空客運(yùn)使用需求的日益提高,為方便乘客提前買票及優(yōu)化飛機(jī)航空訂票效勞,需要開發(fā)一個(gè)飛機(jī)訂票系統(tǒng),此程序是為實(shí)現(xiàn)航班情況的查詢,訂票,退票以及客戶信息瀏覽與票務(wù)信息瀏覽等根本功能。2. 系統(tǒng)設(shè)計(jì)2.1 設(shè)計(jì)目標(biāo)1可以瀏覽航線信息;包括終點(diǎn)站名、航班號、飛機(jī)號、飛行日期、乘員定額和余票量;2可以瀏覽已訂票客
2、戶信息;包括客戶、訂票數(shù)額和艙位等級;3可以查詢航線;包括終點(diǎn)站名、航班號、飛機(jī)號、飛行日期、乘員定額和余票量;4可以辦理訂票業(yè)務(wù);需提供航班號、所需票數(shù)、客戶和艙位等級,生成客戶座位號;5可以辦理退票業(yè)務(wù);提供航班號和客戶,即可退票;6可以查看剩余票數(shù);7要求:根據(jù)以上功能說明,設(shè)計(jì)航班信息,訂票信息的存儲構(gòu)造,設(shè)計(jì)程序完成功能。2.2 設(shè)計(jì)思想運(yùn)行環(huán)境軟硬件環(huán)境:DEV-C+;輸入的形式和輸入值的圍:由航空公司輸入航線情況并以單鏈表的形式存儲在存里面; 輸出的形式描述:通過客戶的輸入,輸出相應(yīng)容;功能描述:用戶可通過本系統(tǒng)實(shí)現(xiàn)對航班的查詢、訂票和退票功能。2.3 系統(tǒng)模塊劃分2.3.1主函
3、數(shù)輸出菜單界面。輸入指令,顯示,敲擊回車開場工作。2.3.2瀏覽航線信息編寫void list()函數(shù)實(shí)現(xiàn)打印全部航線信息的功能,調(diào)用void display()函數(shù)實(shí)現(xiàn)打印struct airline鏈表中存儲的航線的根本信息的功能。2.3.2瀏覽已訂票客戶信息編寫void prtlink()函數(shù)實(shí)現(xiàn)打印訂票乘員域的客戶信息的功能,調(diào)用find函數(shù)查詢并以指針形式返回。2.3.3查詢航線編寫void search()函數(shù)實(shí)現(xiàn)根據(jù)客戶提出的終點(diǎn)站名輸出航線信息的功能。用戶輸入終點(diǎn)站名,該函數(shù)會在航線信息鏈表中進(jìn)展查詢,并輸出該航線信息或提示未找到該航線。2.3.4辦理訂票業(yè)務(wù)編寫void or
4、der()函數(shù)實(shí)現(xiàn)辦理訂票業(yè)務(wù)的功能。根據(jù)客戶提供的航班號,調(diào)用find函數(shù)進(jìn)展查詢,如為空,退出該模塊;輸入客戶訂票額,假設(shè)客戶訂票額末超過余票量,訂票成功,調(diào)用linklist *insertlink()在訂票乘員域中添加客戶信息,并在該航線的余票量中減掉該客戶的訂票量,然后依次輸出該訂票客戶的座位號;客戶訂票額超過余票量總額或滿員,詢問客戶是否需要進(jìn)展排隊(duì)等候;假設(shè)等候,調(diào)用linkqueue appendqueue()在排隊(duì)等候乘員域中添加客戶信息;否則退出。2.3.5辦理退票業(yè)務(wù)編寫void return_tkt()函數(shù)實(shí)現(xiàn)辦理退票業(yè)務(wù)的功能。根據(jù)客戶提供的航班號,調(diào)用find函數(shù)進(jìn)
5、展查詢,根據(jù)客戶提供的到訂票客戶域進(jìn)展查詢,假設(shè)未找到,退出本模塊;假設(shè)信息查詢成功,在訂票乘員域中刪除客戶信息,并在該航線的余票量中增加該客戶的訂票量。檢查排隊(duì)等候乘員域,找出滿足當(dāng)前條件的排隊(duì)候補(bǔ)域,插入到訂票客戶鏈表中。循環(huán)該步驟直到無滿足當(dāng)前條件的排隊(duì)候補(bǔ)域,退出。2.3.6查看剩余票數(shù)編寫void list()函數(shù)實(shí)現(xiàn)打印全部航線信息的功能,調(diào)用void display()函數(shù)實(shí)現(xiàn)打印每條航線的根本信息的功能。3. 數(shù)據(jù)構(gòu)造與算法描述1下述單鏈表用來存儲乘員信息,包括客戶、訂票量、艙位等級。typedef struct ord_ros char name10;/*客戶*/int or
6、d_amt;/*訂票量*/int grade;/*艙位等級*/struct ord_ros *ne*t;linklist;2下述單鏈隊(duì)列用來存儲等候替補(bǔ)客戶信息,通過隊(duì)列先進(jìn)先出的特點(diǎn),使先排隊(duì)的客戶先訂票成功。typedef struct wat_ros /*單鏈隊(duì)列存儲等候替補(bǔ)客戶信息*/ char name10;/*/int req_amt;/*訂票量*/struct wat_ros *ne*t;qnode,*qptr;typedef struct pqueue qptr front;/*等候替補(bǔ)客戶域的頭指針*/qptr rear;/*等候替補(bǔ)客戶域的屬指針*/linkqueue;3下
7、述構(gòu)造體存儲了航班信息,終點(diǎn)站名、航班號、飛機(jī)號、飛行日期、乘員定額和余票量。struct airline char ter_name10;/*終點(diǎn)站名 */char air_num10;/*航班號*/char plane_num10;/*飛機(jī)號*/char date7;/*飛行日期星期幾*/int tkt_amt;/*乘員定額*/int tkt_sur;/*余票量*/linklist *order;/*乘員域,指向乘員鏈表的頭指針*/linkqueue wait;/*等候替補(bǔ)的客戶域,分別指向排隊(duì)等候隊(duì)頭隊(duì)尾的指針*/ line;4通過修改全局變量MA*SIZE的數(shù)值即可改變航線數(shù)目,在st
8、ruct airline airMA*SIZE中可修改、增加、刪除航線信息。struct airline *head; /*初始化航班信息*/struct airline airMA*SIZE= BJS,1,MU5694,JUN1st,50,50, BJS,2,MU5694,JUN2nd,50,50, SHA,3,MU5390,JUN1st,50,50, SHA,4,MU5390,JUN2nd,50,50, CAN,5,CZ3364,JUN1st,50,50,CAN,6,CZ3364,JUN2nd,50,50;4. 測試結(jié)果與分析可將測試過程抓圖說明4.1進(jìn)入航空客運(yùn)訂票系統(tǒng)4.2瀏覽航線信息
9、輸入指令“14.3瀏覽已訂票客戶信息輸入指令“24.4查詢航線輸入指令“3,并根據(jù)提示進(jìn)展相應(yīng)操作4.5辦理訂票業(yè)務(wù)輸入指令“4 ,并根據(jù)提示進(jìn)展相應(yīng)操作4.6辦理退票業(yè)務(wù)輸入指令“5 ,并根據(jù)提示進(jìn)展相應(yīng)操作4.7查看剩余票數(shù)輸入指令“64.8退出系統(tǒng)輸入指令“05. 總 結(jié)通過此次的課程設(shè)計(jì),將課本上所學(xué)習(xí)的有關(guān)容應(yīng)用到實(shí)踐當(dāng)中。在調(diào)試程序時(shí),首先對整個(gè)程序流程有全面的認(rèn)識,調(diào)試過程中需要細(xì)心、耐心,在修改時(shí)要有耐心,編譯出錯(cuò)后必須逐個(gè)錯(cuò)誤去改正。通過此次課程設(shè)計(jì),我感覺到自己在編寫比擬大的程序時(shí),還是缺乏思路,對程序的整體構(gòu)架不是很清晰明了,這是我需要攻克的一大難點(diǎn)!編程的過程就是不斷學(xué)
10、習(xí)和掌握的過程,也是對自己學(xué)習(xí)掌握程度的一個(gè)檢驗(yàn)過程。6. 參考文獻(xiàn) 包括書籍、論文、網(wǎng)絡(luò)資料等1 振安等.?C+程序設(shè)計(jì)課程設(shè)計(jì)?.:機(jī)械工業(yè),2004.12. 2 仕華 韋巍等 ?數(shù)據(jù)構(gòu)造課程設(shè)計(jì)?.:機(jī)械工業(yè),2021.3.3嚴(yán)蔚敏 吳偉民 ?數(shù)據(jù)構(gòu)造C語言版?.:清華大學(xué),2021.7.附錄 程序源代碼*include *include *include *include /getch *define MA*SIZE 6 /定義航線量的最大值*/*define AMOUNT 50/*定義每條航班的總座位數(shù)*/typedef struct wat_ros /*單鏈隊(duì)列存儲等候替補(bǔ)客戶信息
11、*/ char name10;/*/ int req_amt;/*訂票量*/ struct wat_ros *ne*t;qnode,*qptr;typedef struct pqueue qptr front;/*等候替補(bǔ)客戶域的頭指針*/ qptr rear;/*等候替補(bǔ)客戶域的屬指針*/linkqueue;typedef struct ord_ros char name10;/*客戶*/ int ord_amt;/*訂票量*/ int grade;/*艙位等級*/ struct ord_ros *ne*t;linklist;struct airline char ter_name10;/*
12、終點(diǎn)站名 */ char air_num10;/*航班號*/ char plane_num10;/*飛機(jī)號*/ char date7;/*飛行日期星期幾*/ int tkt_amt;/*乘員定額*/ int tkt_sur;/*余票量*/ linklist *order;/*乘員域,指向乘員鏈表的頭指針*/ linkqueue wait;/*等候替補(bǔ)的客戶域,分別指向排隊(duì)等候隊(duì)頭隊(duì)尾的指針*/line;struct airline *head; /*初始化航班信息*/struct airline airMA*SIZE= BJS,1,MU5694,JUN1st,50,50, BJS,2,MU56
13、94,JUN2nd,50,50, SHA,3,MU5390,JUN1st,50,50, SHA,4,MU5390,JUN2nd,50,50, CAN,5,CZ3364,JUN1st,50,50,CAN,6,CZ3364,JUN2nd,50,50;void display(struct airline *a)/*打印每條航線的根本信息*/ printf(%8st%3st%st%4stt%3dt%10dn,a-ter_name,a-air_num,a-plane_num,a-date,a-tkt_amt,a-tkt_sur);void list()/*打印全部航線信息*/ struct airli
14、ne *a; int i=0; a=head; printf(終點(diǎn)站名t航班號t飛機(jī)號t飛行日期t乘員定額t余票量n);while(iMA*SIZE) display(a); /*調(diào)用dispiay函數(shù)來輸出*/ a+; i+; printf(nn);void search()/*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/ struct airline *a,*find(); char name10; int i=0; a=head; printf(請輸入終點(diǎn)站名:); scanf(%s,name); while(iter_name) break; a+; i+; if(i=MA*SIZE) pr
15、intf(對不起,該航線未找到!n); else printf(終點(diǎn)站名t航班號t飛機(jī)號t飛行日期t乘員定額t余票量n); display(a); struct airline *find()/*根據(jù)系統(tǒng)提出的航班號查詢并以指針形式返回*/ struct airline *a;/*在航線信息鏈表中進(jìn)展查詢*/ char number10; int i=0; a=head; printf(請輸入航班號:); scanf(%s,number); while(iair_num) return a; a+; i+; printf(對不起,該航線末找到!n); return NULL;void prtl
16、ink()/*打印訂票乘員域的客戶信息*/ linklist *p; struct airline *a; a=find(); p=a-order; if(p!=NULL) printf(客戶 訂票數(shù)額 艙位等級n); while(p) printf(%stt%dt%dn,p-name,p-ord_amt,p-grade); p=p-ne*t; else printf(該航線沒有客戶信息!n);linklist *insertlink(linklist *head,int amount,char name,int grade) /*增加訂票乘員域的客戶信息*/ linklist *p1,*ne
17、w1; 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-ne*t=NULL; if(head=NULL)/*假設(shè)原無訂票客戶信息*/ head=new1; new1-ne*t=NULL; else head=new1; new1-ne*t=p1; return head;linkqueue appendqueue
18、(linkqueue q,char name,int amount)/*增加排隊(duì)等候的客戶域*/ qptr new1; new1=(qptr)malloc(sizeof(qnode); strcpy(new1-name,name); new1-req_amt=amount; new1-ne*t=NULL; if(q.front=NULL)/*假設(shè)原排隊(duì)等候客戶域?yàn)榭?/ q.front=new1; else q.rear-ne*t=new1; q.rear=new1; return q;void order()/*辦理訂票業(yè)務(wù)*/ struct airline *a; int amount,g
19、rade; char name10; a=head; if(!(a=find() return;/*根據(jù)客戶提供的航班號進(jìn)展查詢,如為空,退出該模塊*/ printf(請輸入你訂票所需要的數(shù)量:); scanf(%d,&amount); if(amounta-tkt_amt)/*假設(shè)客戶訂票額超過余票量總額,退出*/ printf(n對不起,您輸入的票的數(shù)量已經(jīng)超過乘員定額!); return; if(amounttkt_sur)/*假設(shè)客戶訂票額末超過余票量,訂票成功并等記信息*/ int i; printf(請輸入您的訂票客戶:); scanf(%s,name); printf(請輸入%s
20、票的艙位等級:,name); scanf(%d,&grade); a-order=insertlink(a-order,amount,name,grade);/*在訂票乘員域中添加客戶信息*/ a-tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/ for(i=amount;i0;i-)/*依次輸出該訂票客戶的座位號*/ printf(%s的座位號是:%dn,name,AMOUNT-a-tkt_sur-i+1); printf(n祝您乘坐愉快!n); else /*假設(shè)滿員或余票額少于訂票額,詢問客戶是否需要進(jìn)展排隊(duì)等候*/ char r; printf(n已經(jīng)沒有更多
21、的票,您需要排隊(duì)等候嗎?(Y/N); r=getch();/用來讀取r字符,不顯示 printf(%c,r); if(r=Y|r=y) printf(n請輸入您的排隊(duì)訂票客戶:); scanf(%s,name); a-wait=appendqueue(a-wait,name,amount);/*在排隊(duì)等候乘員域中添加客戶信息*/ printf(n注冊成功!n); else printf(n歡送您下次再次訂購!n); void return_tkt()/*退票模塊*/ struct airline *a; qnode *t,*back,*f,*r; int grade; linklist *p1
22、,*p2,*head; char cusname10; if(!(a=find() return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)展搜索*/ head=a-order; p1=head; printf(請輸入你的退票客戶:); scanf(%s,cusname); while(p1!=NULL)/*根據(jù)客戶提供的到訂票客戶域進(jìn)展查詢*/ if(!strcmp(cusname,p1-name) break; p2=p1;p1=p1-ne*t; if(p1=NULL) printf(對不起,你沒有訂過票!n);return;/*假設(shè)未找到,退出本模塊*/ else/*假設(shè)信息查詢成功,刪除訂
23、票客戶域中的信息*/ if(p1=head) head=p1-ne*t; else p2-ne*t=p1-ne*t; a-tkt_sur+=p1-ord_amt; grade=p1-grade; printf(%s成功退票!n,p1-name); free(p1); a-order=head;/*重新將航線域指向訂票單鏈表的頭指針 */ f=(a-wait).front;/*f指向排隊(duì)等候隊(duì)列的頭結(jié)點(diǎn)*/ r=(a-wait).rear;/*r指向排隊(duì)等候隊(duì)列的尾結(jié)點(diǎn)*/ t=f;/*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)域*/ while(t) if(a-tkt_sur=a-wait.front-req
24、_amt)/*假設(shè)滿足條件者為頭結(jié)點(diǎn)*/ int i; a-wait.front=t-ne*t; printf(%s訂票成功!n,t-name); for(i=0;ireq_amt;i+)/*輸出座位號*/ printf(%s的座位號是:%dn,t-name,(a-tkt_sur)-i); a-tkt_sur-=t-req_amt; a-order=insertlink(a-order,t-req_amt,t-name,grade);/*插入到訂票客戶鏈表中*/ free(t); break; back=t;t=t-ne*t; if(a-tkt_sur)=(t-req_amt)&t!=NULL)/*假設(shè)滿足條件者不為頭結(jié)點(diǎn)*/ int i; back-ne*t=t-ne*t; printf(%s訂票成功!n,t-name); for(i=0;ireq_amt;i+)/*輸出座位號*/ printf(s seat number is:%dn,t-name,(a-tkt_sur)-i); a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版房地產(chǎn)營銷投標(biāo)文件招標(biāo)合同樣本3篇
- 2025版彩禮退還與婚姻解除補(bǔ)償協(xié)議書范本3篇
- 2025年度個(gè)人消費(fèi)借款合同范本全新修訂版4篇
- 2025年通遼從業(yè)資格證應(yīng)用能力考些啥
- 電梯安裝工程2025年度環(huán)保要求合同3篇
- 二零二五年度城市共享車牌租賃經(jīng)營許可合同4篇
- 二零二五版煤礦井巷工程地質(zhì)災(zāi)害防治與監(jiān)測承包合同范本4篇
- 2025年度門窗安裝施工與綠色施工管理合同4篇
- 二零二五年度企業(yè)財(cái)務(wù)顧問團(tuán)隊(duì)派遣合同3篇
- 二零二五年度內(nèi)資股東環(huán)保技術(shù)研發(fā)股權(quán)出讓合同
- 電纜擠塑操作手冊
- 浙江寧波鄞州區(qū)市級名校2025屆中考生物全真模擬試卷含解析
- 2024-2025學(xué)年廣東省深圳市南山區(qū)監(jiān)測數(shù)學(xué)三年級第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- IATF16949基礎(chǔ)知識培訓(xùn)教材
- 【MOOC】大學(xué)生創(chuàng)新創(chuàng)業(yè)知能訓(xùn)練與指導(dǎo)-西北農(nóng)林科技大學(xué) 中國大學(xué)慕課MOOC答案
- 勞務(wù)派遣公司員工考核方案
- 基礎(chǔ)生態(tài)學(xué)-7種內(nèi)種間關(guān)系
- 2024年光伏農(nóng)田出租合同范本
- 《阻燃材料與技術(shù)》課件 第3講 阻燃基本理論
- 2024-2030年中國黃鱔市市場供需現(xiàn)狀與營銷渠道分析報(bào)告
- 新人教版九年級化學(xué)第三單元復(fù)習(xí)課件
評論
0/150
提交評論