停車場模擬管理程序設(shè)計(jì)報告(附源代碼)_第1頁
停車場模擬管理程序設(shè)計(jì)報告(附源代碼)_第2頁
停車場模擬管理程序設(shè)計(jì)報告(附源代碼)_第3頁
停車場模擬管理程序設(shè)計(jì)報告(附源代碼)_第4頁
停車場模擬管理程序設(shè)計(jì)報告(附源代碼)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、停車場模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 一、簡介1設(shè)計(jì)目的:理解線性表的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),進(jìn)一步提高使用理論知識指導(dǎo)解決實(shí)際問題的能力。2問題的描述:設(shè)停車場只有一個可停放幾輛汽車的狹長通道,只有一個大門可供汽車進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)的先后順序依次排列,若車場內(nèi)已停滿幾輛汽車,則后來的汽車只能在門外的便道上等候,一旦停車場內(nèi)有車輛開走,則排在便道上的第一輛汽車即可進(jìn)入;當(dāng)停車場內(nèi)某輛汽車要開走時,由于停車場是狹長的通道,在它之后開入的車輛必須先推出車場為他讓路,待車輛開出大門,為他讓路的車輛再按原次序進(jìn)入車場。試設(shè)計(jì)這樣一個停車場模擬管理程序。二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì):(1)為了便于區(qū)分每輛汽車并

2、了解每輛車當(dāng)前所處的位置,需要記錄汽車的牌照號碼和汽車當(dāng)前的狀態(tài)。(2)為了便于停車場的管理,要為每個車位分配一個固定的編號。(3)當(dāng)停車場的停車位上都已停滿了汽車,又有新的汽車到來時要把它調(diào)度到便道上,便道上的車輛要按照進(jìn)入便道的先后順序順次序放在便道上,為便道上的每個位置分配一個固定的編號。當(dāng)有車從停車位上離開后,便道上的第一輛汽車就立即進(jìn)入停車位上的某個車位。(4)當(dāng)某輛車離開停車場的時候,比他后進(jìn)停車位的車要為他讓路,而且當(dāng)他開走之后讓路的車還要按照原來的停放次序再次進(jìn)入停車位的某個車位上,為完成這項(xiàng)功能,定義一個結(jié)構(gòu)體。三、功能(函數(shù))設(shè)計(jì):本程序從總體上分為四個功能模塊,分別為:(

3、1)程序功能介紹和操作提示模塊(2)汽車進(jìn)入停車位的管理模塊(3)汽車離開停車位的管理模塊(4)查看停車場狀態(tài)的查詢模塊四、界面設(shè)計(jì): 本程序界面本著易于操作簡單整潔而不失美觀的理念,采用數(shù)字對應(yīng)功能選項(xiàng),結(jié)合詳細(xì)的操作提示,使得操作方便快捷,界面清晰明朗。五、程序設(shè)計(jì):1車輛進(jìn)入停車場模塊:·Arrive函數(shù):有車進(jìn)入停車廠;·Enter->top<MAX:對棧進(jìn)行判滿,Y表示棧滿,進(jìn)入便道;N表示棧不滿,進(jìn)入車站;2車輛離開停車場模塊:·Leave函數(shù):有車的話就要離開車位。·scanf("%d",&room)

4、:輸入需要離開的車所在的位置,如果Enter->top>room,車輛出站。·W->head!=W->rear)&&Enter->top<MAX:便道上有車且車位沒有滿,便道上的車進(jìn)入車站。3停車場信息顯示模塊:·List函數(shù):查詢車輛信息。·flag:如果flag=1,則執(zhí)行List1函數(shù);如果flag=2,則執(zhí)行List2函數(shù);如果flag=3,則返回,退出函數(shù)。·List1函數(shù):查詢車站信息。·s->top>0:判斷車站內(nèi)有沒有車,如果Y,用for循環(huán)打印出站內(nèi)的車位和車牌號

5、的信息;如果N,則輸入車場沒有車,返回List函數(shù)。·List2函數(shù):查詢便道信息。·w->head!=w->rear:判斷便道內(nèi)有沒有車,如果Y,用while循環(huán)打印出便道上車的信息;如果N,則輸出便道內(nèi)沒有車,返回List函數(shù)。 六、運(yùn)行與測試:1、測試的數(shù)據(jù)及其結(jié)果:(1)前五輛車到達(dá)進(jìn)入停車位:(2)后來的兩輛車在便道等候:(3)牌照為CF003的車離開,CF004,CF005需要讓道,CF006進(jìn)入5號車位:(4)查詢車場和便道里的信息 (5)退出程序:2、運(yùn)行與測試期間遇到的問題及其解決辦法。問題1:在車輛離開時不能顯示車輛讓道的信息; 解決辦法:在

