版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)設(shè)計(jì)主題:停車場管理系統(tǒng)目錄 TOC o 1-3 h z u HYPERLINK l _Toc312756983 一、需求分析 PAGEREF _Toc312756983 h 1 HYPERLINK l _Toc312756984 課程設(shè)計(jì) PAGEREF _Toc312756984 h 課題1 HYPERLINK l _Toc312756986 1.2基本要求 PAGEREF _Toc312756986 h 1 HYPERLINK l _Toc312756987 1.4課程設(shè)計(jì)理念 PAGEREF _Toc312756987 h 1 HYP
2、ERLINK l _Toc312756988 1.5軟件運(yùn)維工具 PAGEREF _Toc312756988 h 1 HYPERLINK l _Toc312756989 2.外形設(shè)計(jì) PAGEREF _Toc312756989 h 1 HYPERLINK l _Toc312756990 2.1方案總體說明 PAGEREF _Toc312756990 h 1 HYPERLINK l _Toc312756991 2.2結(jié)構(gòu)說明 PAGEREF _Toc312756991 h 1 HYPERLINK l _Toc312756992 2.3算法設(shè)計(jì)思路及流程圖 PAGEREF _Toc31275699
3、2 h 2 HYPERLINK l _Toc312756993 3.詳細(xì)設(shè)計(jì) PAGEREF _Toc312756993 h 6 HYPERLINK l _Toc312756994 3.1車輛到港登記 PAGEREF _Toc312756994 h 6 HYPERLINK l _Toc312756995 3.2車輛發(fā)車記錄 PAGEREF _Toc312756995 h 6 HYPERLINK l _Toc312756996 3.3車輛信息顯示 PAGEREF _Toc312756996 h 8 HYPERLINK l _Toc312756997 四、調(diào)試及操作說明 PAGEREF _Toc3
4、12756997 h 10 HYPERLINK l _Toc312756998 總結(jié) PAGEREF _Toc312756998 h 12 HYPERLINK l _Toc312756999 到 PAGEREF _Toc312756999 h 12 HYPERLINK l _Toc312757000 參考文獻(xiàn) PAGEREF _Toc312757000 h 121、需求分析課程設(shè)計(jì)主題設(shè)計(jì)一個(gè)停車場管理系統(tǒng)來模擬停車場的運(yùn)行。1.2 基本要求利用數(shù)據(jù)結(jié)構(gòu)的知識(shí),需要用棧來模擬停車場,用隊(duì)列來模擬停車場外的人行道。需要處理的數(shù)據(jù)元包括三個(gè)數(shù)據(jù)項(xiàng):車輛“到站”或“離站”信息、車牌和到站或離站時(shí)間;
5、1.3 課程設(shè)計(jì)的任務(wù)系統(tǒng)主要實(shí)現(xiàn)以下功能:1、車輛到站信息登記:包括車牌號(hào)、到站時(shí)間、停車場內(nèi)停車位置等;2、車輛出發(fā)記錄:包括出發(fā)時(shí)間、在停車場停留時(shí)間、停車費(fèi)等;3、信息顯示:顯示到車時(shí)的停車場、到站緊急位置等基本信息;1.4 課程設(shè)計(jì)理念完成車輛進(jìn)出停車場的程序應(yīng)用棧是一個(gè)數(shù)據(jù)進(jìn)出棧的過程。如果停車場(堆)滿了,則將車輛放在人行道(隊(duì)列)上;使用費(fèi)在車輛離開時(shí)計(jì)算,人行道上的第一輛車停在該車輛位置。1.5 軟件運(yùn)行開發(fā)工具1 、 Windows 2000或以上操作系統(tǒng)2.Visual C+6.0開發(fā)環(huán)境2. 外形設(shè)計(jì)2.1 方案總體說明程序使用了一個(gè)類,五個(gè)結(jié)構(gòu)(車輛信息,時(shí)間信息,棧
6、,鏈表和隊(duì)列),兩個(gè)棧(其中一個(gè)是臨時(shí)棧),以及八個(gè)函數(shù)(棧和隊(duì)列初始化,車輛到達(dá))。主要功能。和出發(fā)登記,收費(fèi)系統(tǒng),車輛和人行道列表,總顯示列表)。2.2 結(jié)構(gòu)說明2.2.1 車輛信息的表示車輛可以看成一個(gè)節(jié)點(diǎn),設(shè)計(jì)成一個(gè)結(jié)構(gòu),車輛信息包括:車牌、進(jìn)站時(shí)間和離開停車場的時(shí)間。定義如下:結(jié)構(gòu) CarNode字符數(shù)10; /車牌時(shí)間到達(dá); / 到達(dá)時(shí)間時(shí)間休假; / 離開時(shí)間;2.2.2 時(shí)間、棧和隊(duì)列的定義時(shí)間用小時(shí)和分鐘表示,有兩部分?jǐn)?shù)據(jù),所以設(shè)計(jì)了兩個(gè)變量分別存儲(chǔ)小時(shí)和分鐘。定義如下:結(jié)構(gòu)時(shí)間小時(shí);最小;停車場表示為堆棧:結(jié)構(gòu) SeqStack節(jié)點(diǎn)CarNode*元素 n +1; / 順序
7、棧詮釋頂部;人行道上的車輛由隊(duì)列表示:struct QueueNode carCarNode *數(shù)據(jù); / 臨時(shí)存儲(chǔ)人行道上汽車的鏈表結(jié)構(gòu)QueueNodecar *next;結(jié)構(gòu)鏈接隊(duì)列節(jié)點(diǎn)隊(duì)列節(jié)點(diǎn) *前面; /設(shè)置頭指針,尾指針隊(duì)列節(jié)點(diǎn)*后;;2.3算法設(shè)計(jì)思路及流程圖2.3.1 主要功能功能說明1. void CarStack(SeqStackNode *s) /車輛節(jié)點(diǎn)入棧當(dāng)堆棧未滿時(shí),將到達(dá)的車輛推入堆棧。2. void CarQueue(LinkQueueNode *q) /車輛節(jié)點(diǎn)入隊(duì)當(dāng)堆滿時(shí),車輛進(jìn)入人行道上的隊(duì)列。3. void Arrival(SeqStackNode *E
8、nterCar,LinkQueueNode *QueueCar) /車輛到達(dá)登記當(dāng)車輛到達(dá)時(shí),首先登記車輛牌照。然后判斷停車場是否已滿,未滿入棧,滿時(shí)停在人行道上,入隊(duì)。4. voidLeave(SeqStackNode*LeaveCar,SeqStackNodeTempStack,LinkQueueNode *QueueCar) /車輛出站處理通過輸入車輛離開車輛的位置,然后調(diào)用Charge (CarNode *p)函數(shù)進(jìn)行充電處理。然后判斷人行道上是否有車,如果有,將人行道上的車放入停車場。5. void List(SeqStackNode s, LinkQueueNode q) /顯示停
9、車場和人行道上車輛的情況使用 switch() 函數(shù)選擇在停車場或人行道上顯示車輛狀態(tài)。包括對以下兩個(gè)子函數(shù)的調(diào)用: void List1(SeqStackNode *s)和void List2(LinkQueueNode *q) /分別顯示停車場和人行道上的車輛情況6. void Charge (CarNode *p ) / 車輛離場費(fèi)該函數(shù)由車輛離開的函數(shù)調(diào)用,費(fèi)用以分鐘為單位計(jì)算,但只能計(jì)算當(dāng)天的費(fèi)用,如果是第二天,賬單就會(huì)為負(fù)數(shù)或減少。即只能當(dāng)天停車,當(dāng)天開車離開。2.3.2 主要模塊算法描述及流程圖1、車輛到達(dá):先定義一個(gè)stack和queue的結(jié)構(gòu)體指針為:*p和*t,然后申請一個(gè)
10、車輛信息的存儲(chǔ)空間,賦值給棧指針。車輛到達(dá)時(shí),輸入車牌號(hào),使用if(Enter Car - top +1 top = 0)保證棧不為空,然后使用while(1 )確保輸入車輛離開地點(diǎn)的合法性。如果不合法,則會(huì)顯示輸入錯(cuò)誤,需要重新輸入。通過if(loc=1&loctop+1)判斷離開車輛的位置,如果是中間位置,則使用臨時(shí)開在棧前的車。待要開的車開出來后,再看臨時(shí)堆里的車進(jìn)停車場,調(diào)用Charge (p)函數(shù)計(jì)算停車時(shí)間顯示費(fèi)。然后使用if(QueueCar - front != QueueCar - rear) & LeaveCar - top n)語句判斷人行道上是否有車。如果有車,應(yīng)顯示進(jìn)
11、入停車場的汽車的車牌號(hào),并登記進(jìn)入時(shí)間。并執(zhí)行相應(yīng)的出列和推送操作。N車輛進(jìn)停車場是否有車進(jìn)入停車場記錄信息回主菜單進(jìn)入便道記錄信息YN車輛進(jìn)停車場是否有車進(jìn)入停車場記錄信息回主菜單進(jìn)入便道記錄信息Y圖 2.1 車輛進(jìn)入流程車輛離開車輛離開停車場有車返回主菜單離開計(jì)算費(fèi)用釋放車位便道有車第一輛進(jìn)入停車場記錄信息有沒有有沒有圖 2.2 車輛出發(fā)流程2.3.3 整體模塊流程圖開始開始初始化兩個(gè)棧Enter和Temp與一個(gè)隊(duì)列Wait。進(jìn)入主菜單車輛到達(dá)車輛離開退出loc前車輛進(jìn)臨時(shí)棧對loc計(jì)費(fèi)便道車信息車場內(nèi)信息判便道是否有車車場是否為空列表顯示棧EnterCar元素出棧隊(duì)列中元素進(jìn)棧對列Wai
12、tCar中元素出隊(duì)元素進(jìn)棧EnterCar便道車進(jìn)車場元素進(jìn)隊(duì)列WaitCar判斷棧是否為滿結(jié)束退出列表顯示是否否是否是3. 詳細(xì)設(shè)計(jì)根據(jù)功能模塊的描述,主要實(shí)現(xiàn)三個(gè)功能3.1 車輛到港登記void Arrival(SeqStackNode *EnterCar,LinkQueueNode *QueueCar) /車輛進(jìn)入車節(jié)點(diǎn) *s; /定義一個(gè)指向傳入車輛的指針隊(duì)列節(jié)點(diǎn)車 *q; /定義一個(gè)指針,指向進(jìn)入人行道的汽車s = 新汽車節(jié)點(diǎn); /最后一個(gè)連接到隊(duì)列頭節(jié)點(diǎn)停車場的汽車節(jié)點(diǎn)cout s - 數(shù)字;if(EnterCar - top+1 頂部+; /初始指針為-1,加1coutn 車輛在
13、 top+1 位置。endl;couts - 到達(dá).小時(shí);cins - 到達(dá).min;EnterCar - 元素EnterCar - top = s; /給棧元素加1返回 1;別的coutn車輛必須在人行道上等候,當(dāng)有車位時(shí)進(jìn)入停車場! 數(shù)據(jù) = s; /鏈表指針加1q - 下一個(gè) = NULL;QueueCar - 后方 - 下一個(gè) = q; /隊(duì)列進(jìn)入一個(gè)元素QueueCar - 后方 = q;返回0;3.2 車輛發(fā)車記錄void Leave(SeqStackNode *LeaveCar,SeqStackNode *TempStack,LinkQueueNode *QueueCar) /車
14、輛離開國際定位;汽車節(jié)點(diǎn) *p,*t; /定義兩個(gè)車輛信息指針,一個(gè)用于存放下車信息; one用于存放人行道上第一輛車的臨時(shí)節(jié)點(diǎn),存放在棧中隊(duì)列節(jié)點(diǎn)車 *q;if(LeaveCar - top 0) /判斷停車場是否為空而(1)coutn請輸入汽車在停車場的位置/1- toploc;if(loc = 1 & loc top)休息;別的cout輸入錯(cuò)誤,請重試! top loc) /驅(qū)動(dòng)要?jiǎng)h除的車輛后面的車進(jìn)入臨時(shí)棧臨時(shí)堆棧-頂部+;TempStack - stackTempStack - top = LeaveCar - stackLeaveCar - top;LeaveCar - 堆棧Lea
15、veCar - top = NULL;離開汽車-頂部-;p = LeaveCar - 堆棧LeaveCar - top; /將要?jiǎng)h除的車輛節(jié)點(diǎn)分配給pLeaveCar - 堆棧LeaveCar - top = NULL;離開汽車-頂部-;while(TempStack - top = 1) /將臨時(shí)棧中的車輛放入停車場離開汽車-頂部+;LeaveCar - stackLeaveCar - top = TempStack - stackTempStack - top;TempStack - 堆棧TempStack - 頂部 = NULL;臨時(shí)堆棧-頂部-;收費(fèi)(p); /調(diào)用計(jì)費(fèi)系統(tǒng)if(Que
16、ueCar - front != QueueCar - rear) & LeaveCar - top 前 - 下一個(gè);t = q - 數(shù)據(jù);離開汽車-頂部+;coutn 人行道的“ 號(hào)”車在“ top”位置進(jìn)入停車場。endl;coutn number 車號(hào)進(jìn)入停車場的時(shí)間為: leave.hour: leave.分鐘 前 - 下一個(gè) = q - 下一個(gè);如果(q = QueueCar - 后部)QueueCar - 后部 = QueueCar - 前部;LeaveCar - 堆棧LeaveCar - top = t;刪除q;別的coutn人行道上沒有汽車。nendl;別的coutn停車場沒有
17、車。頂部 0)coutn 倉庫列表:endl;coutn位置到達(dá)時(shí)間車牌號(hào)nendl;for(int i = 1; i top; i+)cout i;coutt stacki -reach.hour:堆棧i - 到達(dá).min;coutt stacki - numberendl;別的coutn停車場沒有車。 前面 - 下一個(gè);如果(q - 前!= q - 后)coutn 等待車輛的車牌為:endl;而(p!= NULL)cout 數(shù)據(jù) - 數(shù)字 下一個(gè);別的coutn人行道上沒有車。endl;void List(SeqStackNode s,LinkQueueNode q) /顯示選擇列表整數(shù)選
18、擇;詮釋條件 = 1;而(條件)cout *endl;coutn 1. 停車場列表n 2. 進(jìn)入道路列表n 3. 返回主菜單nendl;cout *endl;cout選擇;如果(選擇 = 1 & 選擇 = 3)休息;別的coutn 請輸入:1-3:;switch(choice) /列表函數(shù)調(diào)用情況1:List1(&s);休息;案例2:列表2(&q);休息;案例3:條件 = 0;休息;默認(rèn):休息;四、調(diào)試及操作說明執(zhí)行程序后,進(jìn)入歡迎界面:按1進(jìn)入車輛到站登記界面,輸入車牌號(hào)和時(shí)間:圖 4.1 車輛到站登記流程停車場已滿,汽車進(jìn)入人行道:圖 4.2 進(jìn)出人行道的車輛流向按2下車,輸入車輛在停車場
19、的位置和發(fā)車時(shí)間,顯示停車時(shí)間并結(jié)算費(fèi)用,人行道上的第一輛車進(jìn)入停車場,并顯示進(jìn)入時(shí)間:圖 4.3 車輛出發(fā)收費(fèi)流程按3進(jìn)入列表顯示界面,再按1顯示停車場列表:圖 4.4 停車場車輛列表顯示流程再按2進(jìn)入顯示人行道列表顯示:圖 4.5 人行道等候車輛列表顯示流程摘要我在這門課程的設(shè)計(jì)中學(xué)到了很多知識(shí)。將自己在數(shù)據(jù)結(jié)構(gòu)課程中所學(xué)的東西系統(tǒng)地應(yīng)用起來,將所學(xué)的東西綜合運(yùn)用起來,加深了對C+一些知識(shí)的應(yīng)用。在課程設(shè)計(jì)和分析的過程中,遇到了很多問題,寫代碼的時(shí)候問題就更加明顯了。雖然我可以表達(dá)我的想法,但我在編程中總是有很多錯(cuò)誤和錯(cuò)誤。地方。由此可以看出,這門課程的學(xué)習(xí)過程中存在很多不足,需要掌握的也很多。雖然最終完成了整個(gè)程序的分析和設(shè)計(jì),但是我還有很多問題需要改進(jìn),比如結(jié)構(gòu)體的定義,棧和隊(duì)列的初始化和使用,也可以通過類的定義來解決.在不斷的深入研究中得到了很大的改進(jìn)和完善。在這門課程的整體設(shè)計(jì)中,我收獲頗豐,包括堆棧和隊(duì)列的應(yīng)用,鏈
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人信用貸款合同標(biāo)準(zhǔn)版本2篇
- 出國留學(xué)銷售代表銷售總結(jié)報(bào)告
- 二零二五版牙科診所綠色環(huán)保材料使用協(xié)議3篇
- 二零二五年度公租房買賣合同模板及注意事項(xiàng)3篇
- 二零二五年度新能源項(xiàng)目居間合作協(xié)議4篇
- 二零二五年度個(gè)人商鋪買賣合同示范4篇
- 2025版贖樓擔(dān)保與房地產(chǎn)抵押貸款合同6篇
- 2025版物業(yè)管理公司人力資源外包合作協(xié)議書范本3篇
- 二零二五年度移動(dòng)支付解決方案個(gè)人定制開發(fā)合同4篇
- 二零二五年度高空作業(yè)施工圍板租賃與安裝服務(wù)合同2篇
- 人教版六年級(jí)數(shù)學(xué)上冊《應(yīng)用題》專項(xiàng)練習(xí)題(含答案)
- 第三單元 嘆錦繡中華書傳統(tǒng)佳話(教學(xué)設(shè)計(jì)) 三年級(jí)語文下冊大單元教學(xué)(部編版)
- 洛奇化石復(fù)原腳本
- 人教版三年級(jí)上冊豎式計(jì)算練習(xí)300題及答案
- 【“凡爾賽”網(wǎng)絡(luò)流行語的形成及傳播研究11000字(論文)】
- 建筑工程施工安全管理思路及措施
- 領(lǐng)導(dǎo)干部的情緒管理教學(xué)課件
- 初中英語-Unit2 My dream job(writing)教學(xué)課件設(shè)計(jì)
- 供貨方案及時(shí)間計(jì)劃安排
- 唐山動(dòng)物園景觀規(guī)劃設(shè)計(jì)方案
- 中國版梅尼埃病診斷指南解讀
評(píng)論
0/150
提交評(píng)論