版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
精選范本,供參考!精選范本,供參考!精選范本,供參考!數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)停車場管理系統(tǒng)目錄TOC\o"1-2"\h\u19087一、課設(shè)目的 220994二、問題描述 227423三、基本要求 224284四、詳細(xì)設(shè)計(jì) 37710(1)原理分析 318906(2)功能模塊 38012(3)用戶手冊 65494(4)流程圖 63624(5)測試用例 75746(6)測試目的 723205(7)測試要求 76727五、程序源碼 73172六、測試結(jié)果 1325076七、課設(shè)總結(jié) 1524765八、參考文獻(xiàn) 15一、課設(shè)目的了解并掌握數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;初步掌握軟件開發(fā)過程中的問題分析,系統(tǒng)設(shè)計(jì),程序編碼,測試等基本方法和技能;提高綜合應(yīng)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)和一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具有的科學(xué)的工作方法和作風(fēng)。二、問題描述設(shè)停車場內(nèi)只有一個(gè)可停放n輛汽車的狹長通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場內(nèi)某輛車要離開時(shí),在它之后開入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其它車輛再按原次序進(jìn)入車場,每輛停放在車場的車在它離開停車場時(shí)必須按它停留的時(shí)間長短交納費(fèi)用。試為停車場編制按上述要求進(jìn)行管理的模擬程序。三、基本要求以棧模擬停車場,以隊(duì)列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻,對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車離去,則輸出汽車在停車場內(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ǔ)空間。隊(duì)列是限定僅能在表的一段進(jìn)行插入,在表的另一端進(jìn)行刪除的線性表。隊(duì)列中可以插入的一段稱為隊(duì)尾,可以刪除的一端稱為隊(duì)首。隊(duì)列的主要特點(diǎn)是“先進(jìn)先出”。停車場管理系統(tǒng)是充分利用數(shù)據(jù)結(jié)構(gòu)中棧和隊(duì)列的思想實(shí)現(xiàn)的,用到兩個(gè)堆棧,一個(gè)用來模擬停車場,另一個(gè)為臨時(shí)棧,存儲(chǔ)為離開停車場的車輛讓道的其他車輛;一個(gè)隊(duì)列結(jié)構(gòu),存儲(chǔ)便道的車輛信息。typedefstruct{//定義棧,表示停車場CarNode*base;//停車場的堆棧底CarNode*top;//停車場的堆棧頂intstacksize;//停車場的容量}Park;typedefstruct{//定義隊(duì)列,表示便道CarPtrfront;//便道的隊(duì)列的隊(duì)頭CarPtrrear;//便道的隊(duì)列的隊(duì)尾intlength;}Shortcut;(2)功能模塊:車輛到達(dá):a、若棧不滿,車輛進(jìn)棧,停到停車場;b、若棧滿,車輛入隊(duì),停到便道;StatusArrival(Park&P,Shortcut&S){intnumber,ar_time;//對(duì)進(jìn)站車輛的處理:printf("請(qǐng)輸入車牌號(hào):");//記錄車牌號(hào),時(shí)間,并根據(jù)停車場scanf("%d",&number);//是否滿來判斷入棧還是入隊(duì)列printf("進(jìn)場的時(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("停車場已滿,請(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("出場的時(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);//后面的車開出停車場讓路,進(jìn)入備用棧}while(P1.stacksize){Pop(P1,e);Push(P,e);//備用棧中的車開入停車場}if(flag==0){if(S.length!=0){DeQueue(S,w);m.ar_time=le_time;m.number=w->number;Push(P,m);//便道中的車開入停車場free(w);printf("車牌號(hào)為%d的車已由便道進(jìn)入停車場\n",m.number);}printf("停車費(fèi)為%d,占用車位數(shù)為%d\n",money,P.stacksize);}else{printf("停車場不存在牌號(hào)為%d的車\n",number);}returnOK;}(3)用戶手冊:①輸出菜單選項(xiàng);請(qǐng)選擇(A,D,E):②如果選擇A,即車輛到達(dá):若棧不滿,車輛進(jìn)棧,停到停車場;若棧滿,車輛入隊(duì),停到便道;③如果選擇D,即車輛離開:計(jì)算時(shí)間及費(fèi)用;如果隊(duì)列不空且棧不滿,隊(duì)列上的車出隊(duì)入棧;④如果選擇E,則退出程序。(4)流程圖:圖一、函數(shù)關(guān)系調(diào)用圖圖二、操作流程圖(5)測試用例:(‘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é)束。(6)測試目的:測試菜單顯示方法,到達(dá)方法和離開方法能否正確完成,時(shí)間和費(fèi)用計(jì)算是否正確。(7)測試要求:測試用例要合理并足夠,既要有正確用例,也要有錯(cuò)誤用例,檢驗(yàn)程序的正確性和健壯性。五、程序源碼#include<stdio.h>#include<stdlib.h>#include<malloc.h>#defineOK1//函數(shù)返回狀態(tài)代碼,宏定義#defineERROR0#defineTRUE1#defineFALSE0#defineINFEASIBLE-1#defineOVERFLOW-2#defineSIZE2//停車場位置數(shù)#definePRICE2typedefintStatus;//棧,模擬停車場typedefstructCar1{//定義一個(gè)結(jié)構(gòu)體來表示停車場中的車intnumber;//汽車車號(hào)intar_time;//汽車到達(dá)時(shí)間}CarNode;typedefstruct{//定義棧,表示停車場CarNode*base;//停車場的堆棧底CarNode*top;//停車場的堆棧頂intstacksize;//停車場的容量}Park;typedefintStatus;//隊(duì)列,模擬便道typedefstructCar2{//用另一個(gè)結(jié)構(gòu)體來表示便道中停放的車intnumber;//汽車車號(hào)intar_time;//汽車到達(dá)時(shí)間structCar2*next;}*CarPtr;typedefstruct{//定義隊(duì)列,表示便道CarPtrfront;//便道的隊(duì)列的隊(duì)頭CarPtrrear;//便道的隊(duì)列的隊(duì)尾intlength;}Shortcut;StatusInitStack(Park&P){//初始化停車場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)入停車場,棧的輸入操作*P.top++=e;++P.stacksize;returnOK;}StatusPop(Park&P,CarNode&e){if(P.top==P.base)//車離開停車場,棧的輸出操作printf("停車場為空.");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ù)停車場scanf("%d",&number);//是否滿來判斷入棧還是入隊(duì)列printf("進(jìn)場的時(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("停車場已滿,請(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("出場的時(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);//后面的車開出停車場讓路,進(jìn)入備用棧}while(P1.stacksize){Pop(P1,e);Push(P,e);//備用棧中的車開入停車場}if(flag==0){if(S.length!=0){DeQueue(S,w);m.ar_time=le_time;m.number=w->number;Push(P,m);//便道中的車開入停車場free(w);printf("車牌號(hào)為%d的車已由便道進(jìn)入停車場\n",m.number);}printf("停車費(fèi)為%d,占用車位數(shù)為%d\n",money,P.stacksize);}else{printf("停車場不存在牌號(hào)為%d的車\n",number);}returnOK;}intmain(){intm=1;charflag;//選項(xiàng)ParkP,Q;ShortcutS;InitStack(P);InitStack(Q);InitQueue(S);while(m){printf("\n停車場管理程序\n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026上半年安徽事業(yè)單位聯(lián)考安慶市宜秀區(qū)招聘23人筆試參考題庫及答案解析
- 2026新疆第一師阿拉爾市大學(xué)生鄉(xiāng)村醫(yī)生專項(xiàng)計(jì)劃招聘13人筆試參考題庫及答案解析
- 2026湖南鎂宇科技有限公司第一次招聘8人筆試參考題庫及答案解析
- 2026新疆鴻聯(lián)建設(shè)工程項(xiàng)目管理咨詢有限公司哈密分公司招聘12人考試備考題庫及答案解析
- 2026中國太平洋壽險(xiǎn)安順中支招聘13人考試參考題庫及答案解析
- 北京順義高麗營社區(qū)衛(wèi)生服務(wù)中心招聘3人筆試模擬試題及答案解析
- 2026年鋼鐵冶煉高溫防護(hù)措施
- 2026年材料力學(xué)性能實(shí)驗(yàn)中的模塊化設(shè)計(jì)
- 2026年甘肅省隴南市武都區(qū)馬營中心衛(wèi)生院金廠分院鄉(xiāng)村醫(yī)生招聘考試備考題庫及答案解析
- 2026上半年貴州事業(yè)單位聯(lián)考大方縣招聘210人筆試模擬試題及答案解析
- 2026貴州省省、市兩級(jí)機(jī)關(guān)遴選公務(wù)員357人考試備考題庫及答案解析
- 兒童心律失常診療指南(2025年版)
- 北京通州產(chǎn)業(yè)服務(wù)有限公司招聘備考題庫必考題
- (正式版)DBJ33∕T 1307-2023 《 微型鋼管樁加固技術(shù)規(guī)程》
- 2026年基金從業(yè)資格證考試題庫500道含答案(完整版)
- 2025年寵物疫苗行業(yè)競爭格局與研發(fā)進(jìn)展報(bào)告
- 綠化防寒合同范本
- 2025年中國礦產(chǎn)資源集團(tuán)所屬單位招聘筆試參考題庫附帶答案詳解(3卷)
- 氣體滅火系統(tǒng)維護(hù)與保養(yǎng)方案
- GB/T 10922-202555°非密封管螺紋量規(guī)
- ESD護(hù)理教學(xué)查房
評(píng)論
0/150
提交評(píng)論