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

下載本文檔

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

文檔簡介

1、宜春學(xué)院數(shù)學(xué)與計算機(jī)科學(xué)學(xué)院課程設(shè)計報告書課程名稱:數(shù)據(jù)結(jié)構(gòu)題 目:航空客運(yùn)訂票系統(tǒng)學(xué)生姓名:學(xué) 號:專業(yè)年級:信息與計算科學(xué)2011級指導(dǎo)老師:開題時間:2013-6-24 結(jié)束時間:2013-7-1目錄一、設(shè)計題目3二、需求分析3概要設(shè)計31)抽象數(shù)據(jù)類型定義描述32)功能模塊設(shè)計(如主程序模塊設(shè)計)錯 誤!未定義書簽。3)模塊層次調(diào)用關(guān)系圖6五、調(diào)試分析9六、 用戶使用說明及測試結(jié)果11K錄入航班信息(應(yīng)該是航空公司錄入的)112、實現(xiàn)查詢功能:113、訂票(余票充足)124、訂票(余票不足)125、余票不足排隊136、退票137、退出系統(tǒng)14一、設(shè)計題目航空客運(yùn)訂票的業(yè)務(wù)活動包括;查詢

2、航線、客票預(yù)訂和辦理退票等。試設(shè)計一個航空客運(yùn)訂票 系統(tǒng),以使上述業(yè)務(wù)可以借助計算機(jī)來完成?!净疽蟆浚?)每條航線所涉及的信息有:終點站名、航班名、飛機(jī)號、飛行周日(星期幾)、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級1, 2或3)以及等候替補(bǔ)的客戶名單(包括姓名、所需票量);(2)作為示意系統(tǒng),全部數(shù)據(jù)可以只放在內(nèi)存中;(3)系統(tǒng)能實現(xiàn)的操作和功能如下: 查詢航線:根據(jù)旅客提出的終點站名輸出下列信息:航班號、飛機(jī)號、星期幾飛行,最近一天航班的日期和余票額; 承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號、訂票數(shù)額)查詢該航班票額情況,若 尚有余票,則為客戶辦理訂票手續(xù),輸出

3、座位號;若已滿員或余票額少于訂票額,則 需重新詢問客戶要求。若需要,可登記排隊候補(bǔ); 承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期、航班),為客戶辦理退票手續(xù),然后查詢該航班是否有人排隊候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足客戶的要求,則為客戶辦理訂票手續(xù),否則依次詢問其他排隊候補(bǔ)的客戶。二、需求分析1)運(yùn)行環(huán)境(軟、硬件環(huán)境)Winxp 32 位 visual C+6. 02)輸入的形式和輸入值的范圍由航空公司輸入航線情況并以單鏈表的形式存儲在內(nèi)存里面3)輸出的形式描述通過客戶的輸入輸出相應(yīng)的內(nèi)容4)功能描述用戶通過本系統(tǒng)實現(xiàn)該航空公司的查詢、訂票(包括候補(bǔ))、和退票功能5)測試數(shù)據(jù)終點站

4、航班飛機(jī)號飛行日期成員定額余票量zhengzhouIphone4s1Sunday33beijingNokia2Tuesday22tianjinASUS3Friday44三、概要設(shè)計1)抽象數(shù)據(jù)類型定義描述(對各類的成員及成員函數(shù)進(jìn)行抽象描述,參見書或ppt及實驗)一條航線包括了終點站、航班名、飛機(jī)號、飛行周日、成員定額、余票量、訂票人員、候 補(bǔ)人員等信息,我們可以將航線看成一類,定義為一個類,而訂票人員通用的屬性是:姓名、訂票張數(shù)和艙位等級,候補(bǔ)人員通用屬性是姓名和訂票張數(shù),可以將訂票人員和候補(bǔ)人員定 義為結(jié)構(gòu)休,航線定義為一個類,類包括了兩個結(jié)構(gòu)體。具體定義如下:class transpor

