停车场管理系统设计报告Word格式.docx
- 文档编号:15058577
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:13
- 大小:168.11KB
停车场管理系统设计报告Word格式.docx
《停车场管理系统设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《停车场管理系统设计报告Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
charlicense_plate[6];
/*汽车牌照号码,定义为一个字符指针类型*/
floattime;
/*汽车进入停车场的时刻*/
charstate;
/*汽车当前状态,字符p表示停放在停车位上,字符q表示停放在便道上*/
}Car;
typedefstruct//停车场的顺序栈
CarPack[MAX_PARK];
/*各汽车信息的存储空间*/
inttop;
/*用来指示栈顶位置的指针*/
}ParkStack;
typedefstructqnode
{//便道队列
Cardata;
structqnode*next;
}Qnode;
typedefstruct
Qnode*front,*rear;
/*用来指示队头和队尾位置的指针*/
}RoadQueue;
typedefstruct//辅助栈
CarBUFER[MAX_PARK];
/*各汽车信息的存储空间*/
/*用来指示栈顶位置的静态指针*/
}BUFFER;
2、主菜单中可选择车辆到来、车辆离开、查询、输入结束等操作指令,车辆到来和离开功能中,会提示用户输入车牌号和到来或离开时间,输入后即可按照执行操作。
车辆到来操作中,输入车牌号和到达的时间后,车辆会停入相应的位置,停车场内有空位置则停在停车场内,否则会停在便道中去。
而离开的车辆输入车牌号和离开时间后还要输入缴费金额来完成缴费后离开,此时如果便道上有等候的车辆则把第一个转入停车场内。
关于查询函数,首先查找停车场内的信息,并输出各车位上的车辆信息,然后查找便道上的车辆信息并且输出。
3、主模块中,已经申请好了停车场、便道及辅助栈的空间,车辆到来的时候,把停车场空间和便道空间地址分别代入到函数中,则车会停在相应的位置上。
车辆离开的时候则将停车场、辅助栈及便道空间地址代入,然后根据车辆进出的规则让车辆离开停车场并缴纳停车费。
查询模块中只需将停车场和便道地址代入,逐个查找并输出车辆信息即可。
三、详细设计
1、数据类型的自定义类型已经在整体设计中给出,数据类型的定义在需要的时候自
行定义即可。
2、主模块:
voidmain()
do{cout<
<
endl;
cout<
"
*******************************************************************"
***__________________欢迎使用停车场管理系统_____________________***"
A:
车辆到达B:
车辆离开C:
场内及便道状态查询D:
输入结束"
(注意:
区分大小写)"
endl<
请输入操作指令、车牌号、此时时刻:
______"
;
cin>
>
a;
while(!
(a>
='
A'
&
a<
D'
))
{
cout<
指令输入错误,请重新输入!
cin>
}
switch(a)
case'
:
Q=arrival(&
P,&
Q);
break;
case'
B'
Q=depart(&
Q,&
F);
case'
C'
search(&
return;
}while
(1);
}
车辆到来模块:
RoadQueuearrival(ParkStack*P,RoadQueue*Q)
cin>
d.license_plate;
d.time;
if(P->
top==(MAX_PARK-1))
{
inti=0;
//记录汽车在便道上的位置
temp=newQnode;
temp->
next=NULL;
data=d;
data.state='
q'
Q->
rear->
next=temp;
rear=Q->
next;
n=Q->
front;
while(n!
=Q->
rear)
n=n->
i++;
return*Q;
}
else
P->
Pack[P->
top+1]=d;
P->
top++;
top].state='
p'
}
车辆离开模块:
RoadQueuedepart(ParkStack*P,RoadQueue*Q,BUFFER*F)
for(inti=0;
i<
=P->
top;
i++)
if(strcmp(a,P->
Pack[i].license_plate)==0)
for(intj=P->
j>
i;
j--)
{
F->
BUFER[F->
top]=P->
Pack[j];
P->
top--;
}
l;
w=price*(l-P->
Pack[i].time);
您的停车费用为"
w<
元人民币。
t=P->
Pack[i];
P->
while(F->
top!
=-1)
Pack[i]=F->
top];
i++;
if(Q->
front->
next==NULL)
cout<
便道上没有车辆等候,停车场内有空位!
return*Q;
else
Q->
front=Q->
Pack[++P->
top]=Q->
data;
return*Q;
查询模块:
voidsearch(ParkStack*P,RoadQueue*Q)
{
Qnode*b;
停车场内已经没有车位了,谢谢~~"
for(inti=0;
=MAX_PARK-1;
第"
i+1<
个车位,车牌号:
P->
Pack[i].license_plate;
停车时间为:
Pack[i].time<
停车场内还有"
MAX_PARK-1-P->
top<
个车位,"
b=Q->
if(b==NULL)
便道上没有车辆等候,谢谢!
while(b)
k++;
便道第"
k<
的位置,车牌号:
b->
data.license_plate;
b=b->
3、函数的调用很简单,只需要在主函数中调用车辆到来、车辆离开、查询函数即可。
四、调试分析
1、刚开始测试时候,查询函数中,会输出便道上车辆数为一个随机数字,于是知道肯定是记录车辆数的变量k的原因,查找k的变化过程,原来刚开始定义k的时候未对k进行赋值。
对k赋值0以后问题自然解决了。
2、时间复杂度为O(n),空间复杂度也为O(n)。
五、使用说明及测试结果
本系统的使用只需根据提示信息输入即可,停车场内无空位的时候车辆自动停到便道上,停车场内有车辆离开后,便道上第一位置上的车辆自动停进停车场内。
车辆离开的时候会有缴纳停车费的操作,只需按照提示输入要缴纳的金额即可缴费成功并离开。
查询功能,只需选择查询功能,自动查找停车场内和便道上的车辆情况,不需要再进行其他操作。
输入结束后,选择D即可退出系统。
当停车场容量为2时,(‘A’、“F001”、5),(‘A’、“A002”、10),(‘B’、“F001”、15),(‘A’、“F003”、20),(‘A’、“C004”、25),(‘A’、“B005”、30),(‘B’、“A002”、35),(‘B’、“C004”、40),(‘D’、0、0)。
下面是调试的部分截图:
F001和A002都停入了停车场。
下图:
F001成功离开停车场。
B005停入停车场。
C004成功离开!
牌照号为F003的汽车从停车厂开走,应显示F005、F004的让路动作和F006从便道
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 停车场 管理 系统 设计 报告