停車場管理系統數據結構課設報告_第1頁
停車場管理系統數據結構課設報告_第2頁
免費預覽已結束,剩余18頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、數據結構課程設計停車場管理系統word專業資料一、課設目的.2二、問題描述 .2三、基本要求 .2四、詳細設計.2(1).原理分析.2(2)功能模塊.3(3)用戶手冊.5(4)流程圖.6(5)測試用例.7(6)測試目的.7(7)測試要求.7. 7.13五、程序源碼六、測試結果七、課設總結八、參考文獻word專業資料.14.15word專業資料、課設目的(1) 了解并掌握數據結構與算法的設計方法,具備初步的獨立分析和設計能力;(2)初步掌握軟件開發過程中的問題分析,系統設計,程序編碼,測試等基本方法和技能;(3)提高綜合應用所學的理論知識和方法獨立分析和解決問題的能力;(4)訓練用系統的觀點和軟

2、件開發和一般規進行軟件開發,培養軟件工作者所應具有的科學的工作方法和作風。二、問題描述設停車場只有一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可 開入;當停車場某輛車要離開時,在它之后開入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其 它車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試 為停車場編制按上述要求進行管理的模擬程序。

3、三、基本要求以棧模擬停車場,以隊列模擬車場外的便道,按照從終端讀入的輸入數據序列進行模擬管理。每一組輸 入數據包括三個數據項:汽車“到達”或“離去”信息、汽車牌照及到達或離去的時刻,對每一組輸入數據 進行操作后的輸出數據為:若是車輛到達,則輸出汽車在停車場或便道上的停車位置;若是車離去,則輸出汽車在停車場停留的時間和應交納的費用(在便道上停留的時間不收費)。棧以順序結構實現,隊列以鏈表實現。四、詳細設計(1)原理分析:棧是一種只能在一段進行輸入和輸出操作的線性表,表尾稱為棧頂,表頭稱為棧底。棧的主要特點是“后進先出”,即后進棧的元素先處理,停車場的容量即為棧的存儲空間。隊列是限定僅能在表的一段

4、進行插入,在表的另一端進行刪除的線性表。隊列中可以插入的一段稱為word專業資料隊尾,可以刪除的一端稱為隊首。隊列的主要特點是“先進先出”。停車場管理系統是充分利用數據結構中棧和隊列的思想實現的,用到兩個堆棧,一個用來模擬停車場,另一個為臨時棧,存儲為離開停車場的車輛讓道的其他車輛;一個隊列結構,存儲便道的車輛信息。typedef struct定義棧,表示停車場CarNode *base;停車場的堆棧底CarNode *top; 停車場的堆棧頂int stacksize;/停車場的容量Park;typedef struct定義隊列,表示便道CarPtr front;便道的隊列的隊頭CarPtr

5、 rear;/便道的隊列的隊尾int len gth;Shortcut;(2)功能模塊:車輛到達:a、若棧不滿,車輛進棧,停到停車場;b、若棧滿,車輛入隊,停到便道;word專業資料Status Arrival(Park & P,Shortcut &S)int nu mber,ar_time;printf(請輸入車牌號:”);scan f(%d, &n umber);printf(進場的時刻:);scan f(%d,& ar_time);if(P.stacksize nu mber;Push(P,m);/便道中的車開入停車場free(w);printf(車牌號為

6、d的車已由便道進入停車場n,m.number);printf(停車費為%d,占用車位數為dn,money,P.stacksize);else printf(停車場不存在牌號為%d的車n, number);return OK;(3)用戶手冊:輸出菜單選項;請選擇(A,D,E):2如果選擇A,即車輛到達:若棧不滿,車輛進棧,停到停車場;若棧滿,車輛入隊,停到便道;3如果選擇D,即車輛離開:計算時間及費用;如果隊列不空且棧不滿,隊列上的車出隊入棧;word專業資料4如果選擇E,則退出程序。word專業資料(4)流程圖:圖一、函數關系調用圖word專業資料圖二、操作流程圖(5)測試用例:A1,5),

7、A 2 , 10),D1,15), A3,20), A4,25), A 5,30), D2,35) , D4,40), E,0,0)。每一組輸入數據包括三個數據項: 汽車到達”或離去”信息、汽車牌照及到達或離去的時刻,其中,A表示到達,D表示離去,E表示輸入結束。(6)測試目的:測試菜單顯示方法,到達方法和離開方法能否正確完成,時間和費用計算是否正確。(7)測試要求:測試用例要合理并足夠,既要有正確用例,也要有錯誤用例,檢驗程序的正確性和健壯性。五、程序源碼#i nclude#i nclude#in clude#define OK 1 /函數返回狀態代碼,宏定義#defi ne ERROR 0

8、#defi ne TRUE 1#defi ne FALSE 0#defi ne INFEASIBLE -1#defi ne OVERFLOW -2#defi ne SIZE 2停車場位置數#defi ne PRICE 2 typedef int Status;/棧,模擬停車場typedef struct Car1 II定義一個結構體來表示停車場中的車int number;/汽車車號int ar_time;/汽車到達時間CarNode;typedef struct/定義棧,表示停車場CarNode *base;/停車場的堆棧底CarNode *top; 停車場的堆棧頂word專業資料int st

