- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
停车场模拟管理程序
停车场模拟管理程序的设计与实现
设计目的:理解线性表的逻辑结构和存储结构,进一步提高
使用理论知识指导解决实际问题的能力。
一、问题的描述:
设停车场只有一个可停放几辆汽车的狭长通道,只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车辆开走,则排在便道上的第一辆汽车即可进入;当停车场内某辆汽车要开走时,由于停车场是狭长的通道,在它之后开入的车辆必须先推出车场为他让路,等车辆开出大门,为他让路的车辆再按原次序进入车场。试设计这样一个停车场模拟管理程序。
二、数据结构的设计:
(1)为了便于区分每辆汽车并了解其当前所处的位置,需要记录汽车的牌照号码和汽车当前的状态。
typedef struct{
char *license_plate;
char state;
int size;
int mem;
}CAR;
(2)为了便于停车场的管理,要为每个车位分配一个固定的编号。
(3)当停车场的停车位上都已停满了汽车,又有新的汽车到来时要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次序放在便道上,为便道上的每个位置分配一个固定的编号。当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车
位。
(4)当某辆车离开停车场的时候,比他后进停车位的车要为他让路,而且当他开走之后让路的车还要按照原来的停放次序再次进入停车位的某个车位上,为完成这项功能,定义一个结构体。
三、功能(函数)设计:
本程序从总体上分为四个功能模块,分别为:
(1)程序功能介绍和操作提示模块
void welcome(){
cout\t\t●欢迎使用本程序●endl;
cout本程序为停车场的模拟管理程序,有车到来时请按【C】键。endl;
cout然后根据屏幕提示进行相关操作,有车要走时请按【L】键。endl;
cout查看停车位和便道上的车辆状态,显示车牌号请按【P】键。endl;
cout然后根据屏幕提示进行相关操作,要退出程序请按【Q】键。endl;
cout\t\t请选择您要做的操作!endl;
}
(2)汽车进入停车位的管理模块
void come(){
char x[10]={\0};
int size=10;
CAR c;
init_CAR(c,size);
cout请输入汽车的车牌号(如JF999): ;
cinx;
push_CAR(c,x,size);
in_PAVEMENT(c,P);
pave_to_stop(P,S);
}
3)汽车离开停车位的管理模块
void leave(){
int r;
cout请输入让“停车场”几号停车位的车离开:;
cinr;
stop_to_buff(S,B,r);
out_STOPPING(S);
buff_to_stop(B,S);
pave_to_stop(P,S);
}
4)查看停车场状态的查询模块
int print(STOPPING *S,PAVEMENT *P){
int h,i,j,k,l;
k=P-front;
j=P-rear;
l=1;
h=-1;
cout停车位的情况:endl;
if(S-top1==-1){
cout停车场没有车辆。endl;
return 0;
}
else{
for(i=0;i=S-top1;i++){
couti+1车位----;
int u=0;
while(S-STOP[i].license_plate[u]!=\0){
coutS-STOP[i].license_plate[u];
u++;
}
coutendl;
}
}
cout便道上的情况:endl;
if(kj){
for(k;kj;){
coutl位置----;
k++;
int u=0;
while(P-PAVE[k].license_plate[u]!=\0){
coutP-PAVE[k].license_plate[u];
u++;
}
coutendl;
l++;
}
}
else if(kj){
for(k;kMAX_PAVE;){
coutl位置----;
k++;
int u=0;
while(P-PAVE[k].license_plate[u]!=\0){
coutP-PAVE[k].license_plate[u];
u++;
}
coutendl;
l++;
文档评论(0)