停车场模拟管理的程序设计与实现实验报告.doc
文本预览下载声明
停车场模拟管理程序的设计与实现实验报告
问题描述
设停车厂只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门后,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走。
基本要求
以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车辆离去,则显示开出过程。栈以顺序结构出现,队列以链表结构实现。
运行与调试
(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
#includeiostream
#includestring
using namespace std;
#define MAX_STOP 5
#define MAX_PAVE 100
typedef struct
{
string license_plate;
int state;
int passageway;
}CAR;
typedef struct
{
CAR STOP[MAX_STOP];
int top;
}STOPPING;
typedef struct
{
CAR PAVE[MAX_PAVE];
int front;
int rear;
int num;
}PAVEMENT;
typedef struct
{
CAR BUFFER[MAX_STOP];
int top;
}BUFFER;
void welcome();
void display(STOPPING *S,BUFFER *B,PAVEMENT *P);
STOPPING *init_stopping();
BUFFER *init_buff();
PAVEMENT *init_pavement();
int car_come(STOPPING *S,PAVEMENT *P);
int car_leave(STOPPING *,BUFFER *,PAVEMENT *);
int _tmain(int argc, _TCHAR* argv[])
{
STOPPING *S;
S=init_stopping();
BUFFER *B;
B=init_buff();
PAVEMENT *P;
P=init_pavement();
char key;
welcome();
cinkey;
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();
}
cinkey;
}while(key!=Qkey!=q);
return 0;
}
void welcome()
{
cout欢迎使用本程序endl;
cout本程序为停车场的模拟管理程序,有车到来时请按【C】键endl;
cout然后根据屏幕提示进行相关操作,有车要走时请按【L】键endl;
cout然后根据屏幕提示进行相关操作,显示停车情况按【P】键endl;
cout然后根据屏幕提示进行相关操作,要退出程序请按【Q】键endl;
cout请选择您要进行的操作:;
}
void display(STOPPING *S,BUFFER *B,PAVEMENT *P)
{
if(S-top==-1)
cout停车位上无车辆!endl;
else
{
int j=1;
while(S-top-1)
显示全部