停車場(chǎng)管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課設(shè)報(bào)告_第1頁(yè)
停車場(chǎng)管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課設(shè)報(bào)告_第2頁(yè)
停車場(chǎng)管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課設(shè)報(bào)告_第3頁(yè)
停車場(chǎng)管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課設(shè)報(bào)告_第4頁(yè)
停車場(chǎng)管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課設(shè)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、word專業(yè)資料數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)停車場(chǎng)管理系統(tǒng)目錄TOC o 1-5 h z HYPERLINK l bookmark6 o Current Document 一、課設(shè)目的2 HYPERLINK l bookmark8 o Current Document 二、問題描述2 HYPERLINK l bookmark10 o Current Document 三、基本要求2 HYPERLINK l bookmark12 o Current Document 四、詳細(xì)設(shè)計(jì)2(1)原理分析2(2)功能模塊3(3)用戶手冊(cè)5(4)流程圖6(5)測(cè)試用例7(6)測(cè)試目的7(7)測(cè)試要求7 HYPERLIN

2、K l bookmark16 o Current Document 五、程序源碼7六、測(cè)試結(jié)果13 HYPERLINK l bookmark18 o Current Document 七、課設(shè)總結(jié)14 HYPERLINK l bookmark20 o Current Document 八、參考文獻(xiàn)15一、課設(shè)目的(1)了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;(2)初步掌握軟件開發(fā)過程中的問題分析,系統(tǒng)設(shè)計(jì),程序編碼,測(cè)試等基本方法和技能;(3)提高綜合應(yīng)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;(4)訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)和一般規(guī)進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者

3、所應(yīng)具有的科學(xué)的工作方法和作風(fēng)。二、問題描述設(shè)停車場(chǎng)只有一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車場(chǎng)已停滿n輛汽車,則后來(lái)的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場(chǎng)某輛車要離開時(shí),在它之后開入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開出大門外,其它車輛再按原次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。三、基本要求以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便

4、道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照及到達(dá)或離去的時(shí)刻,對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(dá),則輸出汽車在停車場(chǎng)或便道上的停車位置;若是車離去,則輸出汽車在停車場(chǎng)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表實(shí)現(xiàn)。四、詳細(xì)設(shè)計(jì)(1)原理分析:棧是一種只能在一段進(jìn)行輸入和輸出操作的線性表,表尾稱為棧頂,表頭稱為棧底。棧的主要特點(diǎn)是“后進(jìn)先出”,即后進(jìn)棧的元素先處理,停車場(chǎng)的容量即為棧的存儲(chǔ)空間。隊(duì)列是限定僅能在表的一段進(jìn)行插入,在表的另一端進(jìn)行刪除的線性表。隊(duì)列中可以插

5、入的一段稱為隊(duì)尾,可以刪除的一端稱為隊(duì)首。隊(duì)列的主要特點(diǎn)是“先進(jìn)先出”。停車場(chǎng)管理系統(tǒng)是充分利用數(shù)據(jù)結(jié)構(gòu)中棧和隊(duì)列的思想實(shí)現(xiàn)的,用到兩個(gè)堆棧,一個(gè)用來(lái)模擬停車場(chǎng)另一個(gè)為臨時(shí)棧,存儲(chǔ)為離開停車場(chǎng)的車輛讓道的其他車輛;一個(gè)隊(duì)列結(jié)構(gòu),存儲(chǔ)便道的車輛信息。typedefstruet定義棧,表示停車場(chǎng)CarNode*base;停車場(chǎng)的堆棧底CarNode*top;停車場(chǎng)的堆棧頂intstacksize;/停車場(chǎng)的容量Park;typedefstruct定義隊(duì)列,表示便道CarPtrfront;便道的隊(duì)列的隊(duì)頭CarPtrrear;/便道的隊(duì)列的隊(duì)尾intlength;Shortcut;(2)功能模塊:車