5、tNode/M 線類節(jié)點friend class transport;private:char finish10;/FI 的地char flightname10/ 航班名int flightnum;/M班號int day;飛行日期int limitednum;/乘員限額int remainber;/余票struct booknodepublic:char name10;/ 乘客姓名int (ickcmum; 票數(shù)int rate;/艙位等級b40;struct sparenodepublic:char namc10;乘客姓名int ticketnum;/票數(shù)int m;記錄排隊等候的顧客的數(shù)雖

6、:s40;transportNodc *ncxt;2) 功能模塊設(shè)計(如主程序模塊設(shè)計)主程序中錄入航線的信息,然后進(jìn)入主菜單,再實現(xiàn)其他的功能,類transport中包括 了除去主菜單以外的所有的功能函數(shù)class transportpublic:(ransport();/無參構(gòu)造函數(shù)構(gòu)造頭節(jié)點void recort();/記錄航班信息void chest();實現(xiàn)根據(jù)輸入的FI的地查詢的功能void book();/實現(xiàn)旅客的訂票功能void bouncc();實現(xiàn)退票功能private:transportNode *head;int menu();進(jìn)入4菜單3)模塊層次調(diào)用關(guān)系圖四、詳細(xì)

7、設(shè)計實現(xiàn)概要設(shè)計中定義的所有的類的定義及類中成員函數(shù),并對主要的模塊寫出偽碼算 法。類和它的私有成員以及成員函數(shù)class tiansportNode/航線類節(jié)點fiiend class transpon;private:char finish 10;/目的地char flightiiame 10;/航班名mt flightnum;/航班號iiit day;/ 飛行口期mt linutednum;/ 乘 員限額mt wmambei;/余票stmct bookiiodepublic:char name10;/ 乘客姓名int ticketnumy/票數(shù)int rate;/艙位等級b40;stmc

8、t sparenodepublic:char name10;/ 乘客姓名int ticketnumy/票數(shù)mt m;/記錄排隊等候的顧客的數(shù)量s40;tianspoitNode *next;舉出訂票的成員函數(shù)實現(xiàn):void tiansport:book()訂票系統(tǒng)transpoit y;tiansportNode p;static mt i=0;靜態(tài)變量存儲上次訂票信息static mtj=0;/靜態(tài)變量存儲上次排隊信息static int k=l;p.sj.m=0;mt m=0;計數(shù)器,據(jù)此判斷是否有符合目的地的票char c;transportNode *pre;pre=head->

9、next;char 10;cout«H* 歡迎進(jìn)入訂票系統(tǒng) *"«endl;cout«"請輸入您的姓名:”;cin»;cou« 請輸入您的票數(shù):”; cin»p.bi. ticketnum;cout«請輸入您的艙位等級:”;cin»p.bi.rate;cou« 請輸入您要訂的航班號:”;cin»f;while (pre)if(sticmp(£pie->flightname)=0&&pre->reniamber>=p

10、.bi.ticketnum)cout«H恭喜!訂票成功!li«endl«,®位號是:”;fbr(iiit z=O;z<p.bi.ticketnum;z+)cout«k+«” H;cout«endl:pre->remamber=pre->remamber-p. bi .ticketnum;i+;m+;cout«"回主菜單請按0,按任意鍵退出!”;ciii»c;if (c=O)retuin;else exit(0);if (pre->remainber<p. b i .

11、ticketnum)cout«MXj不起!余票不足!li«endl«M您要加入排序嗎? (Y/N),; ciii»c;if(c=,Y,)cout«H請輸入您的名字二ciii»:cout«*請輸入您需要的票數(shù):“;ciii»p .sj .ticketnum;cout«*'排隊成功!如果有人退票,我們會盡快通知您!*'«endl;J卄;psjm卄;coutvv”回主菜單請按0,按任意鍵退出!”;ciii»c;if(c=,O,)return;else exi

12、t(O);elsepre=pre->next;if(pre=NULL)coutvu抱歉!沒有對應(yīng)的航班號o(-)o ”;cout«"回主菜單請按0,按任意鍵退出!“;ciii»c;if(c=O)retuin;else exit(O);五、調(diào)試分析包括調(diào)試過程中遇到的問題及解決的方法、算法的時間空間復(fù)雜性分析、經(jīng)驗體會。1、調(diào)試過程中出現(xiàn)了很多錯誤,剛開始的時候,我將訂票人員看作一個類、將候補(bǔ)人 員看作一個類,將航線看作一個大類。而我將兩個小類放進(jìn)了大類中,想讓小類當(dāng)作大類的 成員。class transportNode/航線類節(jié)點這是一個類fiiend cl

