課程設計方案停車場管理系統_第1頁
課程設計方案停車場管理系統_第2頁
課程設計方案停車場管理系統_第3頁
課程設計方案停車場管理系統_第4頁
課程設計方案停車場管理系統_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、學號 1011200142數據結構課程設計設計說明書停車場管理系統起止日期:年月至年月日學生 姓名班級成績指導教師(簽字年月日停車場管理系統一、引言 3二、系統總體設計 31、設計思路 32、系統總體框架圖 53、系統流程圖 5三、詳細設計 71、車輛停車函數及流程圖 72、車輛離開函數及流程圖 83、列表顯示車場信息函數及流程圖 94、列表顯示便道信息 105 列表顯示菜單函數及流程圖 11四、總結 12 參考文獻 12五、附錄 13一、引言隨著現代化信息技術的發展,人民生活水平快速提高,汽車的數量也飛速增長,于此 同時,停車問題越來越受人們的關注,為了使停車場有效管理,停車場管理的信息化成

2、為 必然。我們可以利用所學的知識,編寫一個停車場管理系統,以提高管理的效率,提升停 車場的競爭力。本次課程設計,我運用 C語言編寫停車場管理系統,主要實現汽車停車,離開,收 費,停車信息查詢,顯示等功能,主要實現方式是用棧和隊列。下面對棧和隊列進行一下 簡單介紹。棧 stack )是一種僅允許在一端進行插入和刪除運算的線性表。棧中允許插入和刪除 的那一端,稱為棧頂 top )。棧頂的第一個元素稱為棧頂元素。棧中不可以插入和刪除的 那一端稱為棧底。在一個棧中插入元素,即把新元素放到當前棧頂元素的上面,使其稱為 新的棧頂元素,即進棧 push)。從一個棧中刪除一個元素,即把棧頂元素刪除掉,使其下

3、面的元素成為新的棧頂元素,稱為出棧 pop)。棧遵循后進先出的原則,即后進棧的元素必先出棧。其中順序棧是利用一組地址連續的存儲單元依次存放從棧底到棧頂的元素。在C語言中,可以用一維數組描述順序棧中數據元素的存儲區域,并預設一個數組的最大空 間。棧底設置在 0 下標端,棧頂隨著插入和刪除元素而變化,可以用一個整形變量top 來指示棧頂的位置。隊列是一種限定在表的一端進行插人而另一端進行刪除的線性表,與棧相反,隊列遵 循先進先出的原則。允許刪除的一端,稱為隊頭 front )。允許插入的一端稱為隊尾 rear )。向隊列中插入新的元素稱為入隊,新元素進隊后就成為了新的隊尾元素;從隊列 中刪除元素,

4、稱為出隊,元素離隊后,其后繼元素就成為了新的隊頭元素。其中鏈隊列就 是用鏈表表示的隊列,需要兩個分別指示隊頭和隊尾的指針分別稱為頭指針和尾指針)。為了操作方便,給鏈隊列添加一個頭結點,并令頭指針指向頭結點,尾指針指向隊尾元素 結點,判斷隊列為空的條件是頭指針和尾指針均指向頭結點。停車場的管理系統正好利用棧和隊列的這些特點來實現模擬停車場和便道。 停車場管理主要實現以下幾個功能:1)、停車場車位的劃分。2)、車輛進出管理及收費功能。3)、停車場車輛信息查詢功能。4)、退出系統。二、系統總體設計1、設計思路停車場采用棧式結構,便道采用隊列結構 即便道就是等候隊列)。停車場的管理流程 如下:1)當車

5、輛要進入停車場時,檢查停車場是否已滿,如果未滿則車輛進棧車輛進入停車場);如果停車場已滿,則車輛進入等候隊列車輛進入便道等待)。2)當車輛要求出棧時,該車到棧頂的那些車先出棧 在它之后進入的車輛必須先退出 車場為它讓路),在讓該車出棧,其他車輛再按原次序進棧 進入車場)。當車輛出棧完畢 后,檢查等候隊列 便道)中是否有車,有車則從隊頭取出,壓入棧中。用棧模擬停車場,用隊列模擬便道,按照從終讀入的輸人數據序列的進行模擬管理, 每一組輸入數據包含三個數據項:汽車到達或汽車離去的信息,汽車車牌號以及汽車到達 或離去的時刻。每次輸完,進行輸出操作:若是車輛到達,輸出汽車在停車場內或者便道 上停車的信息

