停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 課程設(shè)計(jì)_第1頁(yè)
停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 課程設(shè)計(jì)_第2頁(yè)
停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 課程設(shè)計(jì)_第3頁(yè)
停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 課程設(shè)計(jì)_第4頁(yè)
停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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、河南科技大學(xué)課 程 設(shè) 計(jì) 說 明 書課程名稱 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 題 目 停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 院 系 班 級(jí) 學(xué)生姓名 指導(dǎo)教師 日 期 2012.6.19 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書課程設(shè)計(jì)題目停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn)姓名劉鵬飛學(xué)號(hào)專業(yè)班級(jí)計(jì)算機(jī)科學(xué)與技術(shù)101組別組長(zhǎng)同組成員 指導(dǎo)教師劉中華 李艷霞課程設(shè)計(jì)目的進(jìn)一步理解棧和隊(duì)列的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),提高使用理論知識(shí)指導(dǎo)解決實(shí)際問題的能力。課程設(shè)計(jì)環(huán)境386以上的微機(jī)上進(jìn)行,運(yùn)行環(huán)境為TurboC課程設(shè)計(jì)任務(wù)和要求設(shè)計(jì)停車場(chǎng)模擬管理程序,要求實(shí)現(xiàn)4個(gè)大的功能模塊1. 程序功能介紹和操作提示2. 汽車進(jìn)入停車位的管理模塊3. 汽

2、車離開停車位的管理模塊4. 查看停車廠停車狀態(tài)的的查詢模塊參考文獻(xiàn)1、楊秀金等. 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版). 西安電子科技大學(xué)出版社20042、譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì). 清華大學(xué)出版社. 20023、李春保. 數(shù)據(jù)結(jié)構(gòu)教程上機(jī)實(shí)驗(yàn)指導(dǎo). 清華大學(xué)出版社. 2005 時(shí) 間 進(jìn) 度 安 排序號(hào)起止日期工 作 內(nèi) 容1下達(dá)課程設(shè)計(jì)任務(wù)、查閱資料、確定方案 2編寫程序、調(diào)試、運(yùn)行 3驗(yàn)收 4撰寫課程設(shè)計(jì)報(bào)告 5提交文檔停車場(chǎng)模擬管理程序的設(shè)計(jì)與實(shí)現(xiàn) 一、簡(jiǎn)介1設(shè)計(jì)目的:理解線性表的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),進(jìn)一步提高使用理論知識(shí)指導(dǎo)解決實(shí)際問題的能力。2問題的描述:設(shè)停車場(chǎng)只有一個(gè)可停放幾輛汽車的狹長(zhǎng)通道,

3、只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)的先后順序依次排列,若車場(chǎng)內(nèi)已停滿幾輛汽車,則后來(lái)的汽車只能在門外的便道上等候,一旦停車場(chǎng)內(nèi)有車輛開走,則排在便道上的第一輛汽車即可進(jìn)入;當(dāng)停車場(chǎng)內(nèi)某輛汽車要開走時(shí),由于停車場(chǎng)是狹長(zhǎng)的通道,在它之后開入的車輛必須先推出車場(chǎng)為他讓路,待車輛開出大門,為他讓路的車輛再按原次序進(jìn)入車場(chǎng)。試設(shè)計(jì)這樣一個(gè)停車場(chǎng)模擬管理程序。二、數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì):typedef struct time int hour; int min; Time; 定義一個(gè)時(shí)間結(jié)點(diǎn),以便區(qū)分車輛typedef struct node char num10; Time reach; Tim

4、e leave; CarNode; 對(duì)車的信息進(jìn)行定義,且車只有一個(gè)車牌號(hào)typedef struct NODE CarNode *stackMAX+1; int top; SeqStackCar; 定義一個(gè)棧,用以表示車位typedef struct car CarNode *data; struct car *next; QueueNode;/*隊(duì)列元素*/typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar;/*隊(duì)列*/定義一個(gè)隊(duì)列,并定義頭尾指針void InitStack(SeqStackCar *s)

