版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、停車場(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)通道,只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)的先后順序依次排列,若車場(chǎng)內(nè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ì):(1)為了便于區(qū)分每輛汽車并
2、了解每輛車當(dāng)前所處的位置,需要記錄汽車的牌照號(hào)碼和汽車當(dāng)前的狀態(tài)。(2)為了便于停車場(chǎng)的管理,要為每個(gè)車位分配一個(gè)固定的編號(hào)。(3)當(dāng)停車場(chǎng)的停車位上都已停滿了汽車,又有新的汽車到來時(shí)要把它調(diào)度到便道上,便道上的車輛要按照進(jìn)入便道的先后順序順次序放在便道上,為便道上的每個(gè)位置分配一個(gè)固定的編號(hào)。當(dāng)有車從停車位上離開后,便道上的第一輛汽車就立即進(jìn)入停車位上的某個(gè)車位。(4)當(dāng)某輛車離開停車場(chǎng)的時(shí)候,比他后進(jìn)停車位的車要為他讓路,而且當(dāng)他開走之后讓路的車還要按照原來的停放次序再次進(jìn)入停車位的某個(gè)車位上,為完成這項(xiàng)功能,定義一個(gè)結(jié)構(gòu)體。三、功能(函數(shù))設(shè)計(jì):本程序從總體上分為四個(gè)功能模塊,分別為:(
3、1)程序功能介紹和操作提示模塊(2)汽車進(jìn)入停車位的管理模塊(3)汽車離開停車位的管理模塊(4)查看停車場(chǎng)狀態(tài)的查詢模塊四、界面設(shè)計(jì): 本程序界面本著易于操作簡(jiǎn)單整潔而不失美觀的理念,采用數(shù)字對(duì)應(yīng)功能選項(xiàng),結(jié)合詳細(xì)的操作提示,使得操作方便快捷,界面清晰明朗。五、程序設(shè)計(jì):1車輛進(jìn)入停車場(chǎng)模塊:Arrive函數(shù):有車進(jìn)入停車廠;Enter-toptoproom,車輛出站。W-head!=W-rear)&Enter-toptop0:判斷車站內(nèi)有沒有車,如果Y,用for循環(huán)打印出站內(nèi)的車位和車牌號(hào)的信息;如果N,則輸入車場(chǎng)沒有車,返回List函數(shù)。List2函數(shù):查詢便道信息。w-head!=w-r
4、ear:判斷便道內(nèi)有沒有車,如果Y,用while循環(huán)打印出便道上車的信息;如果N,則輸出便道內(nèi)沒有車,返回List函數(shù)。 六、運(yùn)行與測(cè)試:1、測(cè)試的數(shù)據(jù)及其結(jié)果:(1)前五輛車到達(dá)進(jìn)入停車位:(2)后來的兩輛車在便道等候:(3)牌照為CF003的車離開,CF004,CF005需要讓道,CF006進(jìn)入5號(hào)車位:(4)查詢車場(chǎng)和便道里的信息 (5)退出程序:2、運(yùn)行與測(cè)試期間遇到的問題及其解決辦法。問題1:在車輛離開時(shí)不能顯示車輛讓道的信息; 解決辦法:在離開函數(shù)中一個(gè)while循環(huán)中增加一個(gè)printf語句,通過循環(huán)可以顯示全部需要讓道的車輛。問題2:在進(jìn)行進(jìn)場(chǎng)出場(chǎng)信息的輸入時(shí),只能進(jìn)行一次;
5、解決辦法:設(shè)置一個(gè)標(biāo)志量flag和while循環(huán),在每一次操作后返回到操作步驟。問題3:運(yùn)行顯示程序簡(jiǎn)介后,繼續(xù)輸入時(shí)沒有清屏操作,導(dǎo)致運(yùn)行結(jié)果不方便觀察: 解決辦法:增加getch(); system(cls);語句,實(shí)現(xiàn)按任意鍵繼續(xù),并清屏。七、結(jié)論:本停車場(chǎng)管理系統(tǒng),可以進(jìn)行車輛進(jìn)入停車場(chǎng)和退出停車場(chǎng)以及停車廠內(nèi)部車位和便道上的停車信息的顯示三個(gè)步驟的操作。在車輛進(jìn)入停車場(chǎng)進(jìn)入模塊中,如果進(jìn)入停車場(chǎng)的車輛大于5,即車位里停放的車輛已滿,后面的車自動(dòng)進(jìn)入便道等候;在車輛離開停車場(chǎng)模塊中,在查找車輛過程中如果沒有對(duì)應(yīng)車輛能夠顯示出“對(duì)不起,輸入有誤,請(qǐng)重新輸入!”,并有輔助棧保證從車位上出來
6、的車不會(huì)改變順序;車位出現(xiàn)空位時(shí),便道上的車能自動(dòng)進(jìn)入車位,同時(shí),便道上的車也可以直接離開停車場(chǎng);信息查詢模塊,能夠顯示停車場(chǎng)車位和便道上等待車的信息。并有錯(cuò)誤操作的信息提示。同樣此程序存在一些不足之處。在顯示模塊,沒有顯示出開出停車場(chǎng)車輛的信息,在進(jìn)一步修改補(bǔ)充時(shí),可以添加車輛開出停車場(chǎng)的顯示模塊;車輛的信息過于簡(jiǎn)單,只有一個(gè)車牌,可以添加更加詳細(xì)的車輛信息以及添加收費(fèi)操作等功能。八、設(shè)計(jì)后的思考: 此次課程設(shè)計(jì),付出了很多的時(shí)間和經(jīng)歷,編程過程中,我看到了自己許多不足,例如程序編寫的有點(diǎn)雜亂,造成編譯時(shí)錯(cuò)誤不好找到,沒有足夠的耐心,有點(diǎn)急功近利,修改編譯錯(cuò)誤時(shí)不能做到系統(tǒng)的分析,造成程序越
7、改越亂,影響了情緒,丟掉了信心。同時(shí),我也深切感受到了程序員的艱辛,明白了作為一個(gè)程序員應(yīng)該盡可能的為用戶考慮,縝密的思維,讓程序不斷地人性化,可操作性強(qiáng),界面盡可能的友好,把完美作為自己的目標(biāo)。對(duì)于程序本身,我看到了良好的程序編寫風(fēng)格對(duì)于程序員的重要性,函數(shù)之間調(diào)用的便利與簡(jiǎn)潔,以及循環(huán)套用的魅力之所在??傊?,不管簡(jiǎn)單還是復(fù)雜的程序設(shè)計(jì),都要求扎實(shí)的基礎(chǔ)知識(shí),因?yàn)楦鞣N程序都是由簡(jiǎn)單的一塊塊的函數(shù)結(jié)構(gòu)組成的,并加強(qiáng)實(shí)踐,從程序的編寫中進(jìn)一步加強(qiáng)對(duì)書本知識(shí)的掌握。而且,需要耐心,做程序的編寫時(shí)比較枯燥的,會(huì)出現(xiàn)許多錯(cuò)誤,需要我們細(xì)心并耐心的進(jìn)行修改?;仡櫨幊痰倪^程,我也學(xué)到了許多程序之外的東西,
8、編程的過程對(duì)一個(gè)人的耐心和毅力是一種極大地考驗(yàn),不停地編譯,不停地改錯(cuò),不停地被打擊,信心被一點(diǎn)點(diǎn)的消磨,如果放棄,將前功盡棄。所以我選擇了停一停稍作休息然后堅(jiān)持下去,終于在完成的那一瞬間,內(nèi)心充滿了自豪和成就感。這次任務(wù)完成的過程給我上了生動(dòng)而難忘的一課,面對(duì)一次次的挫折與打擊,我會(huì)選擇咬牙堅(jiān)持;為了遠(yuǎn)方的目標(biāo),我會(huì)不懈的努力,一點(diǎn)點(diǎn)的去接近。參考文獻(xiàn):1譚浩強(qiáng),C語言設(shè)計(jì)(第三版). 北京: 清華大學(xué)出版社, 20052嚴(yán)蔚敏 吳偉民,數(shù)據(jù)結(jié)構(gòu)(C語言版).北京:清華大學(xué)出版社,2007附:源代碼 #include #include #include #include #define MA
9、X 5/*車庫(kù)容量*/ typedef struct node char num10; CarNode;/*車輛信息結(jié)點(diǎn)*/ typedef 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(SeqStackCa
10、r *); /*初始化棧*/ int InitQueue(LinkQueueCar *); /*初始化便道*/ int Arrival(SeqStackCar *,LinkQueueCar *); /*車輛到達(dá)*/ void Leave(SeqStackCar *,SeqStackCar *,LinkQueueCar *); /*車輛離開*/ void List(SeqStackCar,LinkQueueCar); /*顯示存車信息*/ int j=0; void main() SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch;int j=0;
11、 InitStack(&Enter); /*初始化車站*/ InitStack(&Temp); /*初始化讓路的臨時(shí)棧*/ InitQueue(&Wait); /*初始化通道*/ printf(|*|n); printf(|*|n); printf(|* *|n); printf(|*歡迎進(jìn)入停車場(chǎng)管理系統(tǒng)*|n); printf(|* *|n); printf(|*|n); printf(|*|n); printf(|注:本程序操作容易,請(qǐng)注意跟隨操作提示|n); printf(n); printf(請(qǐng)按任意鍵繼續(xù).); getch(); system(cls); while(1) prin
12、tf(請(qǐng)輸入對(duì)應(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&chtop=0; for(i=0;istacks-top=NULL; int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q-head=(QueueNode *)malloc(sizeo
13、f(QueueNode); if(Q-head!=NULL) Q-head-next=NULL; Q-rear=Q-head; return(1); else return(-1); void PRINT(CarNode *p) /*打印出站車的信息*/ printf(n離開車輛的車牌號(hào)為:); puts(p-num); int Arrival(SeqStackCar *Enter,LinkQueueCar *W) /*車輛到達(dá)*/ CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode); flushall(); printf
14、(n請(qǐng)輸入車牌號(hào)(例:DS888):n); gets(p-num); if(Enter-toptop+; printf(n車輛停入車場(chǎng)第%d位置.nn,Enter-top); Enter-stackEnter-top=p; return(1); else /*車場(chǎng)已滿,車進(jìn)便道*/ printf(n對(duì)不起,車場(chǎng)已滿,該車須在便道等待!n); t=(QueueNode *)malloc(sizeof(QueueNode); j+; t-data=p; t-next=NULL; W-rear-next=t; W-rear=t; printf(車進(jìn)入%d號(hào)便道nn,j); return(1); vo
15、id Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W)/*車輛離開*/ int i, room; CarNode *p,*t; QueueNode *q; /*判斷車場(chǎng)內(nèi)是否有車*/ if(Enter-top0) /*有車*/ while(1) /*輸入離開車輛的信息*/ printf(n請(qǐng)輸入車在車場(chǎng)的位置/1-%d/:,Enter-top); scanf(%d,&room); if(room=1&roomtop) break; while(Enter-toproom) /*車輛離開*/ printf(n牌號(hào)為%s的車需要
16、讓道n,Enter-stackEnter-top); 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) Enter-top+; Enter-stackEnter-top=Temp-stackTemp-top; Temp-stackTemp-top=NULL; Temp-top-; PRINT(p); /*
17、判斷通道上是否有車及車站是否已滿*/ if(W-head!=W-rear)&Enter-tophead-next; t=q-data; Enter-top+; printf(n便道的%s號(hào)車進(jìn)入車場(chǎng)第%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對(duì)不起,便道里沒有車.n); else printf(n對(duì)不起,車場(chǎng)里沒有車.); /*沒車*/ void List1(SeqStackCar *S) /*列表顯
18、示車場(chǎng)信息*/ int i; if(S-top0) /*判斷車站內(nèi)是否有車*/ printf(n車場(chǎng):); printf(n 位置 車牌號(hào)n); for(i=1;itop;i+) printf( %d ,i); puts(S-stacki-num); else printf(n車場(chǎng)里沒有車!n); void List2(LinkQueueCar *W) /*列表顯示便道信息*/ QueueNode *p; p=W-head-next; if(W-head!=W-rear) /*判斷通道上是否有車*/ printf(n等待車輛的號(hào)碼為:n); while(p!=NULL) puts(p-data-num); p=p-next; else printf(n便道里沒有車.); void List(SeqStackCar S,LinkQueueCar W) int flag,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遠(yuǎn)程醫(yī)療處方審核制度探討
- 醫(yī)院領(lǐng)導(dǎo)班子患者接待制度
- 港口行業(yè)特種設(shè)備安全管理制度
- 公司業(yè)務(wù)問題處理管理制度
- 企業(yè)內(nèi)部意見反饋制度探討
- 結(jié)核科護(hù)理管理制度
- 緊急事件與災(zāi)難處理管理制度
- 2024年度防火門產(chǎn)品銷售代理與售后服務(wù)合同范本3篇
- 2024年農(nóng)業(yè)綜合開發(fā)田地承包服務(wù)合同3篇
- 2024年度文化創(chuàng)意產(chǎn)業(yè)項(xiàng)目聘用合同(含創(chuàng)意成果保護(hù))3篇
- 招商部月度績(jī)效考核表(KPI)
- 營(yíng)銷渠道和營(yíng)銷渠道管理概述
- 夕會(huì)教案:養(yǎng)成課間文明的好習(xí)慣
- 精品在線開放課程建設(shè)與評(píng)價(jià)標(biāo)準(zhǔn)
- 自主研究開發(fā)項(xiàng)目計(jì)劃書
- 第二十章曲線積分-ppt課件
- 3Q模板IQOQPQ驗(yàn)證方案模版
- T∕CCOA 24-2020 棕櫚仁餅(粕)
- 聚乙烯天然氣管道施工技術(shù)交底(完整版)
- 小學(xué)四年級(jí)奧數(shù)-變化規(guī)律(一)
- 萬達(dá)集團(tuán)薪酬管理制度
評(píng)論
0/150
提交評(píng)論