版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗二 停車場模擬管理系統(tǒng)一 題目內(nèi)容:設(shè)停車場只有一個可停放幾輛汽車的狹長通道,且只有一個大門可供汽車進 出。汽車在停車場內(nèi)按車輛到達的先后順序依次排列,若車場內(nèi)已停滿幾輛汽車 ,則后來的汽車只能在門外的便道上等候,一旦停車場內(nèi)有車開走,則排在便道 上的第一輛車即可進入;當(dāng)停車場內(nèi)某輛車要離開時,由于停車場是狹長的通道 ,在它之后開入的車輛必須先退出車場為它讓路,待該車輛開出大門,為它讓路 的車輛再按原次序進入車場。在這里假設(shè)汽車不能從便道上開走,試設(shè)計這樣一 個停車場模擬管理程序。二 問題分析:(1)為了便于區(qū)分每輛汽車并了解每輛汽車當(dāng)前所處的位置,需要記錄汽車的 牌照號碼和汽車的當(dāng)前狀態(tài)
2、,所以為汽車定義一個新的類型CAR(2)由于車位是一個狹長的通道,所以不允許兩輛車同時進入停車位,當(dāng)有車到來要 進入停車位的時候車要順次停放,當(dāng)某輛車要離開時,比它后到的車要先暫時離開 停車位,而且越后到的車就越先離開停車位,顯然這和棧的“后進先出”特點相吻合, 所以可以使用一個棧來描述停車位。由于停車位只能停放有限的幾輛車,而且為了便于停車場的管理,要為每個車 位分配一個固定的編號,不妨設(shè)為1、2、3、4、5(可利用數(shù)組的下標(biāo)),分別表示停 車位的1車位、2車位、3車位、4車位、5車位,針對這種情況使用一個順序棧比較方(3)當(dāng)某輛車要離開停車場的時候,比它后進停車位的車要為它讓路,而且當(dāng)它開
3、走之后,讓路的車還要按照原來的停放次序再次進入停車位的某個車位上,為了完成這項功能,再定義一個輔助棧,停車位中讓路的車依次“壓入”輔助棧,待提出請求的車開走后再從輔助棧的棧頂依次“彈出”到停車位中,對輔助棧也采用順序棧,具體定義與停車位棧類似,(4)功能函數(shù)STOPPING * init_stopping() 初始化“停車位?!?BUFFER * init_buff() 初始化“輔助棧” PAVEMENT * init_pavement() 初始化“便道隊列” Int car_come(int pos) 將pos指定的汽車信息輸入“停車位?!?,并修改該車狀態(tài) Int car_leave(in
4、t pos) 將pos指定的汽車信息從“停車位?!眲h除,并修改該車狀態(tài) Int stop_to_buff(int pos) 將pos指定的汽車信息從“停車位棧”移動到“輔助?!?Int buff_to_stop(int pos) 將pos指定的汽車信息從“輔助?!币苿拥健巴\囄粭!?Int pave_to_stop(int pos) 將pos指定的汽車信息從“便道隊列”移動到“停車位?!?Int car_disp(int pos) 將pos指定的汽車信息顯示在屏幕上三,程序設(shè)計/ 停車場管理.cpp : Defines the entry point for the console appli
5、cation./#include<iostream.h>#include"stdio.h" #include <stdlib.h> #include<string.h>#include <memory.h>#include <time.h>#include <fstream.h>/#define STACKSIZE1 4/*停車場容量STACKSIZE1-1個位*/#define STACKSIZE2 10/*臨時停車場容量*/#define maxqueue 4 /只能存maxqueue-1個在便道#
6、define null 0/#include"Carinfo.h"#define LEN sizeof(struct Carinfo)#include"Sqstack.h"#include"tempstack.h"#include"Queue.h"#include"Reach.h"#include"Leave.h"#include"Disppark.h"#include"Disppave.h"#include"putininf
7、o.h"/*-車輛登記-*/void putininfo(Carinfo *car,Sqstack *park)/char ch128;/char timestr128;if(!car)cout<<"分配空間失??!"<<endl;elsecout<<"分配空間成功!可以登記停車。"<<endl;/printf("n請輸入進站時間:n");/scanf("%d",&car->clock_treach);/printf("n請輸出站時間:
8、n");/scanf("%d",&car->clock_tleave);time_t t;memset(car->clock_treach,0x0,25);/將內(nèi)存設(shè)為指定字符 time(&t);sprintf(car->clock_treach,"%s", ctime(&t);/printf("TIME:%s",car->clock_treach);/ofstream out1("c:test.txt",ios:app);/out1<<ch;/
9、out1.close(); / car->clock_treach=(int)ch;/ timestr=ch;/cout<<timestr;car->ordercode=park->getnum();printf("n歡迎進入!請輸入車牌號(6位):n");scanf("%s",&car->lisence);/*-便道類型*-*/class Queueprivate:int i;public:Carinfo *itemsmaxqueue;int top3;friend class Sqstack;friend
10、class tempstack;friend int Leave(Sqstack *park,tempstack *tmp,Queue *pave);Queue()top3=0;int queuein(Carinfo *car)if(top3+1)<maxqueue)top3+;itemstop3=car;cout<<"已經(jīng)進入便道!"<<endl;return 1;else cout<<"便道已滿!"<<endl; return 0;Carinfo * queueout()Carinfo *temp
11、;temp=items1;for(i=1;i<top3;i+) itemsi=itemsi+1; itemsi->ordercode-;top3-;return temp;/到達車輛信息 void Reach (Sqstack *park,Carinfo *car,Queue *pave)/*?*/ Carinfo *temp=new Carinfo;/temp->clock_tleave=car->clock_tleave;/ temp->clock_treach=car->clock_treach; strcpy(temp->clock_treac
12、h,car->clock_treach); strcpy(temp->lisence,car->lisence); if(car->ordercode) temp->ordercode=car->ordercode; else temp->ordercode=pave->top3+1; if(park->push1(park,temp)cout<<"?"<<endl;else cout<<"?"<<endl;pave->queuein(temp);
13、/*- 停車場類型-*/class Sqstackprivate:public:int top1;int numSTACKSIZE1;friend class tempstack;friend class Queue;friend int Leave(Sqstack *park,tempstack *tmp,Queue *pave); Carinfo * items1STACKSIZE1; Sqstack()for(int i=0;i<STACKSIZE1;i+) numi=0;top1=0;bool push1(Sqstack *park,Carinfo *car1)if(top1&g
14、t;=STACKSIZE1-1) /停車場已滿/printf("停車場已滿,請進入便道等待。nn");return 0;else /停車場未滿,進入停車場int i=top1+1;while(i!=1&&car1->ordercode<items1i-1->ordercode) items1i=items1i-1; i-;items1i=car1;/numi=1;top1+;return 1;Carinfo * pop1()Carinfo *temp;if(top1!=0)temp=items1top1;top1-;return temp;
15、 int getnum()for(int i=1;i<STACKSIZE1;i+) if(numi=0) numi=1; return i; return 0;void leavenum(int i)numi=0;int checknum(int i) return numi; ;/*- 臨時停車場類型 棧實現(xiàn) -*/class tempstackprivate:public:int top2;friend class Sqstack;friend class Queue;friend int Leave(Sqstack *park,tempstack *tmp,Queue *pave)
16、; Carinfo * items2STACKSIZE2; tempstack()top2=0;bool push2(tempstack *tmp,Carinfo *car2)if(top2>=STACKSIZE2-1)/printf("臨時停車場已滿,請去別處停車。nn");return 0;else/printf("臨時停車場未滿,進入臨時停車場nn");top2+;items2top2=car2;return 1;Carinfo * pop2()Carinfo *temp;if(top2!=0)temp=items2top2;top2-;re
17、turn temp;/- -/struct Carinfochar lisence6; /車輛信息int ordercode; /汽車進站設(shè)置的編號 char clock_treach25; char clock_tleave25;/(3)顯示停車場信息-void Disppark(Sqstack *park) /顯示停車場信息int i;printf("nnnn");if(park->top1=0) /停車場內(nèi)沒有車輛printf("停車場內(nèi)沒有車輛");elseprintf("這是站內(nèi)所停車輛信息:n");printf(&q
18、uot;-n");for(i=1;i<=park->top1;i+)printf("n車牌號 到達時間 n");printf("%sttt",park->items1i->lisence);/printf("%s",park->items1i->clock_treach); /printf("t%dt",park->items1i->clock_tleave); printf("n停車序號 n");printf("%dn&quo
19、t;,park->items1i->ordercode);printf("nn");printf("-n");printf("nnnn");void Disppave(Queue *pave)/?int i;printf("nnnn");if(pave->top3=0)printf("?n");elseprintf("3?:n");printf("-n");for(i=1;i<=pave->top3;i+)printf(&qu
20、ot;n? ? n");printf("%st",pave->itemsi->lisence);/printf("t%st",pave->itemsi->clock_treach);/printf("t%dt",pave->itemsi->clock_tleave);printf("n?n");printf("%dn",pave->itemsi->ordercode);printf("nn");printf("
21、;-n");printf("nnnn");/(2)車輛離開函數(shù)-int Leave(Sqstack *park,tempstack *tmp,Queue *pave)Carinfo *c;Carinfo *b;Carinfo *d;Carinfo *e;int locate;if(park->top1!=0)printf("n請輸入離開車輛的停車編號:");scanf("%d",&locate);if(!park->checknum(locate) printf("n 不存在該車!")
22、; return 0;while(park->items1park->top1->ordercode>locate)/排在離開車輛之前的車輛進入臨時棧b=park->pop1();if(!b)b=new Carinfo;cout<<"b NULL"<<endl;if(b->ordercode<locate) printf("車牌號為%s的汽車暫時退出%d停車位n",b->lisence,b->ordercode);tmp->push2(tmp,b);c=park->
23、pop1();/離開車輛信息if(!c)cout<<"c NULL"<<endl;printf("nnnn");printf("-n");printf("n-離開車輛信息-n");/printf("n停車序號 到達時間 n");printf("%dt",c->ordercode);/printf("t%st",c->clock_treach);printf("n車牌號 n");printf("
24、;%s",c->lisence);time_t t;memset(c->clock_tleave,0x0,25);/將內(nèi)存設(shè)為指定字符 time(&t);sprintf(c->clock_tleave,"%s", ctime(&t); /printf("TIME:%s",c->clock_tleave);/printf("tt%sn",c->clock_tleave);park->leavenum(c->ordercode); printf("n車牌號為%s
25、的汽車離開%d停車位n",c->lisence,c->ordercode);/如果停車場不滿,而便道上不空,則便道上的車輛進入停車場while(pave->top3>0&&park->top1<STACKSIZE1) int n=0;if(!(n=park->getnum()break;e=pave->queueout();e->ordercode=n;printf("便道上的%s號車進入第%d個停車位.n",e->lisence,e->ordercode);if(!e)cout<<"e NULL"<<endl;park->push1(park,e); if(!(pave->top3>0) printf("便道上已沒有車。n");while(tmp->top2>0)/排在離開車輛之前的車輛從臨時?;氐酵\噲鰀=tmp->pop2();if(!d)d=new Carinfo;cout<<"d NULL"
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版凈化車間工程綠色施工管理合同3篇
- 2024年度大數(shù)據(jù)與云計算戰(zhàn)略聯(lián)盟協(xié)議書范本3篇
- 2024年車貸還款計劃表3篇
- 2025版建筑工地臨時工勞動合同模板3篇
- 建筑工程財務(wù)結(jié)算承諾書
- 交通工具報廢更新管理辦法
- 電商配送司機招聘合同樣本
- 門店市場調(diào)研數(shù)據(jù)創(chuàng)業(yè)
- 煤炭開采節(jié)能措施
- 能源企業(yè)資源資產(chǎn)監(jiān)控試行辦法
- 2024年人教版小學(xué)三年級科學(xué)(上冊)期末試卷及答案
- 大學(xué)期末考試《電路理論》試卷及答案解析
- 2024年天津市中考英語試題卷(含答案)
- 2024-2034年中國皮帶輸送機托輥行業(yè)發(fā)展趨勢及投資前景預(yù)測報告
- FZ∕T 73037-2019 針織運動襪行業(yè)標(biāo)準(zhǔn)
- 經(jīng)典導(dǎo)讀與欣賞-知到答案、智慧樹答案
- (圖文并茂)綠化工程施工組織設(shè)計
- 《居里夫人的故事》閱讀測試題及答案
- MOOC 生物醫(yī)學(xué)傳感器與測量-山東大學(xué) 中國大學(xué)慕課答案
- 上海市民辦華育中學(xué)2022-2023學(xué)年六年級上學(xué)期期末科學(xué)試卷
- 食品安全與衛(wèi)生智慧樹知到期末考試答案2024年
評論
0/150
提交評論