數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.濱江學(xué)院數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)實(shí)習(xí)報(bào)告題目_ 飛機(jī)訂票系統(tǒng) _專業(yè)_ 計(jì)算機(jī)科學(xué)與技術(shù) _年級(jí)班級(jí) _02計(jì)科 2 班_學(xué)號(hào)_20122308049_學(xué)生姓名 _ 黎曉東 _學(xué)期2014-2015(1)任課教師 _ 李燕 _.一、設(shè)計(jì)任務(wù)與要求1.1總體目標(biāo)與任務(wù)要求制作一個(gè)訂票系統(tǒng),通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:1)錄入:可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)。2 )查詢:可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況。3 )訂票:可以訂票,如果該航班已經(jīng)無票,可以

2、提供相關(guān)可選擇航班(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)。4 )退票:可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。5 )修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件。根據(jù)以上功能說明,設(shè)計(jì)航班信息,訂票信息的存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)程序完成功能。1.2題目選擇與目的意義選擇這個(gè)題目的原因是,訂票系統(tǒng)在現(xiàn)實(shí)生活中應(yīng)用很廣泛,通過這個(gè)系統(tǒng)可以使訂票、退票等變得簡便。與傳統(tǒng)的人工用紙、筆來記錄辦理訂票、退票等相比,使用這個(gè)系統(tǒng)也會(huì)增加工作效率。這個(gè)題目做出來的系統(tǒng)還是比較實(shí)用的,所以我選擇了訂票系統(tǒng)這個(gè)題目。完成此系統(tǒng),需要綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程中學(xué)到

3、的幾種典型數(shù)據(jù)結(jié)構(gòu),以及程序設(shè)計(jì)語言( C語言),自行實(shí)現(xiàn)一個(gè)較為完整的應(yīng)用系統(tǒng)的設(shè)計(jì)與開發(fā)。通過課程設(shè)計(jì),自己.通過系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、編程調(diào)試,寫實(shí)驗(yàn)報(bào)告等環(huán)節(jié),進(jìn)一步掌握應(yīng)用系統(tǒng)設(shè)計(jì)的方法和步驟,靈活運(yùn)用并深刻理解典型數(shù)據(jù)結(jié)構(gòu)在軟件開發(fā)中的應(yīng)用。學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高分析和解決問題的能力,增加綜合能力。1.3所選題目的主要工作這個(gè)題目的主要工作是使訂票系統(tǒng)可以錄入航班情況,查詢某個(gè)航線的情況、辦理訂票、辦理退票、修改航班信息、查詢訂票信息等。二、需求分析2.1用戶需求分析用戶使用此程序所要完成的工作主要為:查詢所有航線信息、查看已訂票客戶信息、查詢航線、辦理訂票業(yè)務(wù)、辦理退票業(yè)

4、務(wù)。通過此系統(tǒng)可以方便的進(jìn)行上述工作。每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、余票量。已訂票的客戶名單信息包括姓名、訂票量、艙位等級(jí)( 1, 2 或 3)。等候替補(bǔ)的客戶名單信息包括姓名、所需票量。查詢航線功能可以根據(jù)旅客提出的終點(diǎn)站名輸出航班號(hào)、飛行時(shí)票價(jià)、乘員定額、余票量。訂票業(yè)務(wù)功能根據(jù)客戶提出的要求(航班號(hào)、訂票數(shù)額)查詢?cè)摵桨嗥鳖~情況,若尚有余票,則為客戶辦理訂票手續(xù),輸出座位號(hào);若已滿員或余票額少于定票額,則需重新詢問客戶要求。若需要,可登記排隊(duì)候補(bǔ)購票。退票業(yè)務(wù)功能根據(jù)客戶提供的情況(航班號(hào)、姓名)為客戶辦理退票手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首