6、輛到達(dá):a、若棧不滿,車輛進(jìn)棧,停到停車場(chǎng);b、若棧滿,車輛入隊(duì),停到便道;StatusArrival(Park&P,Shortcut&S)intnumber,ar_time;printf(請(qǐng)輸入車牌號(hào):);scanf(%d,&number);printf(進(jìn)場(chǎng)的時(shí)刻:);scanf(%d,&ar_time);if(P.stacksizenumber;Push(P,m);/便道中的車開入停車場(chǎng)free(w);printf(車牌號(hào)為d的車已由便道進(jìn)入停車場(chǎng)n,m.number);printf(停車費(fèi)%d,占用車位數(shù)為dn,money,P.stacksize);elseprintf(停車場(chǎng)不存在牌

7、號(hào)%d的車n,number);returnOK;(3丿用戶手冊(cè):輸出菜單選項(xiàng);請(qǐng)選擇(A,D,E):如果選擇A,即車輛到達(dá):若棧不滿,車輛進(jìn)棧,停到停車場(chǎng);若棧滿,車輛入隊(duì),停到便道;如果選擇D,即車輛離開:計(jì)算時(shí)間及費(fèi)用;如果隊(duì)列不空且棧不滿,隊(duì)列上的車出隊(duì)入棧;如果選擇E,則退出程序。4)流程圖:圖一、函數(shù)關(guān)系調(diào)用圖圖二、操作流程圖測(cè)試用例:A1,5),A2,10),D1,15丿,A3,20),A4,25),A5,30),CD2,35),CD4,40),E0,0)。毎一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照及到達(dá)或離去的時(shí)刻,其中,A表示到達(dá),D表示離去,E表示輸入

8、結(jié)束。測(cè)試目的:測(cè)試菜單顯示方法,到達(dá)方法和離開方法能否正確完成,時(shí)間和費(fèi)用計(jì)算是否正確。測(cè)試要求:測(cè)試用例要合理并足夠,既要有正確用例,也要有錯(cuò)誤用例,檢驗(yàn)程序的正確性和健壯性。五、程序源碼#include#include#include#defineOK1函數(shù)返回狀態(tài)代碼,宏定義#defineERROR0#defineTRUE1#defineFALSE0#defineINFEASIBLE-1#defineOVERFLOW-2#defineSIZE2/停車場(chǎng)位置數(shù)#definePRICE2typedefintStatus;/棧,模擬停車場(chǎng)typedefstructCar1定義一個(gè)結(jié)構(gòu)體來(lái)表示

9、停車場(chǎng)中的車intnumber;/汽車車號(hào)intar_time;/汽車到達(dá)時(shí)間CarNode;typedefstruct定義棧,表示停車場(chǎng)CarNode*base;/停車場(chǎng)的堆棧底CarNode*top;停車場(chǎng)的堆棧頂intstacksize;/停車場(chǎng)的容量Park;typedefintStatus;/隊(duì)列,模擬便道typedefstructCar2用另一個(gè)結(jié)構(gòu)體來(lái)表示便道中停放的車intnumber;/汽車車號(hào)intar_time;/汽車到達(dá)時(shí)間structCar2*next;*CarPtr;typedefstruet定義隊(duì)列,表示便道CarPtrfront;便道的隊(duì)列的隊(duì)頭CarPtrre