5、/*初始化棧*/ int i; s->top=0; for(i=0;i<=MAX;i+) s->stacks->top=NULL; 創(chuàng)建一個(gè)棧,并初始化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); 創(chuàng)建一個(gè)隊(duì)列,并初始化int Arrival(

6、SeqStackCar *Enter,LinkQueueCar *W) /*車輛到達(dá)*/ CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode); flushall(); printf("n請(qǐng)輸入車的車牌號(hào)(例:豫C1234):"); gets(p->num); if(Enter->top<MAX) /*車場(chǎng)未滿,車進(jìn)車場(chǎng)*/ Enter->top+; printf("n車進(jìn)入站所在的位置%d",Enter->top); printf("n車到達(dá)的

7、時(shí)間:/*:*/"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min); Enter->stackEnter->top=p; return(1); else /*車場(chǎng)已滿,車進(jìn)便道*/ printf("n該車須在便道等待!"); t=(QueueNode *)malloc(sizeof(QueueNode); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return(1

8、); 有車進(jìn)入停車場(chǎng),車場(chǎng)有空位則進(jìn)入,否則進(jìn)入便道等待void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) /*車輛離開*/ int i, room; CarNode *p,*t; QueueNode *q; /*判斷車場(chǎng)內(nèi)是否有車*/ if(Enter->top>0) /*有車*/ while(1) /*輸入離開車輛的信息*/ printf("n請(qǐng)輸入車在車場(chǎng)的位置/1-%d/:",Enter->top); scanf("%d",&room); if

9、(room>=1&&room<=Enter->top) break; while(Enter->top>room) /*車輛離開*/ Temp->top+; Temp->stackTemp->top=Enter->stackEnter->top; Enter->stackEnter->top=NULL; Enter->top-; for(i=1;i<=Temp->top;i+)printf("n車牌號(hào)為%s車為其讓路n",Temp->stacki->num)

10、; p=Enter->stackEnter->top; 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,room); /*判斷通道上是否有車及車站是否已滿*/ if(W->head!=W->rear)&&

11、amp;Enter->top<MAX) /*便道的車輛進(jìn)入車場(chǎng)*/ q=W->head->next; t=q->data; Enter->top+;if (room<Enter->top)for(i=1;i<Enter->top;i+)printf("n車牌號(hào)為%s的車進(jìn)入第%d號(hào)的位置.n",Enter->stacki->num,i); printf("n便道的%s號(hào)車進(jìn)入車場(chǎng)第%d位置.",t->num,Enter->top); printf("n請(qǐng)輸入現(xiàn)在

12、的時(shí)間/*:*/:"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min); W->head->next=q->next; if(q=W->rear) W->rear=W->head; Enter->stackEnter->top=t; free(q); elsefor(i=1;i<=Enter->top;i+)printf("車牌號(hào)為%s的車進(jìn)入第%d號(hào)車位n,Enter->stacki->num,i"

13、;);printf("n便道里沒有車.n"); else printf("n車場(chǎng)里沒有車."); /*沒車*/ 有離開車位:1.進(jìn)行查找,從棧的最后一個(gè)開始查找,若有不符合的,則讓其離開,到輔助棧。2.查找成功,將其出棧,輔助棧中的汽車重新回到車位中;道上的的汽車進(jìn)入車位,將車位補(bǔ)滿。3.查找失敗,進(jìn)行上方的else,將進(jìn)入輔助棧的車重新回到車位中,并顯示沒有此車。flag=1; while(flag) printf("n請(qǐng)選擇 1|2|3:"); printf("n1.車場(chǎng)n2.便道n3.返回n"); while

14、(1) scanf("%d",&tag); if(tag>=1|tag<=3) break; else printf("n請(qǐng)選擇 1|2|3:"); switch(tag) case 1:List1(&S);break; /*列表顯示車場(chǎng)信息*/ case 2:List2(&W);break; /*列表顯示便道信息*/ case 3:flag=0;break; default: break; 用的是一個(gè)switch語(yǔ)句實(shí)現(xiàn)輸入不同的操作選項(xiàng),調(diào)用不同的函數(shù)進(jìn)入不同的操作板塊三. 功能(函數(shù))設(shè)計(jì)一本程序從總體上分為四個(gè)

15、功能模塊,分別為:一:(1)程序功能介紹和操作提示模塊:該模塊是為了讓用戶了解本程序的用途。菜單中含有“汽車進(jìn)入停車位”“汽車離開停車位”“查看停車場(chǎng)狀態(tài)”及“退出”四個(gè)選項(xiàng)。(2)汽車進(jìn)入停車位模塊:在這一模塊主要完成記錄停車場(chǎng)汽車的車牌號(hào)和對(duì)該車進(jìn)入車位過程中狀態(tài)改變的記錄。(3)汽車離開停車位模塊:此模塊主要用來(lái)完成對(duì)停車位上的車停開停車場(chǎng)的過程及其他汽車的狀態(tài)的改變的記錄。(4)查看停車場(chǎng)狀態(tài)的查詢模塊:此模塊主要用來(lái)顯示停車位即便道上的狀態(tài)。二流程圖如下(1)程序功能介紹和操作提示模塊操作選項(xiàng)菜單車輛進(jìn)入車輛離開列表信息退出程序(2)汽車進(jìn)入停車位的管理模塊車輛進(jìn)入車站輸入車牌號(hào)判斷