5、先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊(duì)候補(bǔ)的客戶。.2.2功能需求分析功能需求分析模塊圖如圖2.2.1功能模塊圖:圖 2.2.1功能模塊圖2.3系統(tǒng)需求分析開發(fā)環(huán)境: PC機(jī)Windows XP 系統(tǒng)使用軟件:編寫實(shí)驗(yàn)報(bào)告:Microsoft Office Word畫圖:億圖制 作程 序: Microsoft Visual C+6.0三、概要設(shè)計(jì)3.1各模塊的算法設(shè)計(jì)說明1瀏覽航線信息功能,調(diào)用display函數(shù)進(jìn)行輸出。流程圖如圖3.1.1瀏覽航線信息流程圖:.圖 3.1.1瀏覽航線信息流程圖:其中 display 函數(shù)的流程圖如圖 3.1.

6、2 display 函數(shù)流程圖:圖 3.1.2 display函數(shù)流程圖.2瀏覽已訂票客戶信息功能,按順序輸出客戶信息鏈表中的信息。流程圖如圖3.1.3瀏覽已訂票客戶信息功能流程圖:圖 3.1.3瀏覽已訂票客戶信息功能流程圖3查詢航線功能,根據(jù)客戶提出的終點(diǎn)站名輸出航線信息。流程圖如圖 3.1.4 查詢航線流程圖:.圖 3.1.4查詢航線流程圖4辦理訂票業(yè)務(wù)功能,根據(jù)客戶提出的航線信息等進(jìn)行訂票。流程圖如圖 3.1.5 辦理訂票業(yè)務(wù)功能流程圖:.圖 3.1.5辦理訂票業(yè)務(wù)功能流程圖5辦理退票業(yè)務(wù)功能,根據(jù)客戶提出的航線信息等進(jìn)行退票。流程圖如圖 3.1.6 辦理退票業(yè)務(wù)功能流程圖:.圖 3.1

7、.6辦理退票業(yè)務(wù)功能流程圖6主函數(shù)流程圖如圖3.1.7主函數(shù)流程圖:.圖 3.1.7主函數(shù)流程圖3.2存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說明typedef struct wat_ros/*單鏈隊(duì)列存儲(chǔ)等候替補(bǔ)的客戶信息 */char name10;/*姓名 */.int req_amt;/*訂票量 */struct wat_ros *next;qnode,*qptr;typedef struct pqueue/*等候替補(bǔ)的客戶名單*/qptr front;/*等候替補(bǔ)客戶名單域的隊(duì)頭指針 */qptr rear;/*等候替補(bǔ)客戶名單域的隊(duì)尾指針 */linkqueue;上述單鏈隊(duì)列用來存儲(chǔ)排隊(duì)等候的客戶名單,這樣可

8、以通過隊(duì)先進(jìn)先出的特點(diǎn)來進(jìn)行操作。先排隊(duì)的客戶可以先訂票成功。typedef struct ord_ros/*乘員名單 */char name10;/*客戶姓名 */int ord_amt;/*訂票量 */int grade;/*艙位等級(jí) */struct ord_ros *next;linklist;上述單鏈表用來存儲(chǔ)乘員的信息,包括姓名、訂票量、艙位等級(jí)。struct airline/*航線信息 */char ter_name10;/*抵達(dá)城市 */.char air_num10; /*航班號(hào) */char time10;/*飛機(jī)時(shí)間 */char pri7;/*票價(jià) */int tkt_

9、amt;/*乘員定額 */int tkt_sur;/*余票量 */linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針 */linkqueue wait;/*等候替補(bǔ)的客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/lineinfo;這個(gè)結(jié)構(gòu)體存儲(chǔ)了航線信息,包括抵達(dá)城市、航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、余票量等。#define MAXSIZE 5/*定義航線數(shù)量,可修改*/struct airline airMAXSIZE=/*初始化航線信息*/beijing,1,1200,860,30,30,shanghai,2,1000,770,20,20,london,3,13

10、30,960,10,10,harbin,4,1700,760,50,50,dalian,5,1400,550,40,40;通過修改全局變量MAXSIZE的數(shù)值即可更改航線數(shù)。在struct airline airMAXSIZE中可以修改、增加、刪除航.線信息。航線信息內(nèi)容依次為抵達(dá)城市、航班號(hào)、飛行時(shí)間、票價(jià)、乘員定額、余票量(飛行時(shí)間1200 即 12:00)。四、詳細(xì)設(shè)計(jì)1. 查看航線信息編寫 void list()函數(shù)來查看全部航線信息。其中調(diào)用了 void display(struct airline *info)函數(shù),該函數(shù)的功能是打印每條航線的基本信息。這樣即可按順序打印出stru

