停車管理系統(tǒng)_第1頁
停車管理系統(tǒng)_第2頁
停車管理系統(tǒng)_第3頁
停車管理系統(tǒng)_第4頁
停車管理系統(tǒng)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計停車管理系統(tǒng)計算機(jī)科學(xué)與技術(shù)專業(yè)14級數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告設(shè)計題目: 停車管理系統(tǒng) 學(xué) 號: 26645451213656 姓 名: 吳 立 華 指導(dǎo)教師: 李 星 豪 2015年 9 月 15 日目錄目錄1引言12.課程設(shè)計的目的和任務(wù)22.1課程設(shè)計的目的22.2課程設(shè)計的任務(wù)23. 設(shè)計方案和實施23.1總體設(shè)計23.2基本操作33.3詳細(xì)設(shè)計34.運(yùn)行調(diào)試結(jié)果45.總結(jié)與致謝76.附錄8源程序代碼:87.參考文獻(xiàn)13引言數(shù)據(jù)結(jié)構(gòu)是一門專業(yè)基礎(chǔ)課,它對學(xué)習(xí)者的要求很明確:學(xué)會分析,研究計算機(jī)加工的數(shù)據(jù)結(jié)構(gòu)的特性,以便為應(yīng)用設(shè)計所需的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及相應(yīng)的

2、算法,并初步掌握算法的時間分析和空間分析的技術(shù)。其次,該課程的學(xué)習(xí)過程也是復(fù)雜程序設(shè)計的訓(xùn)練過程,要求學(xué)習(xí)者編寫的程序結(jié)構(gòu)或設(shè)計的程序結(jié)構(gòu)體清楚、正確、易讀,符合軟件工程的規(guī)范。在這個科技發(fā)達(dá)的時代,汽車對于我們來說越來越普遍,人們對于停車場管理也更加信息化。本系統(tǒng)主要是運(yùn)用c語言和數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,用棧來模擬停車場,隊列來模擬便道實現(xiàn)汽車進(jìn)入和離開的管理,用簡單的數(shù)據(jù)計算對汽車進(jìn)行收費(fèi)標(biāo)準(zhǔn)。使車主更清楚了解停車場信息,車主可以根據(jù)系統(tǒng)的提示進(jìn)行每一項操作。本次課程設(shè)計就是對停車場基本的信息及停車費(fèi)用的管理做一個簡單的設(shè)計,主要實現(xiàn)對停車的信息錄入,修改,刪除,顯示,添加,查找等幾個方面的功

3、能。本設(shè)計采用c語言作為數(shù)據(jù)結(jié)構(gòu)和算法的描述語言。本設(shè)計采用目前最通用的程序設(shè)計語言之一- C語言作為數(shù)據(jù)結(jié)構(gòu)和算法的描述語言。題目:停車場管理系統(tǒng)設(shè)計2.課程設(shè)計的目的和任務(wù)2.1課程設(shè)計的目的(1)要求學(xué)生能夠熟練掌握c+語言的基本知識和技能(2)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法(3)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題(4)開發(fā)一個中小型系統(tǒng),掌握系統(tǒng)研發(fā)全過程(5)培養(yǎng)分析問題,解決實際問題的能力2.2課程設(shè)計的任務(wù)設(shè)停車場是一個可停放n輛車的狹長通道,且只有一個大門可供汽車進(jìn)出。在停車場內(nèi),汽車按到達(dá)的先后次序,由北向南依次排列(假設(shè)大門在最南端)。若

4、停車場內(nèi)已停滿n輛車,則后來的汽車需在門外的便道上等候,當(dāng)有車開走時,便道上的第一輛車即可開入。當(dāng)停車場內(nèi)某輛車要離開時,在它之后進(jìn)入的車輛必須先退出停車場為它讓路,待該輛車開出大門后,其他車輛再按原次序返回車場。每輛車離開停車場時,應(yīng)按其停留時間的長短交費(fèi)(在便道上停留的時間不收費(fèi))。設(shè)計要求:1模擬上述管理過程。要求以順序棧模擬停車場,以鏈隊列模擬便道。2從終端讀入汽車到達(dá)或離去的數(shù)據(jù),每組數(shù)據(jù)包括三項:(1)是“到達(dá)”還是“離開”;(2)汽車牌照號碼;(3)“到達(dá)”或“離開”的時刻。3與每組輸入信息相應(yīng)的輸出信息為:如果是到達(dá)的車輛,則輸出其在停車場中或便道上的位置;如果是離去的車輛,則