6、離開函數(shù)中一個while循環(huán)中增加一個printf語句,通過循環(huán)可以顯示全部需要讓道的車輛。問題2:在進(jìn)行進(jìn)場出場信息的輸入時,只能進(jìn)行一次; 解決辦法:設(shè)置一個標(biāo)志量flag和while循環(huán),在每一次操作后返回到操作步驟。問題3:運(yùn)行顯示程序簡介后,繼續(xù)輸入時沒有清屏操作,導(dǎo)致運(yùn)行結(jié)果不方便觀察: 解決辦法:增加getch(); system("cls");語句,實(shí)現(xiàn)按任意鍵繼續(xù),并清屏。七、結(jié)論:本停車場管理系統(tǒng),可以進(jìn)行車輛進(jìn)入停車場和退出停車場以及停車廠內(nèi)部車位和便道上的停車信息的顯示三個步驟的操作。在車輛進(jìn)入停車場進(jìn)入模塊中,如果進(jìn)入停車場的車輛大于5,即車位里停

7、放的車輛已滿,后面的車自動進(jìn)入便道等候;在車輛離開停車場模塊中,在查找車輛過程中如果沒有對應(yīng)車輛能夠顯示出“對不起,輸入有誤,請重新輸入!”,并有輔助棧保證從車位上出來的車不會改變順序;車位出現(xiàn)空位時,便道上的車能自動進(jìn)入車位,同時,便道上的車也可以直接離開停車場;信息查詢模塊,能夠顯示停車場車位和便道上等待車的信息。并有錯誤操作的信息提示。同樣此程序存在一些不足之處。在顯示模塊,沒有顯示出開出停車場車輛的信息,在進(jìn)一步修改補(bǔ)充時,可以添加車輛開出停車場的顯示模塊;車輛的信息過于簡單,只有一個車牌,可以添加更加詳細(xì)的車輛信息以及添加收費(fèi)操作等功能。八、設(shè)計(jì)后的思考: 此次課程設(shè)計(jì),付出了很多的

8、時間和經(jīng)歷,編程過程中,我看到了自己許多不足,例如程序編寫的有點(diǎn)雜亂,造成編譯時錯誤不好找到,沒有足夠的耐心,有點(diǎn)急功近利,修改編譯錯誤時不能做到系統(tǒng)的分析,造成程序越改越亂,影響了情緒,丟掉了信心。同時,我也深切感受到了程序員的艱辛,明白了作為一個程序員應(yīng)該盡可能的為用戶考慮,縝密的思維,讓程序不斷地人性化,可操作性強(qiáng),界面盡可能的友好,把完美作為自己的目標(biāo)。對于程序本身,我看到了良好的程序編寫風(fēng)格對于程序員的重要性,函數(shù)之間調(diào)用的便利與簡潔,以及循環(huán)套用的魅力之所在??傊?,不管簡單還是復(fù)雜的程序設(shè)計(jì),都要求扎實(shí)的基礎(chǔ)知識,因?yàn)楦鞣N程序都是由簡單的一塊塊的函數(shù)結(jié)構(gòu)組成的,并加強(qiáng)實(shí)踐,從程序的

9、編寫中進(jìn)一步加強(qiáng)對書本知識的掌握。而且,需要耐心,做程序的編寫時比較枯燥的,會出現(xiàn)許多錯誤,需要我們細(xì)心并耐心的進(jìn)行修改。回顧編程的過程,我也學(xué)到了許多程序之外的東西,編程的過程對一個人的耐心和毅力是一種極大地考驗(yàn),不停地編譯,不停地改錯,不停地被打擊,信心被一點(diǎn)點(diǎn)的消磨,如果放棄,將前功盡棄。所以我選擇了停一停稍作休息然后堅(jiān)持下去,終于在完成的那一瞬間,內(nèi)心充滿了自豪和成就感。這次任務(wù)完成的過程給我上了生動而難忘的一課,面對一次次的挫折與打擊,我會選擇咬牙堅(jiān)持;為了遠(yuǎn)方的目標(biāo),我會不懈的努力,一點(diǎn)點(diǎn)的去接近。參考文獻(xiàn):1譚浩強(qiáng),C語言設(shè)計(jì)(第三版). 北京: 清華大學(xué)出版社, 20052嚴(yán)蔚

10、敏 吳偉民,數(shù)據(jù)結(jié)構(gòu)(C語言版).北京:清華大學(xué)出版社,2007附:源代碼 #include<stdio.h> #include <conio.h> #include<stdlib.h> #include<string.h> #define MAX 5/*車庫容量*/ typedef struct node char num10; CarNode;/*車輛信息結(jié)點(diǎn)*/ typedef struct NODE CarNode *stackMAX+1; int top; SeqStackCar; /*模擬車站*/ typedef struct car

