




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)實驗報告實驗二 停車廠模擬管理程序的設(shè)計與實現(xiàn)本實驗的目的是進(jìn)一步理解線性表的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu),進(jìn)一步提高使 用理論知識指導(dǎo)解決實際問題的能力。一、【問題描述】 設(shè)停車廠只有一個可停放幾輛汽車的狹長通道,且只有一個大門可供汽車 進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)的先后順序依次排列,若車場內(nèi)已停滿幾輛 汽車,則后來的汽車只能在門外的便道上等候,一旦停車場內(nèi)有車開走,則排 在便道上的第一輛車即可進(jìn)入;當(dāng)停車場內(nèi)某輛車要離開時,由于停車場是狹 長的通道,在它之后開入的車輛必須先退出車場為它讓路, 待該車輛開出大門, 為它讓路的車輛再按原次序進(jìn)入車場。在這里假設(shè)汽車不能從便道上開走,試 設(shè)計這樣
2、一個停車廠模擬管理程序。為了以下描述的方便,停車廠的停車場用 “停車位”進(jìn)行敘述,停車廠的便道用“便道”進(jìn)行敘述。二、【數(shù)據(jù)結(jié)構(gòu)設(shè)計】1、為了便于區(qū)分每輛汽車并了解每輛車當(dāng)前所處的位置, 需要記錄汽車的 牌照號碼和汽車的當(dāng)前狀態(tài),所以為汽車定義一個新的類型CAR具體定義如下:typedef structchar *license_plate; /汽車牌照號碼, 定義為一個字符指針類型char state; /汽車當(dāng)前狀態(tài),字符s表示停放在停車位上,/字符p表示停放在便道上,每輛車的初始狀態(tài)用字符i來進(jìn)行表示2、由于車位是一個狹長的通道, 所以不允許兩輛車同時出入停車位, 當(dāng)有 車到來要進(jìn)入停車
3、位的時候也要順次停放,當(dāng)某輛車要離開時,比它后到的車 要先暫時離開停車位,而且越后到的車就越先離開停車位,顯然這和棧的“后 進(jìn)先出”特點相吻合,所以可以使用一個棧來描述停車位。由于停車位只能停放有限的幾輛車,而且為了便于停車廠的管理,為每個 車位要分配一個固定的編號,不妨設(shè)為1、2、3、4、5(可利用數(shù)組的下標(biāo)), 分別表示停車位的1車位、2車位、3車位、4車位。5車位,針對這種情況使 用一個順序棧比較方便,具體定義如下:#define MAX_STOP 5typedef structCAR STOPMAX_STOP; /各/汽車信息的存儲空間int top;/用來指示棧頂位置的靜態(tài)指針STO
4、PPING;3、當(dāng)停車場的停車位上都已經(jīng)停滿了汽車, 又有新的汽車到來時要把它調(diào) 度到便道上,便道上的車輛要按照進(jìn)入便道的先后順序順次存放在便道上,為 便道上的每個位置也分配一個固定的編號,當(dāng)有車從停車位上離開后,便道上 的第一輛汽車就立即進(jìn)入停車位上的某個車位,由于問題描述中限制了便道上 的汽車不能從便道上開走,即便道上的汽車只有在停車位上停放過之后才能離 開停車廠,這樣越早進(jìn)入便道的汽車就越早進(jìn)入停車位,而且每次進(jìn)入停車位 的汽車都是處于便道“最前面”的汽車,顯然,這和隊列的先進(jìn)先出特點相吻 合,所以,這里使用一個順序隊來描述便道,可以利用數(shù)組的下標(biāo)表示便道的 位置,具體定義如下:#def
5、ine MAX_PAVE 100 /*便道不限制停放車輛的數(shù)目,設(shè)為足夠大*/ typedefstructCAR PAVEMAX_PAVE; /各/汽車信息的存儲空間int front,rear; /用來指示隊頭和隊尾位置的靜態(tài)指針PAVEMENT;4、當(dāng)某輛車要離開停車廠的時候, 比它后進(jìn)停車位的車要為它讓路, 而且 當(dāng)它開走之后讓路的車還要按照原來的停放次序再次進(jìn)入停車位的某個車位 上,為了完成這項功能,再定義一個輔助棧,停車位中讓路的車依次“壓入” 輔助棧,待提出開走請求的車開走后再從輔助棧的棧頂依次“彈出”到停車位 中。對輔助棧也采用順序棧,具體定義與停車位棧類似,如下:typedef
6、 structCAR BUFFERMAX_STOP; /各/汽車信息的存儲空間int top; /用來指示棧頂位置的靜態(tài)指針BUFFER;當(dāng)然,輔助棧直接利用在2中定義的類型STOPPIN也是可以的。由于程序的各函數(shù)要對這些數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行操作,而且每次操作的 結(jié)果都要動態(tài)反應(yīng)到以上數(shù)據(jù)結(jié)構(gòu)中,所以在程序設(shè)計的時候使用以上新類型 定義的變量都采用全局變量的形式。三、【功能(函數(shù))設(shè)計】1、本程序從總體上分為四個大的功能模塊: 分別為:程序功能介紹和操作 提示模塊、汽車進(jìn)入停車廠車位的管理模塊、 汽車離開停車廠車位的管理模塊、 查看停車廠停車狀態(tài)的查詢模塊,具體功能描述如下:1)程序功能介紹
7、和操作提示模塊: 此模塊給出程序歡迎信息, 介紹本程序的功能,并給出程序功能所對應(yīng)的鍵盤操作的提示,具體屏幕顯示如下所示:函數(shù)原型為void welcome();2)汽車進(jìn)入停車廠車位的管理模塊:此模塊用來登記停車廠的汽車的車牌 號和對該車的調(diào)度過程并修改該車的狀態(tài),其中調(diào)度過程要以屏幕信息的形式 反饋給用戶來指導(dǎo)用戶對車輛的調(diào)度。例如,當(dāng)前停車位上1、2、3車位分別停放著牌照為JFOO1、JF002、JF003的汽車,便道上無汽車,當(dāng)牌照為JF004的汽車到來后屏幕應(yīng)給出如下提示信息:請輸入新到車輛的車牌號JFQB3停車位的情況L李位-JF0O12車位-JF092痔位-JF093函數(shù)原型為v
8、oid come();此函數(shù)還要調(diào)用其他對于棧和隊列的基本操作3)汽車離開停車廠停車位的管理模塊:此模塊用來為提出離開停車廠的車 輛做調(diào)H-E* S那犍鍵犍作爭01咤廂q掛 key;if(key=C|key=c)come();else if(key=L|key=T)leave();check();else if(key=S|key=s)display(); else welcome();while(key!=Q)&(key!=q);四、【界面設(shè)計】 本程序的界面力求簡潔、友好,每一步需要用戶操作的提示以及每一次用 戶操作產(chǎn)生的調(diào)度結(jié)果都以中文的形式顯示在屏幕上,使用戶對要做什么和已 經(jīng)
9、做了什么一目了然。文字表述精練,準(zhǔn)確。具體設(shè)計可參閱功能設(shè)計中的相 關(guān)部分,這里就不再贅述。五、【編碼實現(xiàn)】略。詳見具體源代碼。六、【運(yùn)行與測試】 對于測試用例的設(shè)計注重所定義的數(shù)據(jù)結(jié)構(gòu)的邊界以及各種數(shù)據(jù)結(jié)構(gòu)共存 的可能性。例如:1、連續(xù)有7輛車到來,牌照號分別為JF001、JF002、JF003、JF004、JF005、JF006、JF007,前5輛車應(yīng)該進(jìn)入停車位15車位,第6、7輛車應(yīng)停入便道 的1、2位置上。2、1中的情況發(fā)生后, 讓牌照號為JF003的汽車從停車廠開走, 應(yīng)顯示JF005、JF004的讓路動作和JF006從便道到停車位上的動作。3、 隨時檢查停車位和便道的狀態(tài), 不應(yīng)
10、該出現(xiàn)停車位有空位而便道上還有 車的情況。4、其他正常操作的一般情況。5、 程序容錯性的測試,當(dāng)按鍵輸入錯誤的時候是否有錯誤提示給用戶指導(dǎo) 用戶正確操作,并作出相應(yīng)處理保證程序健康的運(yùn)行。經(jīng)過反復(fù)的運(yùn)行和測試,程序的容錯性能良好,界面簡潔友好,運(yùn)行穩(wěn)定 可靠,符合實際操作規(guī)范,基本達(dá)到了模擬停車廠管理的要求。七、【實驗完成后的思考】1、 通過本程序熟練掌握了棧和隊列的定義和使用方法,對使用C語言編碼 來驗證數(shù)據(jù)結(jié)構(gòu)的理論知識有了更深層次的理解,達(dá)到了實驗?zāi)康摹?、 通過在設(shè)計過程中的討論和思考,對使用現(xiàn)有知識利用計算機(jī)來解決現(xiàn) 實生活中的實際問題確立了信心,對軟件工程思想和模塊化程序思想有了比
11、較 清晰的理解,為今后的程序設(shè)計奠定了一定的心理和技術(shù)上的準(zhǔn)備。3、 由于時間倉促和個人能力有限, 程序中還有一些需要完善的地方, 例如: 對停放到停車廠的汽車按時間的收費(fèi)管理,程序界面可以使用圖形方式使之更 美觀,使用鼠標(biāo)或菜單方式使之能夠適應(yīng)更多人的使用習(xí)慣。在今后的實驗中 要多多練習(xí)這方面的能力。實驗人:、實驗完成日期:2011年10月20日 實驗報告提交日期:2011年10月26日附 程序代碼:/ test.cpp :定義控制臺應(yīng)用程序的入口點。/#includestdafx.h#include #include #defineMAX_STOP 5#defineMAX_PAVE 100
12、using namespacestd;typedef structstring license_plate; charstate;/汽車牌照號碼,定義為一個字符指針類型/汽車當(dāng)前狀態(tài),字符s表示停放在停車位上,/字符p表示停放在便道上,每輛車的初始狀態(tài)用字符i來進(jìn)行表示CAR;typedef structCAR STOPMAX_STOP/;/各汽車信息的存儲空間int top;/用來指示棧頂位置的靜態(tài)指針STOPPING;typedef structCAR PAVEMAX_PAVE/;/各汽車信息的存儲空間int front,rear;/用來指示隊頭和隊尾位置的靜態(tài)指針PAVEMENT;typ
13、edef structCAR BUFFERMAX_STOP;/各汽車信息的存儲空間int top;/用來指示棧頂位置的靜態(tài)指針BUFFER;STOPPING *s;BUFFER *b;PAVEMENT *p;void welcome( )cout歡迎使用停車場管理系統(tǒng) endl有車到來時請按c鍵 endl有車要走時請按l鍵 endl顯示停車場狀態(tài)請按s鍵 endl要退出程序請按q鍵 endl請選擇您要做的操作 top=-1;return s; int push_stopping(CAR car)if (s-top=MAX_STOP-1) return 0;else s-top+;s-STOPs
14、-top=car; return 1;int pop_stopping(CAR *car)if (s-top=-1)return 0;else *car=s-STOPs-top;s-top-;/初始化“停車位棧”return 1;BUFFER *init_buff( ) /初始化“輔助?!眀=newBUFFER;b-top=-1;return b;int push_buff(CAR car)if (b-top=MAX_STOP-1) return 0;else b-top+; b-BUFFERb-top=car; return 1;int pop_buff(CAR *car)if (b-top
15、=-1)return 0;else *car=b-BUFFERb-top;b-top-;return 1;PAVEMENT *init_pavement( ) /初始化“便道隊列p=newPAVEMENT;p-front=p-rear=MAX_PAVE-1; return p;int In_pavement(CAR car)if (p-rear+1)%MAX_PAVE=p-front) return 0;else p-rear=(p-rear+1)%MAX_PAVE; p-PAVEp-rear=car; return 1;int Out_pavement(CAR *car)if (p-rear
16、%MAX_PAVE=p-front) return 0;else p-front=(p-front+1)%MAX_PAVE; *car=p-PAVEp-front;return 1;int car_come(CAR car)II將pos指定的汽車信息插入停車位棧,并修改該車狀態(tài)car.state= s ;return push_stopping(car);int car_leave() /將pos指定的汽車信息從“停車位?!眲h除,并修改該車狀態(tài)CAR *car= new CAR();int a=pop_stopping(car); coutlicense_plate 離開了了停車場 state
17、= i ;return a;int stop_to_buff() /將pos指定的汽車信息從停車位?!币苿拥健拜o助棧”CAR *car= new CAR();if (pop_stopping(car)if (push_buff(*car)coutlicense_plate 由停車場進(jìn)入了輔助 endl; return 1; elsereturn 0;elsereturn 0;int buff_to_stop() /將pos指定的汽車信息從輔助?!币苿拥健巴\囄粭!盋AR *car= new CAR();if (pop_buff(car)if (push_stopping(*car)coutli
18、cense_plate 由輔助進(jìn)入了停車場 endl; return 1; elsereturn 0;elsereturn 0; int pave_to_stop() /將pos指定的汽車信息從“便道隊列”移動到“停車位?!盋AR *car=new CAR();if (Out_pavement(car)if (push_stopping(*car)coutlicense_plate 由便道進(jìn)入了停車場 car.license_plate;if (s-top=MAX_STOP-1)return In_pavement(car);elsereturn car_come(car);void leave()string license
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國抱壓式液壓閥門測試機(jī)數(shù)據(jù)監(jiān)測研究報告
- 商業(yè)計劃書中的財務(wù)分析
- 商務(wù)合作保密協(xié)議范本(2篇)
- 陜西省渭南市2022版八年級下學(xué)期物理期末考試試卷D卷
- 2025至2030年中國床榻數(shù)據(jù)監(jiān)測研究報告
- 二零二五年度餐飲店面租賃合同含特色餐飲培訓(xùn)課程
- 2025年零星用工合同范本:航空航天工程現(xiàn)場技術(shù)支持人員短期勞動合同
- 二零二五年度教師學(xué)生綜合素質(zhì)評價師徒協(xié)議
- 二零二五年度健康醫(yī)療中介代理合同
- 2025年度精裝帶家電購房意向協(xié)議
- 《自主創(chuàng)新對于鋼結(jié)構(gòu)發(fā)展的重要性》2400字
- 食品采購與進(jìn)貨臺賬
- GB/T 24353-2022風(fēng)險管理指南
- GB/T 6284-2006化工產(chǎn)品中水分測定的通用方法干燥減量法
- GB/T 3003-2017耐火纖維及制品
- GB/T 22080-2016信息技術(shù)安全技術(shù)信息安全管理體系要求
- GB/T 13915-2013沖壓件角度公差
- 制藥工程導(dǎo)論課件
- 瑜伽師地論(完美排版全一百卷)
- 槳聲燈影里的秦淮河1-課件
- 蘇教版五年級下冊科學(xué)知識點全冊
評論
0/150
提交評論