5、輸出其在停車場中停留的時間和應(yīng)交的費(fèi)用。程序運(yùn)行環(huán)境:Microsoft Visual C+ 6.0&& DOS3. 設(shè)計方案和實施3.1總體設(shè)計停車場管理系統(tǒng)分為三個模塊,即:車輛到達(dá).離開.列表顯示圖1:停車管理系統(tǒng)總模塊3.2基本操作1數(shù)據(jù)結(jié)構(gòu)說明(1)用到兩個堆棧:一個為車場棧;另一個為臨時棧temptypedef struct NODECarNode *stackMAX+1;int top;SeqStackCar; /*模擬車場*/1(2)一個隊列結(jié)構(gòu),存儲便道車輛信息:typedef struct NodeQueueNode *head;QueueNode *rea

6、r;LinkQueueCar; /*模擬便道*/3.3詳細(xì)設(shè)計1、“到達(dá)”模塊:到達(dá)時有兩種情況,即車場是否滿,未滿則直接進(jìn)入停車場;滿時,到便道等待。圖2:到達(dá)模塊2.“離開”模塊:離開時,當(dāng)車庫為空時,提示沒有車,結(jié)束;否則車輛離開。圖3:離開模塊3. “顯示”模塊:顯示模塊有兩個顯示選項,即:車場與便道。圖4:顯示模塊4.運(yùn)行調(diào)試結(jié)果一)測試用例(說明:測試用例要合理并且足夠,既要有正確用例,也要有錯誤用例,同時檢驗程序的正確性和強(qiáng)壯性)1第一組測試用例(1)測試輸入:停車場的車輛離開,如下表:表1:測試輸入圖5:測試(2)測試目的:測試離開方法時間格式控制以及費(fèi)用計算是否正確。(3)正

7、確輸出:第一次離開的是 CD221,應(yīng)交費(fèi)2.95元。第二次時,當(dāng)在輸入65時,應(yīng)該提示輸入錯誤,重輸。(4)實際輸出:(5)錯誤原因:第一個錯誤是在計算時,一個數(shù)字錯了;第二個是沒有對時間格式控制。(6)當(dāng)前狀態(tài):已改正2第二組測試用例(1)測試輸入:連續(xù)6輛車到達(dá),如下表:表2:測試輸入(2)測試目的:測試到達(dá)方法與列表顯示方法能否正確完成。(3)正確輸出:先到達(dá)的五輛車先進(jìn)入停車場,最后到達(dá)的一輛在便道等候。(4)實際輸出:圖6:輸出結(jié)果表3:測試輸入(5)錯誤原因:沒有作出時間先后的判斷,而是先輸入先進(jìn)入。(6)當(dāng)前狀態(tài):待修改3第三組測試用例(1)測試輸入:接上一步輸入離開信息,下表

8、:(2)測試目的:測試離開方法功能是否成功以及便道進(jìn)入車場是否正確。(3)正確輸出:輸出3號車位的車輛離開信息清單,便道1號車進(jìn)入停車場。(4)實際輸出:圖7:實際輸出(5)錯誤原因:沒有錯誤。(6)當(dāng)前狀態(tài):通過5.總結(jié)與致謝通過這兩周的程序設(shè)計,加深了我對數(shù)據(jù)結(jié)構(gòu)這門課程所學(xué)內(nèi)容的進(jìn)一步的理解和掌握,同時,通過對停車場管理系統(tǒng)的開發(fā),使得我將計算機(jī)所學(xué)知識與實際問題很好的相連在一起。在這次課程設(shè)計中,不僅培養(yǎng)了我開發(fā)中小程序的能力,而且也培養(yǎng)了我的團(tuán)隊合作能力。在這次對停車管理系統(tǒng)的開發(fā)過程中,我們小組成員相互合作,互相幫助,其中有程序功能成功實現(xiàn)時的欣喜,也有遇到問題,解決問題時的執(zhí)著以

