模擬停車場系統(tǒng)_第1頁
模擬停車場系統(tǒng)_第2頁
模擬停車場系統(tǒng)_第3頁
模擬停車場系統(tǒng)_第4頁
模擬停車場系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、模擬停車場分析與設(shè)計摘 要本文是關(guān)于了解并掌握數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,具備初步的獨(dú)立分析和設(shè)計能力。編寫源程序時,每個子功能定義為相應(yīng)的子函數(shù),在主函數(shù)中調(diào)用各子函數(shù),要程序結(jié)構(gòu)清晰。數(shù)據(jù)的存儲結(jié)構(gòu)根據(jù)需要自行定義。其中測試數(shù)據(jù)包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。分析算法的時間復(fù)雜度,要求算法的效率盡可能高。用棧模擬停車場,棧結(jié)點(diǎn)是結(jié)構(gòu)體,用隊(duì)列模擬便道,隊(duì)列結(jié)點(diǎn)也是結(jié)構(gòu)體。主要功能: 本系統(tǒng)是對停車場的模,它能清除的顯示操作人員所需的操作,使用方便,簡潔?;A(chǔ)數(shù)據(jù)管理:模擬車站,模擬便道,還有一個臨時的棧,分別通過進(jìn)出車站函數(shù)控制。進(jìn)站管理:用進(jìn)入函數(shù)把車輛進(jìn)入車站或便道。出

2、站管理:用出棧函數(shù)把出棧的車輛出棧,然后如果便道有車進(jìn)入車站。打印信息:分兩類打印1.車站信息2.便道信息關(guān)鍵詞:停車場;棧;后進(jìn)先出;排隊(duì)- I -模擬停車場分析與設(shè)計目 錄摘 要I1 需求分析32邏輯結(jié)構(gòu)設(shè)計43數(shù)據(jù)結(jié)構(gòu)44程序設(shè)計45調(diào)試結(jié)果15總結(jié)16參考文獻(xiàn)171 需求分析主要功能: 本系統(tǒng)是對停車場的模,它能清楚的顯示操作人員所需的操作,使用方便,簡潔?;A(chǔ)數(shù)據(jù)管理:模擬車站,模擬便道,還有一個臨時的棧,分別通過進(jìn)出車站函數(shù)控制。進(jìn)站管理:用進(jìn)入函數(shù)把車輛進(jìn)入車站或便道。出站管理:用出棧函數(shù)把出棧的車輛出棧,然后如果便道有車進(jìn)入車站。打印信息:分兩類打印1.車站信息2.便道信息。2

3、邏輯結(jié)構(gòu)設(shè)計打印信息進(jìn)入NOYES進(jìn)入便道車輛離開進(jìn)入車站車站滿否車輛進(jìn)入,傳入?yún)?shù)開始3數(shù)據(jù)結(jié)構(gòu)用棧模擬停車場,棧結(jié)點(diǎn)是結(jié)構(gòu)體,用隊(duì)列模擬便道,隊(duì)列結(jié)點(diǎn)也是結(jié)構(gòu)體。4程序設(shè)計#include<iostream.h>#include<stdlib.h>#include<string.h>#define N 2#define price 0.1/時間struct timeint hour;int min;/車輛信息struct carnodechar num10;time reach;time leave;/模擬車站 棧struct stackcarcarno

4、de *base;carnode *top;int stacksize;struct queuenodecarnode *data;queuenode *next;/模擬通道struct linkqueuequeuenode *frond;queuenode *rear;/便道空否int queueemty(linkqueue q)if(q.frond=q.rear)return 1;else return 0; /初始化棧void initstack(stackcar *s)s->base=new carnode;if(!s->base) exit(0);/分配失敗 退出s-&g

5、t;top=s->base;s->stacksize=N;/進(jìn)出棧int push(stackcar *s,carnode *e)if(s->top-s->base=s->stacksize)return 0;else*s->top+=*e;return 1;int pop(stackcar *s,carnode *e)if(s->top=s->base)return 0;/*=VS=?!小錯就是大錯*/else *e=*-s->top;return 1;/棧判空函數(shù)int stackempty(stackcar s)if(s.base=s

6、.top) return 1;else return 0;/初始化便道int initqueue(linkqueue *q)q->frond=q->rear=new queuenode;if(!q->rear)exit(0);q->frond->next=NULL;return 1;/進(jìn)出便道int enqueue(linkqueue *q,carnode *e)queuenode *p;p=new queuenode;if(!p)exit(0);p->data=e;p->next=0;q->rear->next=p;q->rear=

7、p;return 1;int dequeue(linkqueue *q,carnode *e)queuenode *p;if(q->frond=q->rear)return 0;p=q->frond->next;e=p->data;q->frond->next=p->next;if(q->rear=p)q->rear=q->frond;delete(p);return 1;/車輛進(jìn)入時處理int arrive(stackcar *in,linkqueue *wait) carnode *i;i=new carnode;cerr&

