停车场管理数据结构设计报告.docx
《停车场管理数据结构设计报告.docx》由会员分享,可在线阅读,更多相关《停车场管理数据结构设计报告.docx(13页珍藏版)》请在冰点文库上搜索。
停车场管理数据结构设计报告
题目:
停车场管理
1需求和规格说明1
1.1用栈模拟停车场,队列模拟临时便道。
2
1.2建立停车场和临时便道,若栈慢则进入临时便道等待2
2设计2
2.1设计思想2
2.2设计表示3
2.2.1存储结构3
2.2.2涉及操作20
2.3实现注释23
2.4详细解释23
2.4.1功能示意图23
2.4.2流程示意图24
3用户手册28
4调试报告28
5源代码及运行结构截图29
5.1源代码29
5.2运行截图30
6课程设计总结
1需求和规格说明
1.1用栈模拟停车场,队列模拟临时便道。
1.2建立停车场和临时便道,若栈慢则进入临时便道等待
2设计
2.1设计思想
汽车在停车场内进出是按照栈的运算方式来实现的,先到的先进停车场;停车场的汽车离开停车场时,汽车场内其它汽车为该辆汽车让路,也是按栈的方式进行;汽车在便道上等候是按队列的方式进行的。
因此,将停车场设计成一个栈,汽车让路也需要另一个栈来协助完成,汽车进出便道用队列来实现。
2.2设计表示
2.2.1存储结构
#definestacksize10
usingnamespacestd;
typedefstructsqstack
{
intdata[stacksize];
inttop;
}SqStackTp,*SqStack;
typedefstructlinked_queue
{
intdata;
structlinked_queue*next;
}LqueueTp,*Lqueue;
typedefstruct
{
Lqueuefront,rear;
}QueptrTp,*Queptr;
2.2.2涉及操作
voidWait(Queptrq,intdata)//停车场已满,进入需等待
intStopwait(Queptrq)//便道中得车辆停止等待
voidOutp(SqStacks,intdata)//车辆出停车场
voidIn(SqStacks,Queptrq,intdata)//车辆进停车场
voidOut(SqStacks,Queptrq,intdata)//车辆出停车场情况2.3实现注释
此部分内容详细参见源代码。
2.4详细解释
2.4.1功能示意图
图表总功能示意图
2.4.2流程示意图
3.用户手册
(1)用户首先选择进入或驶出停车场。
(2)进入停车场,判断停车场是否已满,如果已满则车辆进去便道等候,若不满,直接进入停车场。
(3)出停车场,用一个临时栈存要出栈之前的数据,找到将要出去的车号,将临时栈的元素进入原栈,若便道有车排队,则队列头的车辆停止等候,进入停车场
4调试报告
将13台车停入停车场,车号为11,12,13的车辆在便道依次等候,1号车出停车场,11号进入,2号出停车场,12号进入,3号车出停车场,13号进入,
5源代码及运行结构截图
5.1源代码
#include
#definestacksize10
usingnamespacestd;
typedefstructsqstack
{
intdata[stacksize];
inttop;
}SqStackTp,*SqStack;
typedefstructlinked_queue
{
intdata;
structlinked_queue*next;
}LqueueTp,*Lqueue;
typedefstruct
{
Lqueuefront,rear;
}QueptrTp,*Queptr;
voidWait(Queptrq,intdata)//停车场已满,进入需等待
{
cout<<"车号"<
Lqueuep=newLqueueTp();
p->next=NULL;
p->data=data;
q->rear->next=p;
q->rear=p;
}
intStopwait(Queptrq)//便道中得车辆停止等待
{
Lqueuep;
if(q->front!
=q->rear)
{
p=q->front->next;
cout<<"车号"<data<<"停止等待"<q->front=p;
}
else
{
return-1;
}
returnp->data;
}
voidOutp(SqStacks,intdata)//车辆出停车场
{
intt[10],x=0;
while(s->data[s->top]!
=data)
{
t[x]=s->data[s->top];
s->top--;
x++;
}
cout<<"车号"<s->data[s->top]=t[x-1];x--;
while(x>0)
{
s->top++;
s->data[s->top]=t[x-1];
x--;
}
}
voidIn(SqStacks,Queptrq,intdata)//车辆进停车场
{
if(s->top!
=stacksize)
{
cout<<"车号"<s->data[s->top]=data;
s->top++;
}
else
{
cout<<"停车场已满,请等待。
。
。
"<Wait(q,data);
}
}
voidOut(SqStacks,Queptrq,intdata)//车辆出停车场
{
if(s->top==stacksize)
{
Outp(s,data);
intsw=Stopwait(q);
if(sw>=0)
{
In(s,q,sw);
}
}
else
{
Outp(s,data);
}
}
intmain()
{
SqStacks=newSqStackTp();
s->top=0;
Queptrq=newQueptrTp();
q->front=q->rear=newLqueueTp();
q->front->next=NULL;
while
(1)
{
cout<<"停车请输入1"<cout<<"取车请输入2"<intn,data;
cin>>n;
cout<<"请输入车号"<cin>>data;
if(n==1)
{
In(s,q,data);
}
else
{
Out(s,q,data);
}
cout<<"+++++--------+++++"<}
return0;
}
5.2运行截图
6课程设计总结
(1)用栈实现停车场,先进后出,进入时判断是否满
(2)便道用队列存储,实现先等待的车辆先进入
(3)当车辆出停车场时,用临时栈存储指定车辆之前的车辆,指定车辆出停车场后将临时栈的数据重新存入原栈,等待的车辆可以进入停车场