9、及迷茫,在這次課程設(shè)計中使得我很好的了解了在開發(fā)程序中合作的重要性。讓我們初步有了編寫小程序的能力,我們對很多的函數(shù)有了新的認(rèn)識,也學(xué)會了運(yùn)用多種函數(shù),也明白了編寫軟件的基本過程和基本方法。編寫軟件的過程中我們又學(xué)到了曾經(jīng)自己不知道的函數(shù)或是自己不會的函數(shù)的用法,在軟件一次次調(diào)試失敗下,曾今想過要放棄,但是我們小組互相鼓勵,最后還是堅持了下來,自己在編程時經(jīng)常因為一些類似于“少了分號”這樣的簡單錯誤而運(yùn)行不出來,不夠仔細(xì)認(rèn)真,給自己帶來麻煩,以后無論是程序設(shè)計還是今后的生活都要仔細(xì)認(rèn)真,不能粗心大意。 在此,感謝在本次課程設(shè)計中幫助過我的所有老師!感謝您們!6.附錄源程序代碼:#include

10、<iostream.h> #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 5 /*車庫容量,可以根據(jù)實際情況改變*/ #define price 0.01 /*一輛車每分鐘費(fèi)用,可變*/ typedef struct time int hour; int min; Time; /*時間結(jié)點(diǎn)*/ typedef struct node char num10; Time reach; Time leave; CarNode; /*車輛信息結(jié)點(diǎn)*/ typedef

11、struct NODE CarNode *stackMAX+1; int top; SeqStackCar; /*模擬停車場*/ typedef struct car CarNode *data; struct car *next; QueueNode; typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar; /*模擬便道*/ /*方法聲明*/ void InitStack(SeqStackCar *); /*初始化棧*/ int InitQueue(LinkQueueCar *); /*初始化便道*/ int A

12、rrival(SeqStackCar *,LinkQueueCar *); /*車輛到達(dá)*/ void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*車輛離開*/ void List(SeqStackCar,LinkQueueCar); /*顯示信息*/ void PRINT(CarNode *p,int room); /*輸出離開車輛的信息清單*/void main() SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; InitStack(&Enter); /*初始化車站*

13、/ InitStack(&Temp); /*初始化讓路的臨時棧*/ InitQueue(&Wait); /*初始化通道*/ while(1) printf(" 歡迎使用本停車管理系統(tǒng) n"); printf("*n"); printf(" -1. 車輛到達(dá)- n"); printf(" -2. 車輛離開- n"); printf(" -3. 列表顯示- n"); printf(" -4. 退出系統(tǒng)- n"); printf("*n"); p

14、rintf("!說明:請注意正確輸入時間,在輸入“時”后,按“ENTER”或者“空格”再輸入“分”。不要為非數(shù)字!n"); printf("請選擇所需要的服務(wù)! (1-4).n"); while(1) scanf("%d",&ch); if(ch>=1&&ch<=4)break; else printf("輸入錯誤!請選擇:(1-4)."); switch(ch) case 1:Arrival(&Enter,&Wait);break; /*車輛到達(dá)*/ case

15、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<=MAX;i+) s->stacks->top=NULL; int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q->head

