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

下載本文檔

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

文檔簡介

1、設(shè)停車場是一個可停放n輛車的狹長通道,且只有一個大門可供汽車進出。在停車場內(nèi),汽車按到達的先后次序,由北向南依次排列(假設(shè)大門在最南端)。若車場內(nèi)已停滿n輛車,則后來的汽車要在門外的便道上等候,當(dāng)有車開走時,便道上的第一輛車即可開入。當(dāng)停車場內(nèi)某輛車要離開時,在它之后進去的車輛必須先推出車場為它讓路,待該輛車開出大門以后,其他車輛再按原次序返回車場。每輛車離開停車場時,應(yīng)按其停留時間的長短交費(在便道上停留的時間不收費)。試編寫程序,模擬上述管理過程。要求以順序棧模擬停車場,以鏈隊列模擬便道。從終端讀入汽車到達或離去的數(shù)據(jù),每組數(shù)據(jù)包括三項:(1)是“到達”還是“離去”(2)汽車牌照號碼;(3

2、)“到達”或“離去”的時刻。與每組輸入信息相應(yīng)的輸出信息為:如果是到達的車輛,則輸出其在停車場中或便道上的位置;如果是離去的車輛,則輸出其在停車場中停留的時間和應(yīng)繳的費用。(需另設(shè)一個棧,臨時停放為讓路而從車場退出的車。)#include#define m 5using namespace std;typedef int datatype;typedef struct datatype bianhaom;int top; int hm; /時 int mm; /分 int sm; /秒seqstack; /停車場棧的定義typedef struct node /便道結(jié)點,表示一輛汽車datat

3、ype bianhao; struct node *next;node;typedef structnode *front;node *rear;int count;biandao; /便道/停車場順序棧初始化void initseqstack(seqstack *t)t-top=-1;/進棧,即進入停車場int push(seqstack *t,int x,int h,int m,int s)if(t-top=m-1)return 0; /停車場棧已滿t-top+;t-bianhaot-top=x;t-ht-top=h;t-mt-top=m;t-st-top=s;return 1;/出棧,即

4、離開停車場int pop(seqstack *t,int *x,int *h,int *m,int *s)if(t-top=-1)return 0;else*x=t-bianhaot-top;*h=t-ht-top;*m=t-mt-top;*s=t-st-top;t-top-;return 1;/查找某牌照的車在停車場中的位置,若找到則返回其位置,否則返回-1int find(seqstack t,int x)int i; for(i=0;it.top)return(-1);else return(i);/判斷停車場內(nèi)是否已滿int isseqstackfull(seqstack t)if(t

5、.top=m-1)return 1;else return 0;/判斷停車場內(nèi)是否已沒有車輛int isseqstackempty(seqstack t)if(t.top=-1)return 1;else return 0;/依次顯示停車場內(nèi)停放的所有車輛void showseqstack(seqstack t)int i;if(t.top=-1)cout停車場內(nèi)沒有停放車輛endl;else for(i=0;i=t.top;i+) cout牌照:t.bianhaoifront=new node;if(q-front!=null)q-rear=q-front;q-front-next=null

6、;q-count=0;return(true);else return(false);/入隊操作,即當(dāng)停車場滿了的時候,再到達的車輛進去便道隊列int enterbiandao(biandao *q,int x)node *newnode;newnode=new node;if(newnode!=null)newnode-bianhao=x;newnode-next=null;q-rear-next=newnode;q-rear=newnode; q-count+;return(true);else return(false);/出隊操作,即便道上的車輛從便道開出來int deletebian

7、dao(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);/判斷便道隊列是否為空int isbiandaoempty(biandao q)if(q.front=q.rear)return(true);else return(false); /當(dāng)count=0時,就空了/依次顯示便道上停放的所有車輛void showbian

8、dao(biandao q)node *p;p=q.front-next;if(p=null)cout便道上沒有停放車輛!endl;else while(p!=null) cout牌照:bianhaonext;36/計算停留時間差double time(int h1,int m1,int s1,int h2,int m2,int s2)double p,q;p=h1*3600+m1*60+s1-(h2*3600+m2*60+s2);q=(double)p/3600;return(q); /計算停車費用double cost(double t,int u)return(t*u);/主函數(shù)void

9、 main()double time,cost;int ch;int x,*y,z;int i,flag=1,h,m,s,unit_price,hh,mm,ss;y=new int;seqstack *t; /定義停車棧t=new seqstack;initseqstack(t);biandao *q; /定義便道隊列q=new biandao;initbiandao(q);seqstack *r; /定義讓路棧r=new seqstack;initseqstack(r);cout請設(shè)置停車費用單價:(_元/小時)unit_price;while(flag) cout*endl; cout請選

10、擇命令:endl1:到達 endl2:離開 endl3:依次顯示停車場內(nèi)停放車輛endl4:依次顯示便道上停放車輛 endl5:結(jié)束endl; cout*ch; switch(ch) case 1: cout請輸入到達的汽車牌照號碼:x; if(isseqstackfull(*t) cout停車場已滿,請在便道等候!endl; enterbiandao(q,x); cout將此車停放在便道的count號位置!endl; else while(1) cout請輸入到達的時間(例如,21 08 23):hms; if (h23) continue; / 輸入數(shù)據(jù)不合法,回去重新輸入 if (m59

11、) continue; if (s-1 & s61)break; / 輸入時間全部合法,退出循環(huán) push(t,x,h,m,s); cout將此車停放在停車場的top+1號停車位置endl; break; case 2: if(isseqstackempty(*t) cout停車場內(nèi)已沒有車輛endl; else cout請輸入要離開的汽車的車牌照號碼:x; if(find(*t,x)=-1) cout停車場內(nèi)沒有該汽車!endl; else /有該號碼的汽車 while(1) cout請輸入離開的時間(例如,23 58 03):hms; if (h23) continue; / 輸入數(shù)據(jù)不合

12、法,回去重新輸入 if (m59) continue; if (s-1 & stop) pop(t,y,&hh,&mm,&ss); /要離開的車輛正好是最后一輛進入停車場的車time=time(h,m,s,hh,mm,ss); cout停留時間為:time小時endl; /結(jié)賬 cost=cost(time,unit_price);cout應(yīng)繳費用為:cost元endl; else for(i=(find(*t,x)+1);itop;)/該車不是最后一輛進入停車場的車,其它車要讓路 pop(t,y,&hh,&mm,&ss); push(r,*y,hh,mm,ss); /進入讓路棧r pop(t,y,&hh,&mm,&ss); /要離開的車輛離開了 time=time(h,m,s,hh,mm,ss); cout停留時間為:time小時endl; /結(jié)賬 cost=cost(time,unit_price); cout應(yīng)繳費用為:cost元endl;for(i=0;itop;) /讓路的車輛重新回到停車場pop(r,y,&hh,&mm,&ss);push(t,*y,hh,mm,ss); if(!isbiandaoempty(*q) deletebi

溫馨提示

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

評論

0/150

提交評論