11、 CarNode *data; struct car *next; QueueNode; typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar; /*模擬通道*/ void InitStack(SeqStackCar *); /*初始化棧*/ int InitQueue(LinkQueueCar *); /*初始化便道*/ int Arrival(SeqStackCar *,LinkQueueCar *); /*車輛到達(dá)*/ void Leave(SeqStackCar *,SeqStackCar *,LinkQu

12、eueCar *); /*車輛離開*/ void List(SeqStackCar,LinkQueueCar); /*顯示存車信息*/ int j=0; void main() SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch;int j=0; InitStack(&Enter); /*初始化車站*/ InitStack(&Temp); /*初始化讓路的臨時棧*/ InitQueue(&Wait); /*初始化通道*/ printf("|*|n"); printf("|*|n");

13、 printf("|* *|n"); printf("|*歡迎進(jìn)入停車場管理系統(tǒng)*|n"); printf("|* *|n"); printf("|*|n"); printf("|*|n"); printf("|注:本程序操作容易,請注意跟隨操作提示|n"); printf("n"); printf("請按任意鍵繼續(xù)."); getch(); system("cls"); while(1) printf("

14、請輸入對應(yīng)的數(shù)字選擇您需要的功能:n"); printf("n*n"); printf("*1.車輛到達(dá)*n"); printf("*2.車輛離開*n"); printf("*3.查詢信息*n"); printf("*4.退出系統(tǒng)*n"); printf("*n"); while(1) scanf("%d",&ch); if(ch=4) printf("謝謝您的使用,再見!n"); else if(ch>=1&a

15、mp;&ch<=4)break; else printf("n對不起,您的輸入有誤!n");break; switch(ch) case 1:Arrival(&Enter,&Wait);break; /*車輛到達(dá)*/ case 2:Leave(&Enter,&Temp,&Wait);break; /*車輛離開*/ case 3:List(Enter,Wait);break; /*列表打印信息*/ case 4:exit(0); /*退出主程序*/ default: break; void InitStack(SeqSta

16、ckCar *s) /*初始化棧*/ int i; s->top=0; for(i=0;i<=MAX;i+) s->stacks->top=NULL; int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q->head=(QueueNode *)malloc(sizeof(QueueNode); if(Q->head!=NULL) Q->head->next=NULL; Q->rear=Q->head; return(1); else return(-1); void PRINT(CarNode *p)

17、/*打印出站車的信息*/ printf("n離開車輛的車牌號為:"); puts(p->num); int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*車輛到達(dá)*/ CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode); flushall(); printf("n請輸入車牌號(例:DS888):n"); gets(p->num); if(Enter->top<MAX) /*車場未滿,車進(jìn)車場*/ Enter->

18、;top+; printf("n車輛停入車場第%d位置.nn",Enter->top); Enter->stackEnter->top=p; return(1); else /*車場已滿,車進(jìn)便道*/ printf("n對不起,車場已滿,該車須在便道等待!n"); t=(QueueNode *)malloc(sizeof(QueueNode); j+; t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; printf("車進(jìn)入%d號便道nn&q

19、uot;,j); return(1); void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)/*車輛離開*/ int i, room; CarNode *p,*t; QueueNode *q; /*判斷車場內(nèi)是否有車*/ if(Enter->top>0) /*有車*/ while(1) /*輸入離開車輛的信息*/ printf("n請輸入車在車場的位置/1-%d/:",Enter->top); scanf("%d",&room); if(room>

20、=1&&room<=Enter->top) break; while(Enter->top>room) /*車輛離開*/ printf("n牌號為%s的車需要讓道n",Enter->stackEnter->top); Temp->top+; Temp->stackTemp->top=Enter->stackEnter->top; Enter->stackEnter->top=NULL; Enter->top-; p=Enter->stackEnter->top;

21、Enter->stackEnter->top=NULL; Enter->top-; while(Temp->top>=1) Enter->top+; Enter->stackEnter->top=Temp->stackTemp->top; Temp->stackTemp->top=NULL; Temp->top-; PRINT(p); /*判斷通道上是否有車及車站是否已滿*/ if(W->head!=W->rear)&&Enter->top<MAX) /*便道的車輛進(jìn)入車場*/

22、 q=W->head->next; t=q->data; Enter->top+; printf("n便道的%s號車進(jìn)入車場第%d位置.n",t->num,Enter->top); W->head->next=q->next; if(q=W->rear) W->rear=W->head; Enter->stackEnter->top=t; free(q); else printf("n對不起,便道里沒有車.n"); else printf("n對不起,車場里沒有車."); /*沒車*/ void List1(SeqStackCar *S) /*列表顯示車場信息*/ int i; if(S->top>0) /*判斷車站內(nèi)是否有車*/ printf("n車場:"); printf("n 位置 車牌號n"); for(i=1;i<=S

溫馨提示

  • 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

提交評論