停车场模拟管理程序的设计与实现Word文档格式.docx
- 文档编号:22603622
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:23
- 大小:373.03KB
停车场模拟管理程序的设计与实现Word文档格式.docx
《停车场模拟管理程序的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《停车场模拟管理程序的设计与实现Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
intnum;
}PAVEMENT;
4、当某辆车要离开停车场的时候,比它后进停车位的车要为它让路,而且当它开走之后让路的车辆还要按照原来的停放次序再次进入停车位的某个位置上,为了完成这项功能,再定义一个辅助栈,停车位中让路的车依次“压入”辅助栈,待提出开走请求的车开走后,再从辅助栈的栈顶依次“弹出”到停车位中。
对辅助栈也采用顺序栈,具体定义与停车栈类似,如下:
typedefstruct{
CARBUFFER[MAX_STOP];
inttop;
}BUFFER;
三、功能函数设计
本程序从总体上分为4个大的功能模块,分别为程序功能介绍和操作提示模块,汽车进入车位的管理模块,汽车离开停车位的管理模块和查看停车场停车状态的查询模块。
具体功能描述如下:
1、程序功能介绍和操作提示模块:
此模块给出程序的功能,并给出程序功能所对应的键盘操作的提示,具体屏幕显示如下所示:
☆☆☆☆☆☆☆☆☆欢迎使用本程序☆☆☆☆☆☆☆☆☆☆☆☆
本程序为停车场的模拟管理程序,有车到来时请按[C]键。
然后根据屏幕提示进行相关操作,有车要走时请按[L]键。
然后根据屏幕提示进行相关操作,显示停车情况请按[D]键。
然后根据屏幕提示进行相关操作,要退出程序请按[Q]键。
请选择您要做的操作!
函数原型为:
voidwelcome()
{
cout<
<
"
☆☆☆☆☆☆☆☆☆欢迎使用本程序☆☆☆☆☆☆☆☆☆☆☆☆"
endl;
}
2、汽车进入停车位的管理模块:
此模块用来登记停车场的汽车车牌号和对该车的调度。
其中,调度过程要以屏幕信息的形式反馈给用户来指导用户对车辆进行调度。
例如,调度过程要以屏幕信息的形式反馈给用户来指导用户对车辆的调度。
例如,当期车位上0、1、2、3车位分别停放着牌照为JF001、JF002、JF003、JF004的汽车,便道上无汽车,当牌照为JF005的汽车到来后屏幕应给出如下提示信息:
牌照为JF005的汽车停入停车位的5号车位!
按A键继续程序的运行。
voidcome(STOPPING*s,BUFFER*l,PAVEMENT*q)
{
CARx;
charb[9];
欢迎停车,请输入车牌号(最多位):
;
cin>
>
b;
for(inti=0;
i<
9;
i++)
x.license_plate[i]=b[i];
//将车辆车牌号存入类型CAR的x.license_plate中
if(s->
top==MAX_STOP-1)
{
车位已满,请进入便道上等候!
q->
rear=(q->
rear+1)%MAX_PAVE;
//若停车场车位已满,将车辆信息存入队列中
PAVE[q->
rear]=x;
num++;
}
else{
s->
top++;
STOP[s->
top]=x;
//若停车场车位未满,将车辆信息存入栈中
cout<
牌照为"
s->
top].license_plate<
的汽车停入停车位的"
top<
号车位!
按A键继续进行程序"
3、汽车离开停车场车位的车辆做调度处理。
其中调度过程要以屏幕信息的形式反馈给用户来指导用户对车辆的调度,当有车辆离开停车场后应该立刻检查便道上是否有车,如果有,则立即让便道上的第一辆汽车进入停车位。
例如,当前停车位上0、1、2、3、4车位分别停放着牌照为JF001、JF002、JF003、JF004、JF005的汽车,便道上的1和2位置上分别停放着牌照为JF006和JF007的汽车,当接收到JF003要离开的信息时,屏幕应给出如下提示信息:
voidleave(STOPPING*s,BUFFER*l,PAVEMENT*q)
欢迎取车,请输入您的车所停在的车位号:
intn;
n;
while(n<
0||n>
4)
输入错误,请重新输入!
cin>
if(n>
top)
无此车!
return;
if(n<
while(n!
=s->
{
的汽车暂时退出停车位!
l->
BUFFER[l->
top]=s->
top];
//将停在要开走的汽车前面的汽车暂时退出停车场,存入临时栈中
top--;
}
if(n==s->
的汽车从停车场开走;
//汽车开走
while(l->
top!
=-1)
s->
top]=l->
l->
//将临时栈中的汽车再次存入停车场
while(s->
MAX_STOP-1&
&
q->
num!
=0)
if(q->
num==0)
break;
else
q->
front=(q->
front+1)%MAX_PAVE;
top]=q->
front];
//停车场未满,便道有车,此时存入停车场
num--;
4、查看停车场停车状态的查询模块:
此模块用来在屏幕上显示停车位和便道上各位置的状态,例如,当前车位上1、2、3、4和5车位分别停放着牌照为JF001、JF002、JF003、JF004和JF005的汽车,便道上的1和2位置上分别停放着牌照为JF006和JF007的汽车,当接收查看指令后,屏幕上应显示:
函数原型为:
voiddisplay(STOPPING*s,PAVEMENT*q)
inttopp;
topp=-1;
top==-1)
停车场无车!
停车场的情况:
while(topp!
topp++;
topp<
车位-----"
STOP[topp].license_plate<
//将停车场栈的车辆信息输出
便道上的情况:
intfrontt=q->
front;
intm=q->
num;
inti=0;
while(m!
i++;
m--;
cout<
PAVE[frontt+1].license_plate<
//输出便道上的车辆信息情况
frontt++;
由于程序应该能够随时处理用户所提出的各种操作请求,所以在主函数中用一个while循环结构随时监控键盘的按键操作,遇到相应的按键就转到对应函数继续运行,运行完该函数继续监控键盘按键,如此往复,直到接到“退出”指令程序才能结束。
部分代码如下:
charm='
A'
while(m=='
)
welcome();
chard;
d;
switch(d)
case'
C'
:
come(s,l,q);
L'
leave(s,l,q);
D'
display(s,q);
Q'
return0;
cin>
m;
四、界面设计
本程序的界面力求简洁、友好,每一步需要用户操作的提示以与每一次用户操作产生的调度结果都以中文的形式显示在屏幕上,使用户对要做什么和已经做了什么一目了然。
五、编码实现
#include"
stdafx.h"
#include<
iostream>
string.h>
usingnamespacestd;
#defineMAX_STOP5
charlicense_plate[9];
//汽车牌照,定义为一个字符数组类型
typedefstruct{
intfront,rear;
intnum;
intmain()
STOPPING*s;
s=newSTOPPING;
if(!
s)
returnNULL;
top=-1;
//建立停车场栈并初始化
BUFFER*l;
l=newBUFFER;
l)
//建立临时停车栈并初始化
PAVEMENT*q;
q=newPAVEMENT;
front=q->
rear=-1;
num=0;
//建立队列并初始化
六、运行与测试
1、连续有7辆车到来,牌照分别为JF001,JF002,JF003,JF004,JF005,JF006,和JF007,前五辆车应该停入车位0~4车位,第6辆和第7辆车应停入便道1和2位置上。
正常输入如上图
显示停车场停车情况
2、1中情况下让牌照为JF003的汽车从停车场开走
3、当停车场无此车时,取车会显示错误
4、当n>
4或n<
0时,会提示让从新输入
七、实验总结
此次实验主要是让我们更熟练的掌握栈和队列,入栈出栈,入队出队,通过这次实验,我更深刻的理解到了栈和队列运用的灵活与方便。
虽然过程中遇到许多困难,但在老师和同学的帮助下,终于将停车场实现出来,从中将自己掌握不好的知识点又巩固了,这次实验受益颇多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 模拟 管理程序 设计 实现