九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計 】停車場管理】

  • 資源ID:140981716       資源大?。?span id="24d9guoke414" class="font-tahoma">46.50KB        全文頁數(shù):18頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計 】停車場管理】

C+/數(shù)據(jù)結(jié)構(gòu) 大作業(yè)/課程設(shè)計【校園導(dǎo)游咨詢】【停車場管理】娃娃們可以收著以后用 絕對純手工打造 內(nèi)含類模塊/一維指針數(shù)組(謹(jǐn)以此程序供大家參考。運行結(jié)果后面有貼圖)目錄【1】校園導(dǎo)游咨詢 程序設(shè)計源代碼 及 截圖【2】停車場管理方案一 程序設(shè)計源代碼 及 截圖【3】停車場管理方案二 程序設(shè)計源代碼 及 截圖#【1】【校園導(dǎo)游咨詢】#(ps:該校園導(dǎo)游咨詢系統(tǒng)沒有輸入值,所有信息是都在class MGraph的構(gòu)造函數(shù)中傳輸?shù)?,且校園景點信息皆為【上海電力學(xué)院】景點信息。請大家注意,直接從文章copy到visual stutio中會出現(xiàn)中文字符,注意刪除,推薦大家在一行語句的分號后面,點出光標(biāo),按一下delete鍵,然后按一下enter鍵,完成visual stutio的自動對齊,這樣程序看起來一目了然,更易于操作和更改)【問題描述】設(shè)計一個校園導(dǎo)游程序,為來訪的客人提供各種信息查詢服務(wù)?!净疽蟆?1)設(shè)計你所在學(xué)校的校園平面圖,所含景點不少于10個。以圖中頂點表示校內(nèi)各景點,存放景點名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。(2)為來訪客人提供圖中任意景點相關(guān)信息的查詢。(3)為來訪客人提供圖中任意景點的問路查詢,即查詢?nèi)我鈨蓚€景點之間的一個最短的簡單路徑。【選作內(nèi)容】(6)擴充每個景點的鄰接景點的方向等信息,使得路徑查詢結(jié)果能提供詳盡的導(dǎo)向信息。*【以下為類的定義】*#include<iostream>#include<iomanip>using namespace std;const int MaxSize=18;const int INFINITY=65535;/最大值無窮class direction;template <class T> class MGraph;template <class T>class VertexNode/定義頭結(jié)點friend class MGraph<T> public:int vex;/頂點名稱T vexname;/頂點名稱T vexinf;/頂點信息direction dir;/存放頂點方位信息的direction類的dir。;class directionpublic:int ln;/存放在方向圖中的橫坐標(biāo),表示東西int col;/存放在方向圖中的縱坐標(biāo),表示南北;template <class T>class MGraph/定義無向圖的鄰接矩陣public:MGraph(); /構(gòu)造函數(shù),初始化具有n個頂點的圖void printvexname();/顯示所有景點及景點代號void printvexinf(int i);/顯示代號為i景點的名稱及信息void printroad(int i,int j);/顯示景點ij的最短路徑方案信息void printdir(int i,int j);/顯示景點i到j(luò)的方向信息,如“向東100m,向南200m”VertexNode<T> adjlistMaxSize; /存放景點全部信息的 景點類數(shù)組int vertexNum,arcNum; /圖的頂點數(shù)和邊數(shù)void Root(int p,int q);/遞歸尋找pq間的最短路徑int PathMaxSizeMaxSize,DistMaxSizeMaxSize;/創(chuàng)建Path和Dist分別存放兩點間最短路徑的前驅(qū)節(jié)點,兩點間最短路徑長度int LineMaxSize;/Line存放路徑int kkk;/Line數(shù)組的標(biāo)記private:T vertexMaxSize; /存放圖中頂點的數(shù)組int arcMaxSizeMaxSize;/存放圖中邊的數(shù)組;*【以下為類的實現(xiàn) 即類函數(shù)的定義】*template <class T>MGraph<T>:MGraph()/a為景點代號,b為景點名稱,c為景點信息,d為景點方位信息的橫坐標(biāo),e為景點方位信息的縱坐標(biāo)/s為存放景點鄰接矩陣信息的一維數(shù)組,根據(jù)其對稱性可以用公式賦值給二維數(shù)組arcint s=0,1,0,0,2,0,0,0,2,0,0,0,2,3,0,0,0,0,4,2,0,0,0,0,0,2,3,0,0,0,0,0,2,3,1,0,0,0,2,0,2,0,0,2,0,4,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,2,0;int a=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17;char* b="南門","實驗樓","南圖","大活","睿思樓","大禮堂","南4教","知行樓","國交樓","南3教","南2教","南1教","北圖","北3教","北4教","北2教","北1教","北門"char* c="南校區(qū)正門","物理實驗樓","南校區(qū)圖書館","大學(xué)生活動中心","教師辦公樓、醫(yī)務(wù)室及留學(xué)生公寓","大禮堂,用于舉辦各種文藝演出","南校區(qū)第4教學(xué)樓","實習(xí)基地,計算機房等","國際交流中心,教職工餐廳","南校區(qū)第3教學(xué)樓","南校區(qū)第2教學(xué)樓","南校區(qū)第1教學(xué)樓","北校區(qū)圖書館","北校區(qū)第3教學(xué)樓","北校區(qū)第4教學(xué)樓","北校區(qū)第2教學(xué)樓","北校區(qū)第1教學(xué)樓","北校區(qū)正門"int d=8,6,4,4,1,0,0,1,3,4,6,8,4,3,2,3,5,8;int e=8,8,8,10,8,10,7,6,6,6,6,6,3,1,0,0,0,2;int i,j;vertexNum=18;arcNum=30; for(i=0;i<vertexNum;i+)adjlisti.vex=ai;adjlisti.vexname=bi;adjlisti.vexinf=ci;adjlisti.dir.ln=di;adjlisti.dir.col=ei;for (i=0; i<vertexNum; i+)/初始化鄰接矩陣for (j=0; j<vertexNum; j+)arcij=arcji=s(i*(i+1)/2+j; /根據(jù)s的對稱性,將一維數(shù)組中的數(shù)據(jù)賦給二維數(shù)組arc template<class T>void MGraph<T>:printvexname()int i;for(i=0;i<vertexNum;i+)cout<<adjlisti.vex<<" "<<adjlisti.vexname<<endl;template<class T>void MGraph<T>:printvexinf(int i)cout<<i<<" "<<adjlisti.vexname<<":"<<adjlisti.vexinf<<endl;template<class T>void MGraph<T>:printdir(int i,int j)int dx,nb;/臨時存放i與j之間的南北東西關(guān)系 j在i的哪邊?dx=adjlistj.dir.col-adjlisti.dir.col;nb=adjlistj.dir.ln-adjlisti.dir.ln;if(dx>0)/即j在i的東邊cout<<"向東"<<dx*100<<"m,"elsecout<<"向西"<<dx*(0-100)<<"m,"if(nb>0)/即j在i的南邊cout<<"向南"<<nb*100<<"m"elsecout<<"向北"<<nb*(0-100)<<"m"template<class T>void MGraph<T>:Root(int p,int q) if (Pathpq>0) Root(p,Pathpq); Root(Pathpq,q); else Linekkk=q; kkk+; template<class T>void MGraph<T>:printroad(int i,int j)int p,q,m,k,item1,item2;for(p=0;p<vertexNum;p+)for(q=0;q<vertexNum;q+)Distpq=arcpq;/鄰接矩陣賦值for(k=0;k<vertexNum;k+) for(p=0;p<vertexNum;p+)if (Distpk>0) for(q=0;q<vertexNum;q+) if (Distkq>0) if (Distpq>Distpk+Distkq)|(Distpq=0)&&(p!=q) Distpq=Distpk+Distkq; Pathpq=k; cout<<"n=n"cout<<"從"<<adjlisti.vexname<<"到"<<adjlistj.vexname<<"的最短路徑為:"<<endl;cout<<adjlisti.vexname;kkk=2;Root(i,j);item2=Line2;cout<<"->"printdir(i,item2);cout<<"->"<<adjlistitem2.vexname;for(m=3;m<=kkk-1;m+)item1=Linem;cout<<"->"printdir(item1-1,item1);cout<<"->"<<adjlistitem1.vexname;cout<<endl;cout<<"n=n"*【以下為主函數(shù)】*int funcchoice()/系統(tǒng)功能選擇頁面int choice;cout<<"="<<endl;cout<<" 歡迎進入校園導(dǎo)游咨詢平臺"<<endl;cout<<" 1-顯示校園所有景點信息"<<endl;cout<<" 2-查詢校園景點信息"<<endl;cout<<" 3-問路查詢系統(tǒng)"<<endl;cout<<" 4-退出導(dǎo)游資訊平臺"<<endl;cout<<"="<<endl;cout<<"請輸入要選擇的功能號:"cin>>choice;return choice;void main()MGraph<char*> mg;int funcchoice();int fc;while(1)fc=funcchoice();if(fc=1)int i;for(i=0;i<mg.vertexNum;i+)mg.printvexinf(i);else if(fc=2)int i;mg.printvexname();cout<<endl<<"請輸入所要查詢景點代號:"cin>>i;mg.printvexinf(i);else if(fc=3)int i,j;mg.printvexname();cout<<"請輸入兩景點代號(我們將把最短路線反饋予您):"cin>>i>>j;mg.printroad(i,j);else if(fc=4)break;elsecout<<"輸入有誤,請重新輸入!"<<endl;運行測試圖#【2】【停車場管理系統(tǒng)【方案一 程序】#(ps:該程序有漏洞,若將要離開的車輛是停于便道上的,則對該車進行駛離操作時程序內(nèi)部有錯誤數(shù)據(jù),雖然做了函數(shù)完成這一功能,但因時間有限,沒能及時查找更正,現(xiàn)在懶得改了。大家將就看吧。不過運行是可以的)【問題描述】設(shè)停車場是一個可停放n輛汽車的 長通道,且只有一個大門可供汽車進出。汽車在停車場內(nèi)按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車信放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場內(nèi)某輛車要離開時,在它之后進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入車場院,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程序?!净疽蟆恳詶DM停車場,以隊列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進行模擬管理。每一組輸入數(shù)據(jù)包括三個數(shù)據(jù)項:汽車“到達”或“離去”信息、汽車牌照號碼以及到達或離去的時刻。對每一組輸入數(shù)據(jù)進行操作后的輸出信息為:若是車輛到達,則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)停留的時間和應(yīng)交納的費用(在便道上停留的時間不收費)。棧以順序結(jié)構(gòu)實現(xiàn),隊列以鏈表結(jié)構(gòu)實現(xiàn)?!緶y試數(shù)據(jù)】設(shè)n=2,輸入數(shù)據(jù)為:(A,1,5),(A,2,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到達(Arrival);D表示離去(Departure);E表示輸入結(jié)束(End)。*【以下為類的定義】*#include<iostream>using namespace std;const int Max=2;/車庫最大容量const double price=30;/每小時的費用/思想:(報告第四頁)/我的系統(tǒng)界面,輸入信息為:(到達/離開/退出);車牌號;時刻/因此,我的停車場類分成車輛到達和車輛離開兩個主要的函數(shù)實現(xiàn)。/車輛到達,有入棧和入隊。車輛離開有出棧,出隊和入棧操作。/因此我又編寫入棧的類,隊的類。與parkingmanagement進行友元。/*類定義*class car/車的信息類public:double time;/計費時間int number;/車牌號car *next;/存放car類型元素的數(shù)組初始地址;class carstack/棧(停車場)的類friend class parkingmanagement;/parkingmanagement能訪問carstack類中所有成員public:carstack();/構(gòu)造函數(shù),棧的初始化int empty();/判斷棧是否為空int full();/判斷棧是否為滿car *s;/存放car類型棧元素的數(shù)組初始地址int top;/棧頂指針;class carqueue/隊列(便道)的類friend class parkingmanagement;/parkingmanagement能訪問carstack類中所有成員public:carqueue();/構(gòu)造函數(shù),隊列的初始化int full();/判斷隊列是否為滿car *front,*rear;/存放car類型隊列元素的數(shù)組初始地址;class parkingmanagementpublic:int pushstack(carstack &cs,int cnum,double ctime);/入棧,cs棧內(nèi)進行調(diào)整,返回棧內(nèi)位置void popstack(carstack &cs,int cnum);/出棧,cs棧內(nèi)進行調(diào)整,/根據(jù)車牌號把車彈出棧,將出棧car的number賦值給int popstacknumber()/將出棧car的time賦值給double popstacktime(),無返回值!int pushqueue(carqueue &cq,int cnum,double ctime);/入隊,隊內(nèi)進行調(diào)整,返回隊內(nèi)位置int popqueue(carqueue &cq);/出隊,隊內(nèi)進行調(diào)整,返回汽車車牌號void arrival(carstack &cs,carqueue &cq,int cnum,double ctime);/車輛到達,/根據(jù)輸入的車牌號、到達時間,變更函數(shù)參數(shù);并cout車位信息void leave(carstack &cs,carqueue &cq,int cnum,double ctime);/車輛離開,/根據(jù)輸入的車牌號找到汽車,并進行出棧操作、出隊操作和入棧操作;/并cout停留時間和收費情況void deletequeue(carqueue &cq,int i);/刪除cq過道中第i輛車int popstacknumber;/專門存放出棧的時候返回的車牌號double popstacktime;/專門存放出棧的時候返回的時刻;*【以下為類的實現(xiàn)】*carstack:carstack()/構(gòu)造函數(shù),棧的初始化top=-1;s=new carMax;/創(chuàng)建car類型棧元素的數(shù)組if(s=NULL)cout<<"??臻g分配不成功!"<<endl;exit(1);int carstack:full()/判斷棧是否為滿return top=Max-1;carqueue:carqueue()/構(gòu)造函數(shù),隊列的初始化rear=front=NULL;int parkingmanagement:pushstack(carstack &cs,int cnum,double ctime)/入棧,cs棧內(nèi)進行調(diào)整,返回棧內(nèi)位置if(cs.top=Max-1)/Max從1開始,top從0開始cout<<"停車場已滿!"<<endl;return Max;else cs.top+;(cs.scs.top).number=cnum;/將cnum賦給棧頂位置的車的車牌號,s是car類型棧元素的數(shù)組(cs.scs.top).time=ctime;/將ctime賦給棧頂位置的車的入棧時間,s是car類型棧元素的數(shù)組return (cs.top+1);/返回棧內(nèi)位置加1,即停車場內(nèi)車位從1號開始void parkingmanagement:popstack(carstack &cs,int cnum)/出棧,cs棧內(nèi)進行調(diào)整,/根據(jù)車牌號把車彈出棧,將出棧car的number賦值給int popstacknumber/將出棧car的time賦值給double popstacktime,無返回值!int i;car p;carstack stemp;/定義一個carstack類型的臨時存放出棧元素的棧for(i=0; i<=cs.top; i+)if(cs.si).number=cnum) break;/當(dāng)要出棧的車的車牌號=棧內(nèi)的車牌號元素時,跳出循環(huán)p=cs.si;/將要出棧的元素賦給car類型的p存放while(cs.top>i)stemp.s+(stemp.top)=cs.s(cs.top)-;/出棧的元素數(shù)組逐個賦給臨時棧popstacknumber=p.number;/將這個車牌號信息傳給int popstacknumber()popstacktime=p.time;/將該車的時間信息傳給double popstacktime()cs.top-;/棧頂指針回到原來位置while(stemp.top>=0)cs.s+(cs.top)=stemp.s(stemp.top)-;/臨時棧出棧的元素逐個賦給原棧,完成先退再進的工作int parkingmanagement:pushqueue(carqueue &cq,int cnum,double ctime)/入隊,隊內(nèi)進行調(diào)整,返回隊內(nèi)位置car *p,*countp;int count(1);/count用于記錄車在過道上的位置信息,因隊列為鏈?zhǔn)降?,所以進行循環(huán)累加p=new car;/創(chuàng)建一個car類型的指針p->number=cnum;p->time=ctime;p->next=NULL;/首先將指向存放car類型元素的數(shù)組初始地址置空if (cq.front=NULL)/第一次入隊要判斷頭結(jié)點是否為空cq.front=cq.rear=p;else /尾插法插入元素p->next=(cq.rear)->next;(cq.rear)->next=p;cq.rear=(cq.rear)->next;countp=(cq.front)->next;while(countp!=NULL)count+;countp=countp->next;/count即車在過道上的位置,【從1開始計!】return count;int parkingmanagement:popqueue(carqueue &cq)/出隊,隊內(nèi)進行調(diào)整,返回汽車車牌號car p;p.number=(cq.front)->next)->number;/cq隊里,從cq.front開始指向下一個元素的車牌號賦給car類型的車信息p.time=(cq.front)->next)->time;/cq隊里,從cq.front開始指向下一個元素的時刻/賦給car類型的車信息p.next=(cq.front)->next)->next;/cq隊里,從cq.front開始指向下一個元素的指針/賦給car類型的車信息的下一個元素的指針return p.number;cq.front=(cq.front)->next;void parkingmanagement:arrival(carstack &cs,carqueue &cq,int cnum,double ctime)/車輛到達,根據(jù)輸入的車牌號、到達時間,變更函數(shù)參數(shù);并cout車位信息int pos;if(!(cs.full()/如果棧未滿,車輛停入停車場int fl(0),i;/定義一個從0開始的標(biāo)記flfor(i=0;i<=cs.top;i+)if(cs.si.number=cnum)/如果到達的車的車牌號=棧內(nèi)已有車輛的車牌號fl=1;/fl記1break;if(fl=1)/如果到達的車的車牌號!=棧內(nèi)已有車輛的車牌號cout<<"輸入錯誤!請重新輸入!"<<endl;elsepos=pushstack(cs,cnum,ctime);/入棧,返回車位信息cout<<"該停車場還有空位,請到"<<pos<<"號車位進行泊車"<<endl;cout<<endl;else/如果棧滿,車輛暫停便道pos=pushqueue(cq,cnum,ctime);/入隊,返回車位信息cout<<"該停車場已滿,請將車停到便道"<<pos<<"號車位上"<<endl;cout<<endl;void parkingmanagement:leave(carstack &cs,carqueue &cq,int cnum,double ctime)/車輛離開,根據(jù)輸入的車牌號找到汽車,并進行出棧操作、出隊操作和入棧操作;并cout停留時間和收費情況int i,flag(0),pstack,count(1),outcarnum;double hour;car *p;for(i=0;i<=cs.top;i+)if(cs.si).number=cnum)flag=1;break;if(flag)/如果輸入的車牌號與棧內(nèi)已有車輛的車牌號一致popstack(cs,cnum);/出棧操作hour=ctime-popstacktime;/時間計算outcarnum=popqueue(cq);/將便道上的第一輛車出隊,入棧。并將其車牌號賦給outcarnumpstack=pushstack(cs,outcarnum,ctime);/將便道上的第一輛車,入棧cout<<"該車在本停車場內(nèi)停留時間為"<<hour<<"分鐘,應(yīng)付金額"<<hour*(price/60)<<"元!"<<endl;else/如果輸入的車牌號與隊列里已有車輛的車牌號一致p=cq.front;while(p!=NULL)count+;/如果在過道中找到該車,則該車的位置為過道中的第count位置(count從1開始)p=p->next;if(p->number=cnum)/在過道中找到要出去的車,則在隊列中刪除該car。/后面的車輛依然順序排列,補足空位deletequeue(cq,count);if(count>Max)cout<<"您的車在便道上的位置為"<<count<<"號車位,請自行駛離,無需付費!"<<endl;break;if(p=NULL)cout<<"您的車不在本停車場內(nèi),或輸入有誤,請重新輸入!"<<endl;void parkingmanagement:deletequeue(carqueue &cq,int i) car *p,*q;int j(0);p=cq.front;while(p && j<i-1)p=p->next;j+;/找到第i個節(jié)點(i從1開始)if(!p | !p->next)cout<<"i不合法"elseq=p->next;p->next=q->next;delete q;*【以下是主程序】*void print()cout<<"= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ="<<endl;cout<<"= 歡迎光臨! ="<<endl;cout<<"= ="<<endl;cout<<"= 本停車場收費標(biāo)準(zhǔn)為:30元/小時;車庫容量為:2 ="<<endl;cout<<"= ="<<endl;cout<<"= 請輸入您的泊車信息:格式為:(到達/離去/退出);車牌號;現(xiàn)在時刻 ="<<endl;cout<<"= 其中,A:到達;D:離去;E:退出系統(tǒng) ="<<endl;cout<<"= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ="<<endl;/*調(diào)試程序*設(shè)n=2,輸入數(shù)據(jù)為:(A,1,5),(A,2,15),*/*(A,3,20),(A,4,25),(A,5,30),*/*(D,2,35),(D,4,40),(E,0,0)。*/*其中:A表示到達(Arrival);D表示離去(Departure);E表示輸入結(jié)束(End)。*void main()char acc;int carnum;double cartime;parkingmanagement park;carstack cars;carqueue carq;while(1)print();cin>>acc>>carnum>>cartime;if(acc='A')park.arrival(cars,carq,carnum,cartime);else if(acc='D')park.leave(cars,carq,carnum,cartime);else if(acc='E')break;elsecout<<"您的輸入有誤,請重新輸入!"<<endl;#【3】【停車場管理系統(tǒng)【方案二 程序】#(ps:本方案與方案一有同樣的問題,就是在對 便道上的車 進行駛離操作時,數(shù)據(jù)錯誤,同樣的理由,沒有改正。如果有細心娃娃幫忙指點改正,在此感激啦)*【以下為類定義】*#include <iostream>using namespace std;const int MaxSize=2;/停車場內(nèi)最多能停2輛車template<class T> class carStack;/template <class T> /定義模板類struct Node/過道停車的隊列所需鏈?zhǔn)浇Y(jié)點T carnum;/定義車牌號類型Node<T> *next; /此處<T>也可以省略;template<class T>class carinfo friend class carStack; public:T carnum; /車號 int cartime;/停車時間;template <class T>class carQueuefriend class carStack;public:carQueue(); /構(gòu)造函數(shù),初始化一個空的鏈隊列int EnQueue(T cnum); /將元素x入隊,并返回其在隊內(nèi)的位置(從1開始)T DeQueue(); /將隊頭鏈?zhǔn)浇Y(jié)點出隊,并返回汽車車牌號void deletequeue(int i);/將隊內(nèi)低i個元素刪除,即便道上i位置的汽車駛離bool Empty(); /判斷鏈隊列是否為空Node<T> *front, *rear; ;template<class T>class carStackfriend class carinfo;public:carStack() ; /構(gòu)造函數(shù),棧的初始化,停車場容量為【size】void Pushcar(T cnum,int ctime); /有車停入停車場int Popcar(T outcnum,int outctime); /將第cnum輛車出棧,并返回其停車時間(hour)bool full();/判斷棧是否為滿?滿則返回1carinfo<T> *S;/?int top; ;*【以下為類的實現(xiàn)】*template <class T>/初始化隊列carQueue<T>:carQueue()front=rear=NULL;template <class T>int carQueue<T>:EnQueue(T cnum)/車子進入便道int i(0);Node<T> *s,*p;/?s=new Node<T>s->carnum=cnum;s->next=NULL;if(front=NULL)/空隊列,【新結(jié)點既是隊頭,又是隊尾】關(guān)鍵是!front指向第一個結(jié)點 front=rear=s;else rear->next=s;/將結(jié)點s插入到隊尾rear=s;p=front;while(p!=NULL)i+;p=p->next;/i即車在過道上的位置,【從1開始計!】return i;template<class T>T carQueue<T>:DeQueue()Node <T> *p;if (front=NULL) cout<<"便道上沒車"elsep=front; front=front->next;/將隊頭元素所在結(jié)點摘鏈return p->carnum;delete p;/將出隊進棧的車從隊列里刪除template<class T>bool carQueue<T>:Empty()/判斷是否為空,為空則返回1,不為空則返回0return front=NULL;template <class T>carStack<T>:carStack()/構(gòu)造棧算法:top(-1)/建立一個最大尺寸為size的空棧S=new carinfo<T>MaxSize;/創(chuàng)建存儲棧的數(shù)組if(S=NULL) /分配不成功 cerr<<"動態(tài)存儲失??!"<<endl;exit(1); /stdlib.htemplate<class T>void carStack<T>:Pushcar(T cnum,int ctime)if (top=MaxSize-1)cout<<"車場內(nèi)已停滿汽車"elseS+top.carnum=cnum;Stop.cartime=ctime;template<class T>int carStack<T>:Popcar(T outcnum,int outctime)int i,hour;carStack Stemp;/建一個臨時模擬停車場int Stop=-1;for(i=0;i<=top;i+)if(outcnum=Si.carnum)break;while(top>i)Stemp.S+Stop=Stop-;hour=outctime-Stop.cartime;return hour;top-;while(Stop>=0)S+top=Stemp.SStop-;template<class T>bool carStack<T>:full()return top=MaxSize-1;template <class T>void carQueue<T>:deletequeue(int i)Node<T> *p,*q;int j(1);p=front;while(p && j<i-1)p=p->next;j+;/找到第i-1個結(jié)點(結(jié)點位置從1開始)if(!p|!p->next)cout<<"i不合法!"<<endl;elseq=p->next;p->next=q->next;delete q;*【以下為主函數(shù)】*void outputpark()/系統(tǒng)功能選擇頁面,輸入泊車信息cout<<"="<<endl;cout<<" 歡迎來到秦小寶停車場!"<<endl;cout<<" (本停車場收費標(biāo)準(zhǔn)為5元/小時,60分鐘以內(nèi)記為1小時)"<<endl;cout<<"="<<endl;cout<<"請輸入您的車輛信息:"<<endl;cout<<"(泊車輸入A/駛離輸入D/退出系統(tǒng)輸入E;請輸入您的車牌號;請輸入現(xiàn)在時刻)"<<endl;void main()int carnum,cartime;char arrive;carStack<int> cs;carQueue<int> cq;while(1)outputpark();cin>>arrive>>carnum>>cartime;if(arrive='A')if(cs.top!=MaxSize-1)/停車場內(nèi)有空位可以駛?cè)隿s.Pushcar(carnum,cartime);cout<<"請駛?cè)胪\噲龅?quot;<<cs.top+1<<"號車位"<<endl;elsecout<<"請駛?cè)氡愕赖?quot;<<cq.EnQueue(carnum)<<"號車位"<<endl;/將車輛進行入隊操作,即停入便道else if(arrive='D')int flag(0),i;for(i=0;i<=cs.top;i+)if(cs.Si.carnum=carnum)flag=1;break;if(flag)int hour;hour=cs.Popcar(carnum,cartime);cout<<"您的"<<carnum<<"車在秦小寶停車場內(nèi)停留時間為:"<<hour<<endl;cout<<"需要繳納的費用為:"<<hour*5<<"元!"<<endl;cs.Pushcar(cq.DeQueue(),cartime);/出隊一輛車,并將該車進行入棧處理elseint flagde(0),pos(0);/若該車在便道內(nèi),pos用來記錄該車便道內(nèi)的位置Node<int> *p;p=cq.front;while(p!=NULL)if(p->carnum=carnum)flagde=1;break;pos+;p=p->next;if(flagde)cout<<"您的車停在便道上"<<pos<<"號車位,無需繳納費用,請自行駛離!"<<endl;cq.deletequeue(pos);elsecout<<"輸入有誤,或您的車不在秦小寶停車場內(nèi)!請重新輸入"<<endl;else if(arrive='E')break; elsecout<<"您的輸入有誤,請重新輸入!"<<endl; (ps:本方案截圖與方案一截圖差不多,所以就不做了)

注意事項

本文(c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計 】停車場管理】)為本站會員(r****d)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!