停車場管理系統(tǒng)的代碼_第1頁
停車場管理系統(tǒng)的代碼_第2頁
停車場管理系統(tǒng)的代碼_第3頁
停車場管理系統(tǒng)的代碼_第4頁
停車場管理系統(tǒng)的代碼_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

設停車場是一個可停放n輛車的狹長通道,且只有一個大門可供汽車進出。在停車場,汽車按到達的先后次序,由北向南依次排列(假設大門在最南端)。若車場已停滿n輛車,則后來的汽車要在門外的便道上等候,當有車開走時,便道上的第一輛車即可開入。當停車場某輛車要離開時,在它之后進去的車輛必須先推出車場為它讓路,待該輛車開出大門以后,其他車輛再按原次序返回車場。每輛車離開停車場時,應按其停留時間的長短交費(在便道上停留的時間不收費)。試編寫程序,模擬上述管理過程。要求以順序棧模擬停車場,以鏈隊列模擬便道。從終端讀入汽車到達或離去的數(shù)據(jù),每組數(shù)據(jù)包括三項:(1)是“到達”還是“離去”(2)汽車牌照;(3)“到達”或“離去”的時刻。與每組輸入信息相應的輸出信息為:如果是到達的車輛,則輸出其在停車場中或便道上的位置;如果是離去的車輛,則輸出其在停車場中停留的時間和應繳的費用。(需另設一個棧,臨時停放為讓路而從車場退出的車。)#include<iostream>#defineM5usingnamespacestd;typedefintDatatype;typedefstruct{typedefstruct{Datatypebianhao[M];inttop;inth[M];intm[M];ints[M];}Seqstack;typedefstructNode{Datatypebianhao;structNode*next;}node;typedefstruct{〃時〃分//秒〃停車場棧的定義〃便道結(jié)點,表示一輛汽車node*front;node*rear;intcount;}biandao; 〃便道//停車場順序棧初始化voidInitSeqstack(Seqstack*t){t->top=-1;}//進棧,即進入停車場intPush(Seqstack*t,intx,inth,intm,ints){if(t->top==M-1)return0; //停車場棧已滿t->top++;t->bianhao[t->top]=x;t->h[t->top]=h;t->m[t->top]=m;t->s[t->top]=s;return1;}〃出棧,即離開停車場intPop(Seqstack*t,int*x,int*h,int*m,int*s){if(t->top==-1)return0;else{*x=t->bianhao[t->top];*h=t->h[t->top];*m=t->m[t->top];*s=t->s[t->top];t->top—;return1;}//查找某牌照的車在停車場中的位置,若找到則返回其位置,否則返回-1intFind(Seqstackt,intx){inti;for(i=0;i<=t.top;i++){if(t.bianhao[i]!=x)continue;elsebreak;}if(i>t.top)return(-1);elsereturn(i);}//判斷停車場是否已滿intIsSeqstackFull(Seqstackt){if(t.top==M-1)return1;elsereturn0;}//判斷停車場是否已沒有車輛intIsSeqstackEmpty(Seqstackt){if(t.top==-1)return1;elsereturn0;//依次顯示停車場停放的所有車輛voidShowSeqstack(Seqstackt){inti;if(t.top==-1)cout<<"停車場沒有停放車輛"<<endl;elsefor(i=0;i<=t?top;i++)cout<<"牌照:”<<t?bianhao[i]<<endl;}//隊列初始化intInitbiandao(biandao*Q){Q->front=newnode;if(Q->front!=NULL){Q->rear=Q->front;Q->front->next=NULL;Q->count=0;return(true);}elsereturn(false);}//入隊操作,即當停車場滿了的時候,再到達的車輛進去便道隊列intEnterbiandao(biandao*Q,intx){node*NewNode;NewNode=newnode;if(NewNode!=NULL){NewNode->bianhao=x;NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;Q->count++;return(true);}elsereturn(false);}〃出隊操作,即便道上的車輛從便道開出來intDeletebiandao(biandao*Q,int*x){node*p;if(Q->front==Q->rear)return(false);p=Q->front->next;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;*x=p->bianhao;free(p);Q->count—;return(true);}〃判斷便道隊列是否為空intIsbiandaoEmpty(biandaoQ){if(Q.front==Q.rear)return(true);elsereturn(false);〃當count=0時,就空了}//依次顯示便道上停放的所有車輛voidShowbiandao(biandaoQ)node*p;p=Q.front->next;if(p==NULL)cout<<"便道上沒有停放車輛!"<<endl;elsewhile(p!=NULL){cout<<"牌照:"<<p->bianhao<<endl;p=p->next;}}36//計算停留時間差doubleTime(inth1,intm1,ints1,inth2,intm2,ints2){doublep,q;p=h1*3600+m1*60+s1-(h2*3600+m2*60+s2);q=(double)p/3600;return(q);}//計算停車費用doubleCost(doublet,intu){return(t*u);}//主函數(shù)voidmain(){doubletime,cost;intch;intx,*y,z;inti,flag=1,h,m,s,unit_price,hh,mm,ss;y=newint;Seqstack*t; 〃定義停車棧t=newSeqstack;InitSeqstack(t);biandao*Q; //定義便道隊列Q=newbiandao;Initbiandao(Q);Seqstack*r; 〃定義讓路棧r=newSeqstack;InitSeqstack(r);cout<<"請設置停車費用單價:(—元/小時)"<<endl;cin>>unit_price;while(flag){cout<<^**************************<<endl;cout<<"請選擇命令:"<<endl<<"1:到達"<<endl<<"2:離開"<<endl<<"3:依次顯示停車場停放車輛"<<endl<<"4:依次顯示便道上停放車輛"<<endl<<"5:結(jié)束"<<endl;cout<<^**************************<<endl;cin>>ch;switch(ch){case1:cout<<"請輸入到達的汽車牌照:”<<endl;cin>>x;if(IsSeqstackFull(*t)){cout<<"停車場已滿,請在便道等候!"<<endl;Enterbiandao(Q,x);cout<<"將此車停放在便道的"<<Q->count<<"號位置!"<<endl;}else{while(1){cout<<"請輸入到達的時間(例如,210823):"<<endl;cin>>h>>m>>s;if(h<0 || h>23)continue;//輸入數(shù)據(jù)不合法,回去重新輸入if(m<0||m>59)continue;if(s>-1&&s<61)break;//輸入時間全部合法,退出循環(huán)}Push(t,x,h,m,s);cout<<"將此車停放在停車場的"<<t->top+1<<"號停車位置"<<endl;}break;case2:if(IsSeqstackEmpty(*t))cout<<"停車場已沒有車輛"<<endl;else{cout<<"請輸入要離開的汽車的車牌照:"<<endl;cin>>x;if(Find(*t,x)==-1)cout<<"停車場沒有該汽車!"<<endl;else〃有該的汽車{while(1){cout<<"請輸入離開的時間(例如,235803):"<<endl;cin>>h>>m>>s;if(h<0 || h>23)continue;//輸入數(shù)據(jù)不合法,回去重新輸入if(m<0||m>59)continue;if(s>-1&&s<61)break; //輸入時間全部合法,退出循環(huán)}if(Find(*t,x)==t->top){Pop(t,y,&hh,&mm,&ss);//要離開的車輛正好是最后一輛進入停車場的車time=Time(h,m,s,hh,mm,ss);cout<<"停留時間為:"<<time<<"小時"<<endl; //結(jié)賬cost=Cost(time,unit_price);cout<<"應繳費用為:"<<cost<<"元"<<endl;}else{for(i=(Find(*t,x)+1);i<=t->top;)//該車不是最后一輛進入停車場的車,其它車要讓路{Pop(t,y,&hh,&mm,&ss);Push(r,*y,hh,mm,ss);//進入讓路棧rPop(t,y,&hh,&mm,&ss);//要離開的車輛離開了time=Time(h,m,s,hh,mm,ss);/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論