16、=(QueueNode *)malloc(sizeof(QueueNode); if(Q->head!=NULL) Q->head->next=NULL; Q->rear=Q->head; return(1); else return(-1); int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*車輛到達(dá)*/ CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode); flushall(); printf("請輸入車牌號(例:A1234):n

17、"); gets(p->num); if(Enter->top<MAX) /*車場未滿,車進(jìn)車場*/ Enter->top+; printf("車輛在車場第%d位置!n",Enter->top); printf("請輸入到達(dá)時間:(小時:分鐘)n"); scanf("%d",&p->reach.hour); while(p->reach.hour<0|p->reach.hour>23) /控制時間格式正確 printf("輸入錯誤!n")

18、; printf("請重輸入到達(dá)時間的時(0-23)!n"); scanf("%d",&p->reach.hour); scanf("%d",&p->reach.min); while(p->reach.min<0|p->reach.min>59) /控制分鐘輸入正確 printf("輸入錯誤!n"); printf("請重輸入到達(dá)時間的分(0-59)!n"); scanf("%d",&p->reach.min

19、); Enter->stackEnter->top=p; return(1); else /*車場已滿,車進(jìn)便道*/ printf("車場已滿,請在便道等待!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 ro

20、om; CarNode *p; QueueNode *q; /*判斷車場內(nèi)是否有車*/ if(Enter->top>0) /*有車*/ while(1) /*輸入離開車輛的信息*/ printf("請輸入車在車場的位置1-%d",Enter->top); scanf("%d",&room); if(room>=1&&room<=Enter->top) break; while(Enter->top>room) /*車輛離開*/ Temp->top+; /*臨時通道棧頂指針*/

21、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) /*判斷臨時通道上是否有車*/ Enter->top+; Enter->stackEnter->top=Temp->stackTemp->

22、;top; Temp->stackTemp->top=NULL; Temp->top-; PRINT(p,room); if(W->head!=W->rear)&&Enter->top<MAX) /*車站是未滿*/ /*便道的車輛進(jìn)入車場*/ q=W->head->next; p=q->data; /*p指向鏈隊頭*/ Enter->top+; printf("便道的%d號車進(jìn)入車場第%d位置!n",p->num,Enter->top); printf("請輸入現(xiàn)在的時間

23、如(小時;分鐘):n"); scanf("%d",&p->reach.hour); if(p->reach.hour<0|p->reach.hour>23) printf("輸入錯誤!n"); printf("請重輸入到達(dá)時間的時(0-23)!n"); scanf("%d",&p->reach.hour); scanf("%d",&p->reach.min); if(p->reach.min<0|p->

24、reach.min>59) printf("輸入錯誤!n"); printf("請重輸入到達(dá)時間的分(0-59)!n"); scanf("%d",&p->reach.min); Enter->stackEnter->top=p; W->head->next=q->next; if(q=W->rear) W->rear=W->head; free(q); /*釋放q地址*/ else printf("便道里沒有車!n"); /*便道沒車*/ else

25、 printf("車場里沒有車!n"); /*車場沒車*/ void PRINT(CarNode *p,int room) /*輸出離開車輛的信息清單*/ int A1,A2,B1,B2; printf("請輸入離開的時間:(小時:分鐘n"); scanf("%d",&p->leave.hour); while(p->leave.hour<0|p->leave.hour>23) printf("輸入錯誤!n"); printf("請重輸入離開的時間的時(0-23)n&

26、quot;); scanf("%d",&p->leave.hour); B1=p->leave.hour; scanf("%d",&p->leave.min); if(p->leave.min<0|p->leave.min>59) printf("輸入錯誤!n"); printf("請重輸入到達(dá)時間的分(0-59)!n"); scanf("%d",&p->leave.min); printf("離開車輛的車牌號為:

27、n"); puts(p->num); printf("其到達(dá)時間為:%d:%dn",p->reach.hour,p->reach.min); printf("離開時間為: %d:%dn",p->leave.hour,p->leave.min); A1=p->reach.hour; A2=p->reach.min; B1=p->leave.hour; B2=p->leave.min; printf("應(yīng)交費(fèi)用為: %lf元!n", (B1-A1)*60+(B2-A2)+14

28、40)%1440*price); free(p); void List1(SeqStackCar *S) /*列表顯示車場信息*/ printf("您選擇的是車場停車情況!n"); int i; if(S->top>0) /*判斷車站內(nèi)是否有車*/ printf(" 位置到達(dá)時間車牌號n"); for(i=1;i<=S->top;i+) printf(" %d %d:%d %sn",i ,S->stacki->reach.hour,S->stacki->reach.min,S->stacki->num); else printf("車場里沒有車!n"); void List2(LinkQu

溫馨提示

  • 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

提交評論