13、ass transpon;private:char finish 10;/目的地char flightiiame 10;航班名mt flightnum;/航班兮iiit day;/飛行口期mt linutednum;/ 乘 員限額iiit wmambeT;/余票class booknode這里還有一個public:char name10;/乘客姓名mt ticketnumy/票數(shù)int rate;/艙位等級;class sparenode這里也有一個public:char name10;/乘客姓名int ticketnumy/票數(shù)mt m;/記錄排隊等候的顧客的數(shù)量;transportNode

14、 *next;但是總是不能成功,非常郁悶。于是我問了問老師,老師告訴我類是不能嵌套的!當(dāng)時我就 暈了,原來不能嵌套啊,于是我將里面的小類改成了結(jié)構(gòu)體,這樣,很多問題就迎刃而解了 class tiansportNode/航線類節(jié)點fiiend class transpon;private:char finish 10;/目的地char flightiiame 10;航班名mt flightnum;/航班兮mt day"飛疔口期mt linutednum;/ 乘員限額iiit wmamber;/余票struct booknodepublic:char name 10;乘客姓名int ti

15、cketnum;/ 票數(shù)int rate;/艙位等級b40;struct sparenodepublic:char name 10;乘客姓名int ticketnum;/ 票數(shù)mt m#記錄排隊等候的顧客的數(shù)量s40;transpoilNode *next;2、在編程的時候很容易忽略一些邊界條件,導(dǎo)致漏洞很多,比如設(shè)計主菜單的時候有1、2、3、4等選項,但是如果用戶選擇了其他的就會出現(xiàn)請輸入您的選擇:請輸入您的選擇:過亜番示出通訂退退劃按按擬目請請請袖歡迎進(jìn)入主菜單通訂退退詢杳一也2 3 4 初按按拠 目請請請 過1:會袖歡迎進(jìn)入主菜單過亜番示出通訂退退劃按按按目請請請I c< *c:C

16、+PROJECThaoleDebughaole.exe*H X*退出請按4*請輸入您的選擇:歡迎進(jìn)入主菜單請輸入您的選擇:歡迎進(jìn)入主菜單.lilt C; cout«H陷入死循環(huán),我將主菜單的代碼改成了: mt menu()* 歡迎進(jìn)入主菜單 *H«endl«endl;cout«H*通過目的地查詢請按1*n«endl;cout«H*訂票請按2*H«endl;cout«H*退票請按3*H«endl;cout«H*退出請按其他鍵*n«endl;cout«H-«endl;c

17、out«HW輸入您的選擇:”;ciii»c;return c;這樣就不會再陷入死循環(huán)了!時間復(fù)雜度的話,由于程序源代碼中沒有多重循環(huán),所以時間復(fù)雜度都很小??傊?,調(diào)試過程中 還是遇到了不少問題,不過都在同學(xué)和自己的努力中解決了。六、用戶使用說明及測試結(jié)果詳細(xì)列出每一步的操作說明。1、錄入航班信息(應(yīng)該是航空公司錄入的)*C:C+PROJECThaoleDebughaole.exe*第丄個航班的信息、W錄入航班信息第2個航班的信息、點:1:1期額 線&包萬日限 線卷仃客 維飛飛乘 1A1A1A1AJA 請請請請請R> 期 星3< :第3個航班的信息、點:N

18、:2期額 線&包萬日限 線卷仃客 維飛飛乘 1A1A1A1AJA 請請請請請單 菜 主A-井_ 點:A:3期額歡 線&包萬日限* 線卷仃客- 維飛飛乘- JAJAJAJAJA 請請請請請*R>期星過亜番示岀通訂退退劃按按按目請請請2、實現(xiàn)查詢功能:是客戶的查詢C< *C:C+PROJECThaoleDebughaole.exe* X<|:4迎 期額歎 日限 行客- 飛乘- 入入請請劃按按按目請請請過亜番示岀通訂退退n.1j0出退込下:A:3間 :t如名號時:4犍 地息ISS 的信維飛余任 :1目班的查聽請 單 菜 主 回劃按按按目請請請過亜番示岀通訂退退請輸入