11、ct airline鏈表中存儲(chǔ)的全部航線信息。2. 查看已訂票客戶信息編寫 void prtlink()函數(shù)來查看已訂票客戶信息。這個(gè)函數(shù)中需要輸入要查詢的航線,通過 find() 函數(shù)來尋找這個(gè)航線然后輸出該航線乘員域的乘員信息。3. 查詢航線編寫 void search() 函數(shù)來實(shí)現(xiàn)查詢航線的功能。用戶輸入抵達(dá)城市名,該函數(shù)會(huì)在航線信息鏈表中進(jìn)行查詢。如果有該城市,則會(huì)輸出此航線的信息。4. . 辦理訂票業(yè)務(wù)編寫 void order() 函數(shù)來實(shí)現(xiàn)訂票功能。首先提示用戶輸入航班號(hào),然后調(diào)用 find() 函數(shù)來查找此航班,如果該航班存在,則會(huì)提示用戶輸入信息并調(diào)用linklist*in

12、sertlink(linklist *head,int amount,charname,int grade) 在訂票乘員名單域中添加客戶信息。如果余票不足,則會(huì)提示用戶進(jìn)行排隊(duì),如果排隊(duì),則會(huì)調(diào)用提示用戶輸入信息并調(diào)用 linkqueueappendqueue(linkqueue q,char name,int amount)在排隊(duì)等候乘員名單域中添加客戶信息。5. 辦理退票業(yè)務(wù)編寫 void return_tkt()函數(shù)來實(shí)現(xiàn)退票功能。首先提示用戶輸入航班號(hào),然后調(diào)用find()函數(shù)來查找此航班,.如果該航班存在,則會(huì)提示用戶輸入信息,信息正確則會(huì)提示退票成功。此時(shí)將乘員信息中的該乘員信息刪

13、除,然后檢查替補(bǔ)乘員鏈表中的信息,如果其訂票量可以得到滿足,則會(huì)將其插入到訂票客戶名單鏈表中,提示他訂票成功。6. 退出系統(tǒng)主函數(shù)中無限循環(huán)輸出菜單 for(;) ,用戶在菜單頁面下輸入 6 回車即 exit(0),即可退出系統(tǒng)。五編碼調(diào)試運(yùn)行程序主界面如圖1圖 1從文件中導(dǎo)入航班的信息 : 輸入的數(shù)據(jù)能基本能正確導(dǎo)入結(jié)構(gòu)體中,并在屏幕中顯示出來,但在文件中再加入一行航班信息時(shí)屏幕上不會(huì)顯示,但在查詢時(shí)能輸出該航線的信息,表明文件正確導(dǎo)入結(jié)構(gòu)體中,但沒有輸出到屏幕上,將 for(j = 0;ji-1;j+) 中的 i-1 改成 i ,并且文件中輸入數(shù)據(jù)時(shí)不要輸入多余的空格就可以正確顯示出來;如

14、圖2.圖 2查詢終點(diǎn)站為武漢的航班信息如圖3圖 3查詢終點(diǎn)站為廣州的航班信息如圖4圖 4.訂票模塊:訂票時(shí)各航線數(shù)據(jù)除第一行外都能夠正確顯示,并提示訂票。經(jīng)過調(diào)試發(fā)現(xiàn)是從文件導(dǎo)入數(shù)據(jù)時(shí)第一行數(shù)據(jù)沒有正確初始化;改進(jìn)之后就可以全部顯示; 此中第一條航班信息北京即為邊界數(shù)據(jù)。選擇訂票有航線:北京,姓名:王,訂票數(shù): 7,顯示訂票成功,如圖 5圖 5在此基礎(chǔ)上選擇訂票,姓名:張;訂票數(shù): 4,顯示余票不足,選擇預(yù)約如圖 6圖 6退票模塊:進(jìn)入退票功能時(shí),輸入航班后提示輸入訂票客戶姓名但不管輸入任何訂票客戶的信息都提示沒有該客戶的信息,則說明退票函數(shù)的功能沒有正確執(zhí)行。錯(cuò)誤的原因:刪除訂票客戶節(jié)點(diǎn)的函