16、車站內(nèi)車輛是否已滿進(jìn)入便道進(jìn)入車站(3)汽車離開停車位的管理模塊車輛離開車站輸入車牌號(hào)判斷車站是否有該車該車是否在停車位上該車不存在于車站YN該車離開該車不存在YN便道車按順序進(jìn)入 四、界面設(shè)計(jì):2. 系統(tǒng)界面3.車輛到達(dá)界面本程序所得界面描述如下:1:到達(dá)汽車。2:離開汽車。3:列表信息。4:退出程序。-請(qǐng)選擇一個(gè)數(shù) 1/2/3/4 :可以清楚地顯示車輛的狀態(tài),而且簡(jiǎn)單易懂。五、程序設(shè)計(jì):Main Check、ArrivalLeave輸入車牌號(hào)輸入車牌號(hào)退出程序便道信息站內(nèi)信息N該車是否存在Y判斷車站內(nèi)車輛是否已滿該車不存在該車離開進(jìn)入車站進(jìn)入便道其他車按順序進(jìn)入車站2.主要函數(shù):Arriv

17、al函數(shù):有車輛進(jìn)入停車場(chǎng)的實(shí)現(xiàn)Leave 函數(shù): 有車輛離開停車場(chǎng)的實(shí)現(xiàn)List 函數(shù):對(duì)停車場(chǎng)的車位信息的實(shí)現(xiàn)Print 函數(shù):打印出車的各種信息編寫代碼期間遇到的問題:1. 在定義函數(shù)時(shí),定義了不同的指針,出現(xiàn)了不同的錯(cuò)誤,程序運(yùn)行時(shí)出現(xiàn)定義錯(cuò)誤等錯(cuò)誤信息指示。2. 在車輛進(jìn)出車站時(shí),需要不停的調(diào)用查找函數(shù)以及出棧函數(shù),要進(jìn)行出棧與臨時(shí)棧的數(shù)據(jù)轉(zhuǎn)存,需要設(shè)置不同的標(biāo)志量和判斷函數(shù)進(jìn)行出棧進(jìn)棧的函數(shù)的調(diào)用,此過程細(xì)節(jié)非常復(fù)雜,比較容易出現(xiàn)錯(cuò)誤。解決辦法:通過查找程序中隱藏得錯(cuò)誤,加上重新溫習(xí)C語(yǔ)言和其他資料,進(jìn)一步對(duì)程序有了深入的了解。先在保證各函數(shù)準(zhǔn)確的情況下,調(diào)用函數(shù),畫出程序的流程圖

18、,對(duì)照流程圖進(jìn)行判斷條件的編寫和函數(shù)的調(diào)用。六、運(yùn)行與測(cè)試:1.運(yùn)行結(jié)果如下2、運(yùn)行與測(cè)試期間遇到的問題及其解決辦法。(1).問題1:忽視了車牌號(hào)中含有字母導(dǎo)致剛開始的程序不合題意,只能輸入數(shù)字而無(wú)法輸入字母;通過復(fù)習(xí)C語(yǔ)言知識(shí)及請(qǐng)教別人才得以解決(2)問題2:輸入車牌號(hào)時(shí)不小心加入了運(yùn)算符號(hào),使程序運(yùn)行進(jìn)入死循環(huán);仔細(xì)檢查后,加以修改才得以解決。(3)問題3:出現(xiàn)很多小錯(cuò)誤,通過檢查及請(qǐng)教老師和同學(xué)最后改動(dòng)一處錯(cuò)誤使程序變?yōu)榱苏_(4)問題 4:使用字符串是沒有使用字符串復(fù)制,導(dǎo)致輸出車牌號(hào)只能是一個(gè)字母;通過請(qǐng)教同學(xué)及參考C語(yǔ)言課本最終解決。(5),問題 5:在輸入變量時(shí)沒有注意變量的大小寫,導(dǎo)致程序運(yùn)行錯(cuò)誤,修改后,程序運(yùn)行正常。七、結(jié)論:本程序創(chuàng)建了一個(gè)簡(jiǎn)單的停車場(chǎng)模型,可以生動(dòng)形象的反映車輛進(jìn)場(chǎng)出場(chǎng)的過程。但在車輛出場(chǎng)和便道停車還有待于改善;同時(shí)當(dāng)車輛少于停車位時(shí)汽車出站也需要進(jìn)一步改善

溫馨提示

  • 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)論