19、您的選擇:3、訂票(余示充足)C< *C:C+PROJECThaoleDebughaole.exe*.1 S j U n : S0出退込下:A:3間 :t如名號時:4犍 地息ISS 的信維飛余任 :1目班的查聽請 單 菜 主 回劃按按按目請請請過亜番示岀通訂退退請輸入您的選擇:2.、杯-歡迎進(jìn)入訂票系統(tǒng)請輸入您的姓名:fanxiaoning 請輸入您斷票數(shù):2 請騎入您的艙位等級汽 遨金隔勢航磁號:AS% 回主葉單請按d按任意鍵退出?.4、訂票(余票不足)請輸入您的選擇:2.、FF歡迎進(jìn)入訂票系統(tǒng)*請輸入您的姓名:fanxiaoning 請輸入您斷票數(shù):2 請騎入您的艙位等級汽 遨金隔勢

20、航磁號:AS%回主葉單請按0,按任意鍵退出! 0袖歡迎進(jìn)入主菜單請輸入您的選擇:2的的的過亜番示出通訂退退劃按按按目請請請姓票艙霸序 您您您您詩入 入入入入起加 請請請胄您g S n A i : on:2號a.1X 3隼一兒? <:3f th ? 名數(shù)位的祛嗎才衽>N/¥歡迎進(jìn)人訂示系 統(tǒng)*5、余票不足排隊C< *C:C+PROJECThaoleDebughaole.exe*門會盡快通知您? 宀歡迎進(jìn)入主菜單過亜番示出通訂退退劃按按按目請請請請輸人您的選慶:3、歡迎逬人退票糸統(tǒng)?請輸入您要退票的目的地:t ianjin 請騙入您的飛食日期:4退禦成功,希望我們的服務(wù)

21、能讓您滿意,期待下次為您服務(wù)? 回圭菜單請按d按任意褪退出? 0“*歡迎進(jìn)入主菜單*過亜番示出通訂退退劃按按按目請請請請輸入您的選擇二6、退票咳迎逬入主菜單劃按按按目請請請過亜番示出通訂退退請輸人您的選慶:3、歡迎逬人退票糸統(tǒng)?請輸入您要退票的目的地:t ianjin 請騙入您的飛食日期:4退禦成功,希望我們的服務(wù)能讓您滿意,期待下次為您服務(wù)? 回圭菜單請按d按任意褪退出? 0“*歡迎進(jìn)入主菜單*過亜番示出通訂退退劃按按按目請請請請輸八您的選扌手謂輸入要查詢的目的地:dengfeng 攝鬆復(fù)畝對應(yīng)的航班?返回主粟單請按d按其他鍵退出:7、退出系統(tǒng)C< *C:C+PROJECThaoleD

22、ebughaole.exe*邈器滿意'期待下次為您朋務(wù)*歡迎進(jìn)入主菜單*過亜番示出通訂退退劃按按按目請請請請觸您的選扌奔1謂輸入要查詢的目的地:dengfeng箍菽神率對應(yīng)的航班?返回主菓單請按0,按其他犍退岀:0歡迎進(jìn)入主菜單.過亜番示出通訂退退劃按按按目請請請請物入您的選擇:4.謝謝光臨"八一八"E拜拜Press any key to continue附錄:程序設(shè)計源代碼#iiiclude <iostieam.h>#iiiclude <strmg.h>include <STDLLB.H>class transport;mt m

23、enu();class tiansportNode/航線類節(jié)點fiiend class transport; private:char finish 10;/目的地 chai flightiiame 10;航班名 mt flightnum;/航班兮 iiit day;/飛行口期 mt linutednum;/ 乘 員限額 mt 代 mambei;/余票 struct bookiiodepublic:char name10;/乘客姓名 mt ticketnumy/票數(shù) int rate;/艙位等級 b40;stmct sparenodepublic:char name10;/乘客姓名int ti

