版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
停车场模拟管理程序的设计与实现实验报告问题描述设停车厂只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门后,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走。基本要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车辆离去,则显示开出过程。栈以顺序结构出现,队列以链表结构实现。运行与调试(1)、连续有7辆车到来,牌照号分别为JF001、JF002、JF003、JF004、、JF005、JF006、JF007,前5辆车应该进入停车位1-5车位,第6、7辆车应停入便道的1、2位置上。(2)、(1)中的情况发生后,让牌照号为JF003的汽车从停车厂开走,应显示JF005、JF004的让路动作和JF006从便道到停车位上的动作。(3)、随时检查停车位和便道的状态,不应该出现停车位有空位而便道上还有车的情况。源程序//停车场模拟管理程序的设计与实现.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<iostream>#include<string>usingnamespacestd;#defineMAX_STOP5#defineMAX_PAVE100typedefstruct{ stringlicense_plate; intstate; intpassageway;}CAR;typedefstruct{ CARSTOP[MAX_STOP]; inttop;}STOPPING;typedefstruct{ CARPAVE[MAX_PAVE]; intfront; intrear; intnum;}PAVEMENT;typedefstruct{ CARBUFFER[MAX_STOP]; inttop;}BUFFER;voidwelcome();voiddisplay(STOPPING*S,BUFFER*B,PAVEMENT*P);STOPPING*init_stopping();BUFFER*init_buff();PAVEMENT*init_pavement();intcar_come(STOPPING*S,PAVEMENT*P);intcar_leave(STOPPING*,BUFFER*,PAVEMENT*);int_tmain(intargc,_TCHAR*argv[]){ STOPPING*S; S=init_stopping(); BUFFER*B; B=init_buff(); PAVEMENT*P; P=init_pavement(); charkey; welcome(); cin>>key; do { if(key=='C'||key=='c') { car_come(S,P); welcome(); } if(key=='L'||key=='l') { car_leave(S,B,P); welcome(); } if(key=='P'||key=='p') { display(S,B,P); welcome(); } cin>>key; }while(key!='Q'&&key!='q'); return0;}voidwelcome(){ cout<<"<<<<<<<<<<<<<<<<<<<欢迎使用本程序>>>>>>>>>>>>>>>>>>"<<endl; cout<<"本程序为停车场的模拟管理程序,有车到来时请按【C】键"<<endl; cout<<"然后根据屏幕提示进行相关操作,有车要走时请按【L】键"<<endl; cout<<"然后根据屏幕提示进行相关操作,显示停车情况按【P】键"<<endl; cout<<"然后根据屏幕提示进行相关操作,要退出程序请按【Q】键"<<endl; cout<<"请选择您要进行的操作:";}voiddisplay(STOPPING*S,BUFFER*B,PAVEMENT*P){ if(S->top==-1) cout<<"停车位上无车辆!"<<endl; else { intj=1; while(S->top>-1) //停车场栈进入辅助栈 { B->top++; B->BUFFER[B->top]=S->STOP[S->top]; S->top--; } while(B->top!=-1) //辅助栈重新进入停车场栈 { S->top++; S->STOP[S->top]=B->BUFFER[B->top]; cout<<j<<"车位——"<<B->BUFFER[B->top].license_plate<<endl; j++; B->top--; } } strings[100]; intm=0; if(P->num==0) cout<<"便道上无车辆!"<<endl; else { cout<<"便道位的情况:"<<endl; while(P->num!=0) { m++; P->front=(P->front+1)%MAX_PAVE; s[m]=P->PAVE[P->front].license_plate; cout<<m<<"位置——"<<P->PAVE[P->front].license_plate<<endl; P->num--; } for(intn=m-1;n>=0;n--) { P->rear=(P->rear+1)%MAX_PAVE; P->PAVE[P->rear].license_plate=s[n]; P->PAVE[P->rear].passageway=1; P->num++; } }}STOPPING*init_stopping(){ STOPPING*s; s=newSTOPPING; if(!s) returnNULL; else { s->top=-1; s->STOP->passageway=0; s->STOP->state=0; returns; }}BUFFER*init_buff(){ BUFFER*b; b=newBUFFER; if(!b) returnNULL; else { b->top=-1; b->BUFFER->passageway=0; b->BUFFER->state=0; returnb; }}PAVEMENT*init_pavement(){ PAVEMENT*p; p=newPAVEMENT; p->PAVE->passageway=0; p->PAVE->state=0; p->front=p->rear=MAX_PAVE-1; p->num=0; returnp;}intcar_come(STOPPING*S,PAVEMENT*P){ stringpos; cout<<"请输入要停车的车辆牌照:"; cin>>pos; if(S->top==MAX_STOP-1) { if(P->num==MAX_PAVE) return0; else { P->rear=(P->rear+1)%MAX_PAVE; P->PAVE[P->rear].license_plate=pos; P->PAVE[P->rear].passageway=1; P->num++; cout<<"牌照为"<<pos<<"的汽车停入便道位的"<<P->num<<"车位!"<<endl; return1; } } else { S->top++; S->STOP[S->top].license_plate=pos; S->STOP[S->top].state=1; cout<<"牌照为"<<pos<<"的汽车停入停车位的"<<S->top+1<<"车位!"<<endl; return1; }}intcar_leave(STOPPING*S,BUFFER*B,PAVEMENT*P){ stringpos; cout<<"请输入要开走的车辆的牌照:"; cin>>pos; if(S->top==-1) cout<<"停车位上无车辆!"<<endl; else { while(S->STOP[S->top].license_plate!=pos) { B->BUFFER[B->top+1]=S->STOP[S->top]; B->top++; cout<<"牌照为"<<S->STOP[S->top].license_plate<<"的汽车暂时退出停车位;"<<endl; S->top--; } cout<<"牌照为"<<pos<<"的汽车从停车场开走;"<<endl; while(B->top!=-1) { S->STOP[S->top]=B->BUFFER[B->top]; //将便道信息暂时入辅助栈 S->top++; cout<<"牌照为"<<B->BUFFER[B->top].license_plate<<"的汽车停回停车位的"<<S->top<<"车位;"<<endl; B->top--; } if(P->front!=P->rear) //便道上有车时 { S->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代账公司物品采购制度
- 采购店面管理制度
- 名词解释统一采购制度
- 标准件采购管理制度
- 企业物资采购内控制度
- 书馆馆藏文献采购制度
- 采购部财务报销制度
- 药品设备采购制度
- 企业采购与付款管理制度
- 敬老院采购制度
- 三级 模块二 项目六 功能促进 任务三 指导或协助老年人使用安全防护性辅助器具
- 2026年安徽工贸职业技术学院单招职业技能测试题库附答案详解ab卷
- 2026贵州省气象部门第二批公开招聘应届毕业生22人考试参考题库及答案解析
- 2026年咸宁职业技术学院单招职业倾向性测试题库及答案详解(网校专用)
- 浙江省名校协作体2024-2025学年高三下学期联考英语试题+答案
- 1999年制干部履历表8k
- 中国普通食物营养成分表一览
- 潜水医学PPT完整全套教学课件
- 水稻病虫害综合防治课件
- 咨询项目突发事件应急预案
- 食品生产通用卫生规范宣贯培训课件
评论
0/150
提交评论