文档详情

停车场模拟管理的程序设计与实现实验报告.doc

发布:2017-11-02约4.64千字共9页下载文档
文本预览下载声明
停车场模拟管理程序的设计与实现实验报告 问题描述 设停车厂只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门后,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走。 基本要求 以栈模拟停车场,以队列模拟车场外的便道,按照从终端输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出车辆在停车场内或便道上的停车位置;若是车辆离去,则显示开出过程。栈以顺序结构出现,队列以链表结构实现。 运行与调试 (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)
显示全部
相似文档