24、cketnumy/票數(shù)mt 記錄排隊等候的顧客的數(shù)量s40;tianspoitNode *next;;class transport public:tnmsport。;/無參構(gòu)造函數(shù)構(gòu)造頭節(jié)點void recort();/i己錄航班信息void chestQ;/實現(xiàn)根據(jù)輸入的目的地查詢的功能void book();/實現(xiàn)旅客的訂票功能void bounceQ;/實現(xiàn)退票功能 private:tianspoilNode *head;;tiaiispoit: transport()head=new tianspoitNode; head->next=NULL;void tiansport:c

25、hestQ/實現(xiàn)查詢功能chaz10;/輸入的地址mt m=0;計數(shù)器,判斷是否有符合條件的航班char q;cout«»請輸入要査詢的目的地:”;cin»a;transportNode *pie;pre=head->next;while (pre)if(sticmp(a,pie->finish)=O)m+;cout«H恭喜!查到了,航班信息如F:"«endl; cout«H航班名:,«pre->flightname«endl;cout«H航班號:H«pre->

26、flightnum«endl;cout«H飛行時間:,«pre->day«endl;cout«H余票:H«pre->lmiitednum«endl;pre=pie->next;if (!m)cout«Ifffi歉!沒有對應(yīng)的航班! H«endl;cout«"返回主菜單請按0,按其他鍵退出:“<<endl; ciii»q;if (q='OJretuin;else exit(0);elsecout«"回主菜單請按0,按任意

27、鍵退出!”;ciii»q;if(q=O)retuin;void tiansport: :book()/訂票系統(tǒng)transpoil y;transportNode p;static mt i=0;靜態(tài)變量存儲上次訂票信息static mtj=0;/靜態(tài)變量存儲上次排隊信息static int k=l;p.sj.m=0;mt m=0;計數(shù)器,據(jù)此判斷是否有符合目的地的票char c;transportNode *pie;pre=head->next;char 10;cout«H* 歡迎進(jìn)入訂票系統(tǒng) *M«endl;cout«"請輸入您的姓名:

28、“;cin»;cou« 請輸入您的票數(shù):“;cin»p.bi.ticketnum;cout«H請輸入您的艙位等級:“;cin»p.bi.rate;cou« 請輸入您要訂的航班號:”;cin»f;while (pie)if(sticmp(fpre->flightname)=0&&pre->reniamber>=p.bi.ticketnum) cout«H恭喜!訂票成功rvvendiy 座位號是:f,;fbr(iiit z=0;z<p.b i. ticketnu

29、m;z+)cout«k+<<” H;cout«endl:pre->remamber=pre->remamber-p.bi.ticketnum:i+;m+;cout«"回主菜單請按0,按任意鍵退出!”;ciii»c;if (c='0l)return;else exit(0);if (pre->remainber<p. b i .ticketnum)cout«HI不起!余票不足!H«endl«H您要加入排序嗎? (Y/N),; ciii»c;if(c=,Y,)cou

30、tw請輸入您的名字小; ciii»;cout«'*請輸入您需要的票數(shù):”;ciii»p.sj .ticketnum;cout«*'排隊成功!如果有人退票,我們會盡快通知您!"«endl;J卄; psjm卄;cout«*'回主菜單請按0,按任意鍵退出!”; ciii»c;if(c=,0,)return;else exit(0);elsepre=pre->next;iif(pre=NULL)cout«"抱歉!沒有對應(yīng)的航班號o(-)o ”;cout&#

31、171;"回主菜單請按0,按任意鍵退出!”; ciii»c;if(c=O)retuin;else exit(O);void tiansport:bounceQ/i票實現(xiàn)函數(shù)transport a;tiansportNode b;char c;mt i=0;iiit x;cout«“歡迎進(jìn)入退票系統(tǒng)! “;cou« 請輸入您要退票的目的地:”;cou« 請輸入您的飛行日期:”;cin»b.dav:J zcoutvv”請輸入您的退票張數(shù):”;ciii»x;while (x>=b.si.ticketnum&&i<b.si.m)cout«f退票數(shù)滿足候補(bǔ)客戶需求蔦 x-=b.si.ticketnum; i+;

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論