




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、試驗題目 模擬停車場管理一、 需求分析1、 程序的基本功能: 主控功能:介紹程序的基本功能,并給出程序功能所對應的鍵盤操作的提示,如車到來或離去的表示方法,停車場或者便道的狀態的查詢方法提示等。 汽車到來:首先要查詢當前停車的狀態,當停車場非滿時,將其駛入停車場(入棧),開頭計費;當停車場滿時,讓其進入便道等候(入隊)。 汽車離開停車場:當某輛車要離開停車場的時候,比他后進停車場的車要為他讓路,(即將這些車依次“壓入”幫助棧),開走懇求離開的車輛,再將幫助棧中的車依次出棧,“壓入”停車場;同時依據離開的車在停車場停留的時間進行收費;最終查詢是否有車在便道等候,若有,將便道上的第一輛車駛入停車場
2、(先出隊,再入棧),開頭計費。 查詢狀態:用來在屏幕上顯示停車位和便道上各位置的狀態。2、 輸入輸出要求: 輸入:汽車“到達”或“離去”的信息、汽車牌照號碼、汽車到達或離去的時刻。 輸出:若是車輛到達,則輸出車輛在停車場內或便道上的停車位置;若是車輛離去,則輸出車輛在停車場內停留的時間和應繳納的費用(假設在便道上等候的時間不收費)。3、 測試數據:當停車場容量為5時,連續有7輛車到來,牌照號分別為F001、F002、F003、F004、F005、F006、F007,前5輛車應當進入停車位15車位,第6、7輛車應停入便道的1、2位值上。牌照號為F003的汽車從停車場開走,應顯示F005、F004
3、的讓路動作和F006從便道到停車位上的動作。二、 概要設計1、 抽象數據類型的定義:使用棧來模擬停車場,使用隊列來模擬停車場外的便道;還需另設計一個幫助棧,臨時停放為給要離去的汽車讓路而從停車場退出來的汽車。2、 本程序包括以下4個模塊: 汽車進停車場:假如停車場滿了,就將其余的車停放在便道,將車依次進隊;假如停車場沒滿,就將車依次進棧; 汽車出停車場:顯示車出停車場的信息,假如便道上有車則將車停入停車場,將車進站,并顯示新進入停車場的車輛信息; 查詢停車場信息:顯示停車場停放車輛的信息;顯示便道等候車輛的信息; 主程序模塊:進入停車場;駛出停車場;查詢停車場信息;退出程序;3、 各程序模塊之
4、間的層次關系 主程序模塊 汽車進入 汽車離開 查詢車輛三、 具體設計:1、 類型數據結構體的定義:typedef struct Carchar licenseN;float time;char state;Car; /汽車類型的定義typedef structCar PackMAX_PARK;int top;ParkStack; /挨次棧停車場的定義typedef struct qnodeCar data;struct qnode *next;Qnode; /各汽車信息的存儲空間typedef structQnode *front,*rear;RoadQueue; /用來表示隊頭和隊尾位置的指
5、針2、 偽碼算法:#include<iostream.h>#include<stdlib.h>#include<string.h>#define MAX_PARK 4#define N 10typedef struct Carchar licenseN;float time;char state;Car;typedef structCar PackMAX_PARK;int top;ParkStack;typedef struct qnodeCar data;struct qnode *next;Qnode;typedef structQnode *front
6、,*rear;RoadQueue;ParkStack *Init_ParkStack()ParkStack *s;s=new ParkStack;s->top=-1;return s;int Empty_ParkStack(ParkStack*s)if(s->top=-1)return 1;else return 0;void Push_ParkStack(ParkStack *s,Car x) s->top+; strcpy(s->Packs->top.license,x.license); s->Packs->top.state=x.state;
7、s->Packs->top.time=x.time;void Pop_ParkStack(ParkStack *s,Car *x)*x=s->Packs->top;s->top-;RoadQueue *Init_RoadQueue()RoadQueue *q;Qnode *p;q=new RoadQueue;p=new Qnode;p->next=NULL;q->front=p;q->rear=p;return q;void In_RoadQueue(RoadQueue *q,Car x)Qnode *p;p=new Qnode;strcpy(p
8、->data.license,x.license);p->data.state=x.state;p->next=NULL;q->rear->next=p;q->rear=p;int Empty_RoadQueue(RoadQueue *q)if(q->front=q->rear)return 1;elsereturn 0;void Out_RoadQueue(RoadQueue *q,Car *x)Qnode *p;if(Empty_RoadQueue(q)cout<<"tt"<<"便道為空&
9、quot;elsep=q->front->next; q->front->next=p->next;*x=p->data;delete p;if(q->front->next=NULL)q->rear=q->front;void Carin(ParkStack *q,RoadQueue *p)Car c;cout<<"tt"<<"請輸入當前時間:"cin>>c.time;cout<<"tt"<<"請輸入車牌
10、號:"cin>>c.license;cout<<"tt"<<"請輸入停車狀態(P:停車,W:等待):"cin>>c.state;if(q->top=MAX_PARK-1)cout<<"tt"<<"新來的車在便道等候停車!"In_RoadQueue(p,c);elsePush_ParkStack(q,c);cout<<"tt"<<"車已在停車場停車,現在開頭計時!"
11、cout<<endl;void Carout(ParkStack *q,ParkStack *s,RoadQueue *p)char licenseN;Car c;float t;double a=0;cout<<"tt"<<"請輸入當前時間:"cin>>t;cout<<"tt"<<"請輸入車牌號:"cin>>license;Pop_ParkStack(q,&c); while (strcmp(c.license,licen
12、se)!=0) Push_ParkStack(s,c); Pop_ParkStack(q,&c); a=(t-c.time)*10;cout<<endl<<"tt"<<"車牌號為"<<license<<"的車輛駛出停車場"<<endl; cout<<"tt"<<"停車費用為:"<<a<<endl; while (!Empty_ParkStack(s) Pop_ParkS
13、tack(s, &c); Push_ParkStack(q, c); if (!Empty_RoadQueue(p) Out_RoadQueue(p,&c);c.time=t;cout<<"tt"<<c.license<<"t進入停車場"<<endl; Push_ParkStack(q, c); void Carsearch(ParkStack *q,ParkStack *s,RoadQueue *p)Car c;Qnode *t;cout<<"tt停車場狀況為:&qu
14、ot;<<endl;if(Empty_ParkStack(q)cout<<"tt"<<"停車場為空"<<endl;else while(!Empty_ParkStack(q) Pop_ParkStack(q, &c);q->top-;Push_ParkStack(s, c);q->top+; while(!Empty_ParkStack(s) Pop_ParkStack(s, &c);cout<<"tt"<<c.license<&
15、lt;"tP"<<"t停車時刻:"<<c.time<<endl;Push_ParkStack(q, c); cout<<"tt-"<<endl;cout<<"tt便道狀況為:"<<endl;t=p->front->next;if(t=NULL) cout<<"tt"<<"便道為空"<<endl;else while(t!=NULL) cout&l
16、t;<"tt"<<t->data.license<<"tW"<<endl;t=t->next; int main()ParkStack *p,*s;RoadQueue *t;int a; p=Init_ParkStack();s=Init_ParkStack(); t=Init_RoadQueue();while(a)cout<<"tt"<<"-請選擇-"<<endl;cout<<"tt"<
17、;<"*1.進入停車場*"<<endl;cout<<"tt"<<"*2.駛出停車場*"<<endl;cout<<"tt"<<"*3.查詢車狀況*"<<endl;cout<<"tt"<<"*0.退出程序*"<<endl;cout<<"tt"<<"請輸入:"cin>>a;switch(a) case 1: Carin(p,t); cout<<endl<<endl; break; case 2: Carout(p,s,t); cout<<endl<<endl; break; case 3: Carsearch(p,s,t); cout<<endl<<endl; break; case 0:break;return 0;3、 函數間的調用關系:void Push_ParkStackvoid Pop_ParkStackvoid Out_RoadQueuevoi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 燈具環境友好型設計與綠色制造考核試卷
- 生物質能發電項目的社會影響評估考核試卷
- 生態產品價值實現機制考核試卷
- 石墨礦石的浮選與熔煉過程考核試卷
- 管道工程法律法規與政策考核試卷
- 糖果與巧克力品牌營銷經驗分享考核試卷
- 山東旅游職業學院《計算機數學》2023-2024學年第一學期期末試卷
- 喀什理工職業技術學院《安全監測技術及實驗》2023-2024學年第二學期期末試卷
- 山東藝術設計職業學院《土建工程基礎》2023-2024學年第二學期期末試卷
- 山東省聊城市華陽中學2024-2025學年高三保溫練習(二)語文試題含解析
- DPtechIPS2000系列入侵防御系統培訓膠片課件
- “四不傷害”安全生產專題培訓課件
- 阿特拉斯空壓機保養課件
- (房屋建筑部分)工程建設標準強制性條文2023年版
- 幼兒園中班語言《小兔子開鋪子》課件
- 公司面談表模板
- 蘇教版科學一年級下冊第10課形形色色的動物課件25張
- 超聲診斷學:局灶性肝病(肝臟占位性病變)
- GB∕T 5019.8-2009 以云母為基的絕緣材料 第8部分:玻璃布補強B階環氧樹脂粘合云母帶
- 延期還款申請表
- OSN9800光傳輸網絡解決方案
評論
0/150
提交評論