10、ar;/便道的隊(duì)列的隊(duì)尾intlength;Shortcut;StatusInitStack(Park&P)/初始化停車場(chǎng)P.base=(CarNode*)malloc(SIZE*sizeof(Car1);if(!P.base)exit(OVERFLOW);P.top=P.base;P.stacksize=0;returnOK;StatusPush(Park&P,CarNodee)*P.top+=e;+P.stacksize;returnOK;StatusPop(Park&P,CarNode&e)車離開停車場(chǎng),棧的輸出操作if(P.top=P.base)printf(停車場(chǎng)為空.);elsee

11、=*-P.top;-P.stacksize;returnOK;StatusInitQueue(Shortcut&S)S.front=S.rear=(CarPtr)maIIoc(sizeof(Car2);初始化便道if(!S.front|!S.rear)exit(OVERFLOW);S.front-next=NULL;S.Iength=0;returnOK;StatusEnQueue(Shortcut&S,intnumber,intar_time)CarPtrp;p=(CarPtr)maIIoc(sizeof(Car2);if(!p)exit(OVERFLOW);p-number=number;

12、p-ar_time=ar_time;p-next=NULL;S.rear-next=p;S.rear=p;+S.Iength;returnOK;StatusDeQueue(Shortcut&S,CarPtr&w)if(S.Iength=0)printf(通道為空.);eIsew=S.front-next;S.front-next=S.front-next-next;-S.length;returnOK;StatusArrival(Park&P,Shortcut&S)intnumber,ar_time;對(duì)進(jìn)站車輛的處理:printf(請(qǐng)輸入車牌號(hào):);/記錄車牌號(hào),時(shí)間,并根據(jù)停車場(chǎng)scanf(

13、%d,&number);/是否滿來(lái)判斷入棧還是入隊(duì)列printf(進(jìn)場(chǎng)的時(shí)刻:);scanf(%d,&ar_time);if(P.stacksizenumber;Push(P,m);/便道中的車開入停車場(chǎng)free(w);printf(車牌號(hào)為d的車已由便道進(jìn)入停車場(chǎng)n,m.number);printf(停車費(fèi)%d,占用車位數(shù)為dn,money,P.stacksize);elseprintf(停車場(chǎng)不存在牌號(hào)%d的車n,number);returnOK;intmain()intm=1;charflag;/選項(xiàng)ParkP,Q;ShortcutS;InitStack(P);InitStack(Q);

14、InitQueue(S);while(m)printf(n停車場(chǎng)管理程序n);printf(n);printf(請(qǐng)選擇(A,D,E):);scanf(%c,&flag);switch(flag)caseA:casea:Arrival(P,S);break;/車進(jìn)入停車場(chǎng)caseD:cased:Leave(P,Q,S);break;/車離開停車caseE:casee:m=0;break;default:printf(Inputerror!n);break;caseE:while(flag!=n)scanf(%c,&flag);六、測(cè)試結(jié)果停車場(chǎng)管理程序請(qǐng)選擇(A,D,E):A請(qǐng)輸入李牌丁1進(jìn)場(chǎng)的

15、時(shí)靈坨該車應(yīng)停在第1號(hào)車道.停車場(chǎng)管理程序請(qǐng)選擇(札DJ):A請(qǐng)輸入車牌弓:2進(jìn)場(chǎng)的時(shí)刻:10該車應(yīng)停在第2號(hào)車道.停車場(chǎng)管理程序請(qǐng)選擇(A,D,E):D請(qǐng)輸入車牌弓:1出場(chǎng)的時(shí)刻停車費(fèi)為26占用位數(shù)為1停車場(chǎng)管理程序請(qǐng)選擇(A,D,E):A請(qǐng)輸入車牌弓:3進(jìn)場(chǎng)的時(shí)刻亡0該車應(yīng)停在第2號(hào)車道.停車場(chǎng)管理程序請(qǐng)選擇(扎D,E):A請(qǐng)輸入軍牌號(hào):4進(jìn)場(chǎng)的時(shí)刻:藥停車場(chǎng)己滿,請(qǐng)暫時(shí)停在便道的第1個(gè)位置.停車場(chǎng)管理程序請(qǐng)選擇(扎幾E):A請(qǐng)輸入車牌號(hào):5進(jìn)場(chǎng)的時(shí)刻:30停車場(chǎng)己滿,諳暫時(shí)停在便道的第2個(gè)位置.停車場(chǎng)管理程序請(qǐng)選擇(A,D,E);D請(qǐng)輸入李牌號(hào):2岀場(chǎng)的時(shí)刻:3車牌號(hào)為4的車亡由便道進(jìn)入

16、停車場(chǎng)停車費(fèi)為5厲占用車位數(shù)為2停車場(chǎng)管理程序請(qǐng)選擇(A,D*E);D請(qǐng)輸入車牌弓:4岀場(chǎng)的時(shí)K:40車牌弓為5的車己由便道進(jìn)入停車場(chǎng)停車費(fèi)為10,占用車位數(shù)為2停車場(chǎng)管理程序請(qǐng)選擇(A,D,E):EProcessexitedafter110secondswithreturnvalue0請(qǐng)按任意鍵繼續(xù)七、課設(shè)總結(jié)通過這次課程設(shè)計(jì),我充分理解了用棧和隊(duì)列實(shí)現(xiàn)模擬停車場(chǎng)的基本原理,探究了棧的順序存儲(chǔ)結(jié)構(gòu)和隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的定義和算法描述,同時(shí)也學(xué)會(huì)了編寫停車場(chǎng)問題的程序。雖然此次的程序比較簡(jiǎn)單,沒有加入一些更完善的功能,但總體上來(lái)說比較完整,實(shí)現(xiàn)了基礎(chǔ)功能。在實(shí)踐的過程中,我了解到了自己的一些不足,因?yàn)楹芏鄷鴮戝e(cuò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論