9、acksize;/停車場的容量Park;typedef int Status;/隊列,模擬便道typedef struct Car2 用另一個結構體來表示便道中停放的車int number;/汽車車號int ar_time;/汽車到達時間struct Car2 *n ext;*CarPtr;typedef struct定義隊列,表示便道CarPtr front;/便道的隊列的隊頭CarPtr rear;/便道的隊列的隊尾int len gth;Shortcut;Status Ini tStack(Park &P)P.base=(CarNode*)malloc(SIZE*sizeof(C

10、ar1);if(!P.base) exit(OVERFLOW);P.top=P.base;P.stacksize=0;return OK;Status Push(Park & P,CarNode e)*P.top+=e;+P.stacksize;return OK;Status Pop(Park & P,CarNode &e) if(P.top=P.base)/初始化停車場/車進入停車場,棧的輸入操作/車離開停車場,棧的輸岀操作printf(通道為空.);word專業資料printf(停車場為空.);else e=*-P.top;-P.stacksize;return

11、OK;Status Ini tQueue(Shortcut &S) S.fro nt=S.rear=(CarPtr)malloc(sizeof(Car2);if(!S.front|!S.rear) exit(OVERFLOW);S.fro nt- next=NULL;S.le ngth=O;return OK;Status En Queue(Shortcut &S,i nt nu mber,i nt ar_time) CarPtr p;p=(CarPtr)malloc(sizeof(Car2);if(!p) exit(OVERFLOW);p-nu mber =nu mber;p

12、-ar_time=ar_time;p- next=NULL;S.rear- n ext=p;S.rear=p;+S.le ngth;return OK;Status DeQueue(Shortcut & S,CarPtr &w)else if(S.le ngth = 0)II車離開便道,隊列的輸出操作/初始化便道II車進入便道,隊列的輸入操作printf(出場的時刻:”);word專業資料 w = S.front-n ext;S.fro nt- next=S.fr on t- next-next;-S.le ngth;return OK;Status Arrival(Park

13、& P,Shortcut &S)int nu mber,ar_time;printf(請輸入車牌號:”);scan f(%d, &n umber);printf(進場的時刻:);scan f(%d,& ar_time);if(P.stacksize nu mber;Push(P,m);/便道中的車開入停車場free(w);printf(車牌號為%d的車已由便道進入停車場n,m.number);word專業資料else printf(停車場不存在牌號為d的車n, number);return OK;int mai n() int m=1;char flag;/選項

14、Park P,Q;Shortcut S;In itStack(P);In itStack(Q);Ini tQueue(S);while(m) pri ntf(n停車場管理程序n);prin tf(n ”);printf(請選擇(A,D,E):);scan f(%c, &flag);switch(flag) caseA:casea: Arrival(P,S);break; /車進入停車場caseD:cased: Leave(P,Q,S);break; /車離開停車caseE:casee: m=0; break;default:prin tf(I nput error!n );break;

15、caseE:while (flag != n)sca nf(%c, &flag);word專業資料六、測試結果停車場管理粹序請選擇A請輸入車牌號:1進場的時刻拓 該車應停心第1號車追.停車場管理程序請選擇(A, D, E): A請輸入車牌號:2進場的時刻:10該車應停在第2號車道.車場管珅稈序請選擇(A, DfE) : D請輸入車牌號;1出場的時刻:15停車費為占用車位數為1停車場管理程宇請選擇(A, D, E) : A請輸入車牌號:3進場的時刻煜0該車應停在第2號車道”word專業資料停車場管理起序請選擇(A, DfE) ; A詩輸入車牌號:4進場的時刻:停車場己滿*請暫時停在便道的

16、第1個付骨.停車場管理程環請選擇(A,D,E): A請輸入車牌號:5進場的時刻;30停年場己満,i青苜時停在便道的第2個位置.停車場管理稈中請選擇(AD,E): D請輸入車牌號:2岀場的時刻;35車牌號為4的車己由便道進入停車場停車費為50,占用車位數為2停車場管理程序請選擇(AtDtE) : D請輸入車牌號壬4出場的時刻:40車牌號為3的車己由便道進入停車場停車費為16占用車位數為2停車場管理稈序請選擇(A,D,E): EProcess exited after 110 seconds with return value 0請按任意鍵繼續七、課設總結通過這次課程設計,我充分理解了用棧和隊列實現模擬停車場的基本原理,探究了棧的順序存儲結構和 隊列的鏈式存儲結構的定義和算法描述,同時也學會了編寫停車場問題的程序。雖然此次的程序比較簡單, 沒有加入一些word專業資料更完善的功能,但總體上來說比較完整,實現了基礎功能。在實踐的過程中,我了解到了自己的一些不足,因為很多書

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論