版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)停車場(chǎng)管理系統(tǒng)目錄TOC\o"1-2"\h\u一、課設(shè)目的2二、問題描述2三、基本要求2四、詳細(xì)設(shè)計(jì)3〔1原理分析3〔2功能模塊3〔3用戶手冊(cè)6〔4流程圖6〔5測(cè)試用例7〔6測(cè)試目的7〔7測(cè)試要求7五、程序源碼7六、測(cè)試結(jié)果13七、課設(shè)總結(jié)15八、參考文獻(xiàn)15一、課設(shè)目的了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法.具備初步的獨(dú)立分析和設(shè)計(jì)能力;初步掌握軟件開發(fā)過程中的問題分析.系統(tǒng)設(shè)計(jì).程序編碼.測(cè)試等基本方法和技能;提高綜合應(yīng)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)和一般規(guī)范進(jìn)行軟件開發(fā).培養(yǎng)軟件工作者所應(yīng)具有的科學(xué)的工作方法和作風(fēng)。二、問題描述設(shè)停車場(chǎng)內(nèi)只有一個(gè)可停放n輛汽車的狹長(zhǎng)通道.且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序.依次由北向南排列〔大門在最南端.最先到達(dá)的第一輛車停放在車場(chǎng)的最北端.若車場(chǎng)內(nèi)已停滿n輛汽車.則后來(lái)的汽車只能在門外的便道上等候.一旦有車開走.則排在便道上的第一輛車即可開入;當(dāng)停車場(chǎng)內(nèi)某輛車要離開時(shí).在它之后開入的車輛必須先退出車場(chǎng)為它讓路.待該輛車開出大門外.其它車輛再按原次序進(jìn)入車場(chǎng).每輛停放在車場(chǎng)的車在它離開停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。三、基本要求以棧模擬停車場(chǎng).以隊(duì)列模擬車場(chǎng)外的便道.按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車"到達(dá)"或"離去"信息、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻.對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(dá).則輸出汽車在停車場(chǎng)內(nèi)或便道上的停車位置;若是車離去.則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用〔在便道上停留的時(shí)間不收費(fèi)。棧以順序結(jié)構(gòu)實(shí)現(xiàn).隊(duì)列以鏈表實(shí)現(xiàn)。詳細(xì)設(shè)計(jì)〔1原理分析:棧是一種只能在一段進(jìn)行輸入和輸出操作的線性表.表尾稱為棧頂.表頭稱為棧底。棧的主要特點(diǎn)是"后進(jìn)先出".即后進(jìn)棧的元素先處理.停車場(chǎng)的容量即為棧的存儲(chǔ)空間。隊(duì)列是限定僅能在表的一段進(jìn)行插入.在表的另一端進(jìn)行刪除的線性表。隊(duì)列中可以插入的一段稱為隊(duì)尾.可以刪除的一端稱為隊(duì)首。隊(duì)列的主要特點(diǎn)是"先進(jìn)先出"。停車場(chǎng)管理系統(tǒng)是充分利用數(shù)據(jù)結(jié)構(gòu)中棧和隊(duì)列的思想實(shí)現(xiàn)的.用到兩個(gè)堆棧.一個(gè)用來(lái)模擬停車場(chǎng).另一個(gè)為臨時(shí)棧.存儲(chǔ)為離開停車場(chǎng)的車輛讓道的其他車輛;一個(gè)隊(duì)列結(jié)構(gòu).存儲(chǔ)便道的車輛信息。typedefstruct{//定義棧.表示停車場(chǎng)CarNode*base;//停車場(chǎng)的堆棧底CarNode*top;//停車場(chǎng)的堆棧頂intstacksize;//停車場(chǎng)的容量}Park;typedefstruct{//定義隊(duì)列.表示便道CarPtrfront;//便道的隊(duì)列的隊(duì)頭CarPtrrear;//便道的隊(duì)列的隊(duì)尾intlength;}Shortcut;〔2功能模塊:車輛到達(dá):a、若棧不滿.車輛進(jìn)棧.停到停車場(chǎng);b、若棧滿.車輛入隊(duì).停到便道;StatusArrival<Park&P,Shortcut&S>{intnumber,ar_time;//對(duì)進(jìn)站車輛的處理:printf<"請(qǐng)輸入車牌號(hào):">;//記錄車牌號(hào).時(shí)間.并根據(jù)停車場(chǎng)scanf<"%d",&number>;//是否滿來(lái)判斷入棧還是入隊(duì)列printf<"進(jìn)場(chǎng)的時(shí)刻:">;scanf<"%d",&ar_time>;if<P.stacksize<SIZE>{CarNodec;c.number=number;c.ar_time=ar_time;Push<P,c>;printf<"該車應(yīng)停在第%d號(hào)車道.\n",P.stacksize>;}else{EnQueue<S,number,ar_time>;printf<"停車場(chǎng)已滿,請(qǐng)暫時(shí)停在便道的第%d個(gè)位置.\n",S.length>;}returnOK;}車輛離開:如果隊(duì)列不空且棧不滿.隊(duì)列上的車出隊(duì)入棧。StatusLeave<Park&P,Park&P1,Shortcut&S>{intnumber,le_time,flag=1,money,ar_time;//對(duì)離站車輛的處理:printf<"請(qǐng)輸入車牌號(hào):">;//記錄車牌號(hào).時(shí)間.停車費(fèi)用scanf<"%d",&number>;printf<"出場(chǎng)的時(shí)刻:">;scanf<"%d",&le_time>;CarNodee,m;CarPtrw;while<P.stacksize>{Pop<P,e>;if<e.number==number>{flag=0;money=<le_time-e.ar_time>*PRICE;ar_time=e.ar_time;break;}Push<P1,e>;//后面的車開出停車場(chǎng)讓路.進(jìn)入備用棧}while<P1.stacksize>{Pop<P1,e>;Push<P,e>;//備用棧中的車開入停車場(chǎng)}if<flag==0>{if<S.length!=0>{DeQueue<S,w>;m.ar_time=le_time;m.number=w->number;Push<P,m>;//便道中的車開入停車場(chǎng)free<w>;printf<"車牌號(hào)為%d的車已由便道進(jìn)入停車場(chǎng)\n",m.number>;}printf<"停車費(fèi)為%d,占用車位數(shù)為%d\n",money,P.stacksize>;}else{printf<"停車場(chǎng)不存在牌號(hào)為%d的車\n",number>;}returnOK;}〔3用戶手冊(cè):①輸出菜單選項(xiàng);請(qǐng)選擇<A,D,E>:②如果選擇A.即車輛到達(dá):若棧不滿.車輛進(jìn)棧.停到停車場(chǎng);若棧滿.車輛入隊(duì).停到便道;③如果選擇D.即車輛離開:計(jì)算時(shí)間及費(fèi)用;如果隊(duì)列不空且棧不滿.隊(duì)列上的車出隊(duì)入棧;④如果選擇E.則退出程序?!?流程圖:圖一、函數(shù)關(guān)系調(diào)用圖圖二、操作流程圖〔5測(cè)試用例:〔‘A’.1.5.〔‘A’.2.10.〔‘D’.1.15.〔‘A’.3.20.〔‘A’.4.25.〔‘A’.5.30.〔‘D’.2.35.〔‘D’.4.40.〔‘E’.0.0。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車"到達(dá)"或"離去"信息、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻.其中.‘A’表示到達(dá).‘D’表示離去.‘E’表示輸入結(jié)束?!?測(cè)試目的:測(cè)試菜單顯示方法.到達(dá)方法和離開方法能否正確完成.時(shí)間和費(fèi)用計(jì)算是否正確?!?測(cè)試要求:測(cè)試用例要合理并足夠.既要有正確用例.也要有錯(cuò)誤用例.檢驗(yàn)程序的正確性和健壯性。五、程序源碼#include<stdio.h>#include<stdlib.h>#include<malloc.h>#defineOK1//函數(shù)返回狀態(tài)代碼.宏定義#defineERROR0#defineTRUE1#defineFALSE0#defineINFEASIBLE-1#defineOVERFLOW-2#defineSIZE2//停車場(chǎng)位置數(shù)#definePRICE2typedefintStatus;//棧,模擬停車場(chǎng)typedefstructCar1{//定義一個(gè)結(jié)構(gòu)體來(lái)表示停車場(chǎng)中的車intnumber;//汽車車號(hào)intar_time;//汽車到達(dá)時(shí)間}CarNode;typedefstruct{//定義棧.表示停車場(chǎng)CarNode*base;//停車場(chǎng)的堆棧底CarNode*top;//停車場(chǎng)的堆棧頂intstacksize;//停車場(chǎng)的容量}Park;typedefintStatus;//隊(duì)列,模擬便道typedefstructCar2{//用另一個(gè)結(jié)構(gòu)體來(lái)表示便道中停放的車intnumber;//汽車車號(hào)intar_time;//汽車到達(dá)時(shí)間structCar2*next;}*CarPtr;typedefstruct{//定義隊(duì)列.表示便道CarPtrfront;//便道的隊(duì)列的隊(duì)頭CarPtrrear;//便道的隊(duì)列的隊(duì)尾intlength;}Shortcut;StatusInitStack<Park&P>{//初始化停車場(chǎng)P.base=<CarNode*>malloc<SIZE*sizeof<Car1>>;if<!P.base>exit<OVERFLOW>;P.top=P.base;P.stacksize=0;returnOK;}StatusPush<Park&P,CarNodee>{//車進(jìn)入停車場(chǎng).棧的輸入操作*P.top++=e;++P.stacksize;returnOK;}StatusPop<Park&P,CarNode&e>{if<P.top==P.base>//車離開停車場(chǎng).棧的輸出操作printf<"停車場(chǎng)為空.">;else{e=*--P.top;--P.stacksize;}returnOK;}StatusInitQueue<Shortcut&S>{S.front=S.rear=<CarPtr>malloc<sizeof<Car2>>;//初始化便道if<!S.front||!S.rear>exit<OVERFLOW>;S.front->next=NULL;S.length=0;returnOK;}StatusEnQueue<Shortcut&S,intnumber,intar_time>{CarPtrp;//車進(jìn)入便道.隊(duì)列的輸入操作p=<CarPtr>malloc<sizeof<Car2>>;if<!p>exit<OVERFLOW>;p->number=number;p->ar_time=ar_time;p->next=NULL;S.rear->next=p;S.rear=p;++S.length;returnOK;}StatusDeQueue<Shortcut&S,CarPtr&w>{if<S.length==0>//車離開便道.隊(duì)列的輸出操作printf<"通道為空.">;else{w=S.front->next;S.front->next=S.front->next->next;--S.length;}returnOK;}StatusArrival<Park&P,Shortcut&S>{intnumber,ar_time;//對(duì)進(jìn)站車輛的處理:printf<"請(qǐng)輸入車牌號(hào):">;//記錄車牌號(hào).時(shí)間.并根據(jù)停車場(chǎng)scanf<"%d",&number>;//是否滿來(lái)判斷入棧還是入隊(duì)列printf<"進(jìn)場(chǎng)的時(shí)刻:">;scanf<"%d",&ar_time>;if<P.stacksize<SIZE>{CarNodec;c.number=number;c.ar_time=ar_time;Push<P,c>;printf<"該車應(yīng)停在第%d號(hào)車道.\n",P.stacksize>;}else{EnQueue<S,number,ar_time>;printf<"停車場(chǎng)已滿,請(qǐng)暫時(shí)停在便道的第%d個(gè)位置.\n",S.length>;}returnOK;}StatusLeave<Park&P,Park&P1,Shortcut&S>{intnumber,le_time,flag=1,money,ar_time;//對(duì)離站車輛的處理:printf<"請(qǐng)輸入車牌號(hào):">;//記錄車牌號(hào).時(shí)間.停車費(fèi)用scanf<"%d",&number>;printf<"出場(chǎng)的時(shí)刻:">;scanf<"%d",&le_time>;CarNodee,m;CarPtrw;while<P.stacksize>{Pop<P,e>;if<e.number==number>{flag=0;money=<le_time-e.ar_time>*PRICE;ar_time=e.ar_time;break;}Push<P1,e>;//后面的車開出停車場(chǎng)讓路.進(jìn)入備用棧}while<P1.stacksize>{Pop<P1,e>;Push<P,e>;//備用棧中的車開入停車場(chǎng)}if<flag==0>{if<S.length!=0>{DeQueue<S,w>;m.ar_time=le_time;m.number=w->number;Push<P,m>;//便道中的車開入停車場(chǎng)free<w>;printf<"車牌號(hào)為%d的車已由便道進(jìn)入停車場(chǎng)\n",m.number>;}printf<"停車費(fèi)為%d,占用車位數(shù)為%d\n",money,P.stacksize>;}else{printf<"停車場(chǎng)不存在牌號(hào)為%d的車\n",number>;}returnOK;}intmain<>{intm=1;charflag;//選項(xiàng)ParkP,Q;ShortcutS;InitStack<P>;InitStack<Q>;InitQueue<S>;while<
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025安拆分公司合同管理制度
- 二零二五年度解除勞動(dòng)合同經(jīng)濟(jì)補(bǔ)償金核算與員工培訓(xùn)協(xié)議3篇
- 二零二五年度股權(quán)協(xié)議書大全:股權(quán)投資風(fēng)險(xiǎn)控制協(xié)議3篇
- 二零二五年度子女對(duì)父母生活照料與醫(yī)療看護(hù)綜合服務(wù)協(xié)議2篇
- 2025年度連鎖藥店品牌授權(quán)與轉(zhuǎn)讓協(xié)議書3篇
- 二零二五年度新型醫(yī)療設(shè)備價(jià)格保密合同3篇
- 2025年度股東退出與知識(shí)產(chǎn)權(quán)轉(zhuǎn)讓協(xié)議2篇
- 二零二五年度農(nóng)業(yè)科技企業(yè)員工勞動(dòng)合同規(guī)范模板2篇
- 2025年度智能車庫(kù)租賃合同模板(含車位租賃與停車場(chǎng)環(huán)境改善)3篇
- 2025年度新能源發(fā)電項(xiàng)目轉(zhuǎn)讓合同2篇
- 2024年房屋頂賬協(xié)議模板(二篇)
- 美國(guó)史智慧樹知到期末考試答案章節(jié)答案2024年?yáng)|北師范大學(xué)
- 售后服務(wù)方案及運(yùn)維方案
- 機(jī)加工工作計(jì)劃安排
- 2024年巴西手游市場(chǎng)市場(chǎng)前景及投資研究報(bào)告
- 2024年云南昆明市公安局直屬部門缺勤務(wù)輔警招聘筆試參考題庫(kù)附帶答案詳解
- 碼頭建設(shè)報(bào)批程序
- 商務(wù)數(shù)據(jù)分析智慧樹知到期末考試答案2024年
- 2019年10月廣東省自考00850廣告設(shè)計(jì)基礎(chǔ)試題及答案含解析
- DG-TJ08-2425-2023 道路隧道養(yǎng)護(hù)運(yùn)行評(píng)價(jià)技術(shù)標(biāo)準(zhǔn)
- 膠囊內(nèi)鏡知識(shí)課件
評(píng)論
0/150
提交評(píng)論