15、數(shù) lianbiaoDelete70219 的參數(shù)沒有傳遞對(duì),剛開始傳遞的是該航線單鏈表的頭指針,根據(jù)函數(shù)功能應(yīng).該傳遞的是這項(xiàng)刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的指針,改正之后能夠正確執(zhí)行函數(shù)功能;在以上客戶訂票基礎(chǔ)上執(zhí)行退票,航線:北京,姓名:王。退票成功并且是首位預(yù)約客戶訂票成功,如圖7圖 7六設(shè)計(jì)體會(huì)1. 由于是首次進(jìn)行稍微復(fù)雜的程序設(shè)計(jì),所以在需求分析階段需花費(fèi)一定的時(shí)間以便深刻的了解該階段到底要實(shí)現(xiàn)什么功能,才能為后幾個(gè)階段做好準(zhǔn)備;比如需求分析時(shí)寫入了較多的專業(yè)術(shù)語既是一種錯(cuò)誤的做法,此階段需要的是可供非專業(yè)人員讀懂的設(shè)計(jì)要求,所以過多的專業(yè)術(shù)語將導(dǎo)致需求分析失去了其作用;2. 概要設(shè)計(jì)時(shí)及要

16、求大腦中有一個(gè)大概的輪廓知道如何設(shè)計(jì)各種數(shù)據(jù)類型并進(jìn)行存儲(chǔ)以及個(gè)數(shù)據(jù)類型之間的關(guān)系,需要知道主功能模塊與個(gè)數(shù)據(jù)類型基本操作之間的調(diào)用關(guān)系;3. 詳細(xì)設(shè)計(jì)時(shí)實(shí)現(xiàn)實(shí)現(xiàn)個(gè)函數(shù)功能做主要的階段,由于以往不良的編程習(xí)慣導(dǎo)致剛開始設(shè)計(jì)程序時(shí)是直接上手敲代碼,致使函數(shù)功能的實(shí)現(xiàn)中出現(xiàn)了大量的錯(cuò)誤,后來在張有華老師的要求下重頭開始先用漢字將算法描述一遍,然后再有類 c 語言寫出算法,這樣不僅讓函數(shù)功能的實(shí)現(xiàn)更加清晰,而且使得程序在編譯時(shí)錯(cuò)誤大大減少;.4. 編碼調(diào)試階段由于函數(shù)中任然存在各種問題,如指針、引用的使用,函數(shù)參數(shù)的傳遞,實(shí)參、虛參之間的關(guān)系,在老師和同學(xué)的幫助下終于將問題一一擊破;5. 測(cè)試結(jié)果及所采用的測(cè)試相關(guān)數(shù)據(jù)已經(jīng)在編碼調(diào)試階段給出了一些分析,錄入航班信息的功能時(shí)間復(fù)雜度為 O(n) 、空間復(fù)雜度為 O(l) ,查詢功能的時(shí)間復(fù)雜度為 O(n) ,空間復(fù)雜度O(n) ,訂票功能的時(shí)間復(fù)雜度為O(n), 時(shí)間復(fù)雜度 O(l),退票功能的時(shí)間復(fù)雜度為O(n*n) ;6. 算法改進(jìn),此程序中預(yù)約客戶使用隊(duì)列的存儲(chǔ)存在一個(gè)缺陷。即隊(duì)列是采用的尾進(jìn)頭出的存儲(chǔ)結(jié)構(gòu),也就是說大部分的預(yù)約客戶(隊(duì)頭元素除外)不能夠?qū)崿F(xiàn)取消預(yù)約的情況,顯然在實(shí)際情況中不大合情理。改進(jìn)思路可以采用鏈表的形式存儲(chǔ),但需要對(duì)鏈表進(jìn)行一定的限制,如必須在鏈表尾部插入新的預(yù)約客戶信息。另一個(gè)需要改進(jìn)的地方是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論