8、lt;<"輸入車號:"cin.ignore();/消除前面回車的影響cin.getline(i->num,10);if(in->top-in->base<N)/棧沒滿時cerr<<"車到達(dá)的時間(00:00):小時為"cin>>i->reach.hour;cout<<"tt 分鐘為"cin>>i->reach.min;push(in,i);cerr<<"a?"/system("cls");cou

9、t<<"tt車輛已成功進(jìn)入停車場"<<endl<<endl;cout<<"tt車號為"<<i->num<<"的車進(jìn)入t"cout<<"到達(dá)的時間:"<<i->reach.hour<<":"<<i->reach.min<<endl<<endl;return 1;else queuenode *w;w=new queuenode;w->

10、;data=i;w->next=NULL;wait->rear->next=w;wait->rear=w;cout<<"tt抱歉 車位已滿 請在便道等待"<<endl;return 1;return 0;/車輛離開時處理函數(shù)int leave(stackcar *in,stackcar *temp,linkqueue *wait)int flag=0,a1,a2,b1,b2;double money;carnode *p,*t;queuenode *q;p=new carnode;cout<<"請輸入車牌

11、號:"cin.ignore();cin.getline(p->num,10);while(!stackempty(*in)t=new carnode;pop(in,t);if(strcmp(p->num,t->num)=0)cout<<"輸入離開的時間(00:00)"cin>>p->leave.hour,cin>>p->leave.min;cout<<"車牌號為"<<p->num<<"的車離開"<<endl

12、;a1=p->leave.hour;a2=t->reach.hour;b1=p->leave.min;b2=t->reach.min;if(b1>=b2)money=(a1-a2+24)%24*60+(b1-b2)%60)*price;else money=(a1-a2+23)%24*60+(b1-b2+60)*60)*price;cout<<"車到達(dá)的時間:"<<t->reach.hour<<":"<<t->reach.min<<endl;cout&l

13、t;<"車離開的時間:"<<p->leave.hour<<":"<<p->leave.min<<endl;cout<<"費(fèi)用為:"<<money<<endl;flag=1;delete(t);break;else push(temp,t);if(flag=0)cout<<"沒有此車"<<endl;while(!stackempty(*temp)pop(temp,p);push(in,p);d

14、elete(p);if(flag&&wait->frond!=wait->rear)q=new queuenode;q=wait->frond->next;t=q->data;if(q) push(in,t);cout<<"車號為"<<t->num<<"的車進(jìn)入時間是:"cin>>t->reach.hour;cout<<"tt 分鐘為"cin>>t->reach.min;wait->frond-

15、>next=q->next;wait->rear=wait->rear;if(q=wait->rear)wait->rear=wait->frond;delete(q);return 1;/輸出打印信息void print(stackcar *in,stackcar *temp,linkqueue *wait)char c;int count=1;carnode *p,*t;queuenode *q;p=new carnode;t=new carnode;q=new queuenode;cout<<"tt 1:打印便道的車輛數(shù)&q

16、uot;<<endl;cout<<"tt 2:打印停車場的車輛數(shù)"<<endl;cout<<"tt 3:退出打印"<<endl;cout<<"tt請輸入你的選擇"cin>>c;if(c='1')q=wait->frond->next;if(wait->frond!=wait->rear)while(q)p=q->data;cout<<"第"<<count<&

17、lt;"輛車的車牌號是"<<p->num<<endl;q=q->next;count+;else cout<<"便道是空的"<<endl;if(c='2')count=0;while(!stackempty(*in)pop(in,t);push(temp,t);while(!stackempty(*temp)pop(temp,t);cout<<"第"<<+count<<"輛車的車牌是"<<t-

18、>num<<endl;count+;push(in,t);if(count=0)cout<<"車站里沒有車"<<endl;void menu()cout<<"tt*"<<endl;cout<<"tt*"<<endl;cout<<"ttt 1:車到達(dá) "<<endl;cout<<"ttt 2:車離開"<<endl;cout<<"ttt 3:

19、打印信息"<<endl;cout<<"ttt 4:退出"<<endl;cout<<"tt*"<<endl;cout<<"tt*"<<endl;cout<<"請選擇:"void main()char c;stackcar in,t;linkqueue road;initstack(&in);initstack(&t);initqueue(&road);cout<<endl;cout<<"ttt模擬停車場系統(tǒng)"<<endl<<endl;while(1)menu();cin>>c;switch(c)case '1':arrive(&in,&road);break;case '2':leave(&in,&t,&road);break;case '3':print(&in,&t,&road);break;default:exit(0);5調(diào)試結(jié)果程序

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論