6、;若是車輛離去,輸出停留時間和需繳納的費用 。InitStack( &Temp。InitQueue( &Wait 。while (1 printf(nn*歡迎使用停車場管理系統。*、printf(n1 車輛停車 。printf(n2 車輛離開 。printf(n3 列表顯示 。printf(n4 退出系統 n 。printf( n 停車 費用: 0.2 元/分。printf(。*、printf( n 請選擇您要服務的工程 1-2-3-4: 。 while (1 scanf( %d, &ch。if (ch =1&chbreak 。else printf( n 請選擇: 1-2-3-4 。swit

7、ch (chcase 1:Arrival( &Enter, &Wait。 break。 / 車輛停車 case 2:Leave( &Enter, &Temp,&Wait。 break。 / 車輛離開 case 3:List(Enter,Wait 。 break。 / 列表打印信息 case 4:exit(0。 / 退出主程序default : break。void InitStack(SeqStackCar *s/ 初始化棧 int i 。s-top=0。for (i =0。 i s-stacks -top =NULL。int InitQueue(LinkQueueCar *Q/ 初始化便道

8、Q-front =(QueueNode* malloc( sizeof (QueueNode。 if (Q-front != NULLQ-front - next =NULL。Q-rear =Q-front 。return (1 。 elsereturn (-1。void Display(CarNode * p, int room/ 打印車場的信息int A1,A2,B1,B2 。printf( n 請輸入離開的時間 / *:*/:。scanf( %d:%d, &(p - leave . hour, &(p - leave . min。printf( n 離開車輛的車牌號 : 。puts(p

9、- num。printf( n 其至U達時間為:d:%d,p-reach. hour,p -reach . min。 printf( n 離開時間為:%d:%d,p - leave . hour,p - leave . min。 A1=p-reach. hour。A2=p-reach. min。B1=p- leave . hour。B2=p- leave . min。printf( n 應交費用為:%.1f 元n ,(B1 -A1+24屹4*60+(B2- A2+60%60*price 。free(p 。int Arrival(SeqStackCar *Enter,LinkQueueCar *

10、W/ 車輛至達 CarNode *p。QueueNode*t 。p=(CarNode*malloc( sizeof (CarNode。flushall( 。printf( n 請輸入車牌號 : 。gets(p -num。if (Enter -topEnter -top+。printf( n 車輛在第 號車位,Enter -top。printf( n 請輸入開始停車時間 :/*:*/。scanf( %d:%d,&(p-reach. hour, &(p-reach.min。Enter -stackEnter -top =p。return (1 。else / 車位已滿,車進便道printf( n

11、車位已滿,請在便道等待! n 。t =(QueueNode*malloc( sizeof (QueueNode。t -data=p。t -next =NULL。W-rear -next =t 。W-rear =t 。return (1 。 void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar*W int room 。 CarNode* p, *t 。 QueueNode* q。if (Enter - top 0while (1 printf( 請輸入離開車的車位號 /1-%d/ ,Enter - top 。 scanf( %d

12、, &room。if (room=1&room top break 。 while (Enter - top room/ 車輛離開 Temp- top +。Temp- stackTemp - top =Enter - stackEnter - top 。Enter - stackEnter - top =NULL。Enter - top - 。p=Enter - stackEnter - top 。Enter - stackEnter - top =NULL。Enter - top - 。while (Temp- top =1 Temp- top +。Enter - stackEnter -

13、top =Temp- stackTemp - top 。Temp- stackTemp - top =NULL。Temp- top - 。 Display(p,room 。/ 判斷通道上是否有車及停車位是否已滿if (W- front != W- rear &Enter - top q=W- front - next 。t =q- data 。Enter - top +。printf(便道車牌號為的車進入(號車位停車,t -num,Enter-top。 printf( n 請輸入現在的時間 /*:*/。scanf( %d:%d, &(t -reach. hour, &(t -reach. mi

14、n。W-front -next =q-next 。if (q=W-rearW-rear =W-front 。Enter -stackEnter -top =t。free(q 。 else printf( 便車道里沒有車 n 。 else printf( 車位里沒有車 n 。 void List1(SeqStackCar *S int i 。if (S-top0停車時刻 n printf( n 車牌號 車位 for (i =1。i top。 i +printf( %s ,S-stacki - num。 printf( %d,i 。printf( %d:%dn ,S-stacki - reach.

15、hour,S -stacki - reach . min。else printf( n 車位里沒有車 。 void List2(LinkQueueCar *W QueueNode* p 。p=W-front -next 。if (W-front != W- rearprintf( 等待車輛的車牌號為: 。 while (p!=NULLputs(p -data-num。 p=p-next 。 else printf( n 便道里沒有車 n 。void List(SeqStackCar S,LinkQueueCar Wint flag =1,tag 。while (flagprintf( nn 請

16、選擇 : 1-2-3 :。printf( n1.車位信息n2.便道信息n3.返回主菜單n 。 while (1scanf( %d,&tag。if (tag =1| tagbreak。else printf( n 請選擇: 1-2-3 。switch (tagcase 1:List1( &S。 break 。case 2:List2( &W。 break 。case 3:flag =0。 break 。 default : break 。 相關運行結果如下回r E:QQDqw n I cadCV uYdnb in wwtem p.exe*歎迎使用停車場管理系統*料1 車輛停車2 車錨離牙3 廠列

17、表顯示4 退出系繞停車費用;。2元/分請選擇您要服務的項目譏件4: 1請輸入車牌號:123車輛在第1號車位請輸入開始停車時間:/*:*/12:30_d E:QQDow n lcadCV uVdnbii nwwtem p.ex?請選擇您要服務的項目1請輸入車腫號:123車輛在第L號車位請輸入開始停車時間;M:=/12:30*#*31*柑*歡迎使用停車場菅理系 統+#4=*件+*4*+*+*+*+*=*+*234車輛停車 車輛離幵 列表顯示 退出系統停車議用:0- 2元/分*請迭擇您要服務的項目1-2-3_4: 1諸輸入車牌號;124車輛在第瀉車位 請輸入開始停車時間:r旦 E:QQDqwnlcadCYuVanbinwwtemp.exe*=*陽*出=陽*陽

溫馨提示

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

評論

0/150

提交評論