停车场管理实验报告Word格式.docx

上传人:b****6 文档编号:17310602 上传时间:2022-12-01 格式:DOCX 页数:14 大小:167.74KB
下载 相关 举报
停车场管理实验报告Word格式.docx_第1页
第1页 / 共14页
停车场管理实验报告Word格式.docx_第2页
第2页 / 共14页
停车场管理实验报告Word格式.docx_第3页
第3页 / 共14页
停车场管理实验报告Word格式.docx_第4页
第4页 / 共14页
停车场管理实验报告Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

停车场管理实验报告Word格式.docx

《停车场管理实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《停车场管理实验报告Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

停车场管理实验报告Word格式.docx

(4)测试数据:

(5)请输入停车场容量2

A,1,1

车停在停车场第1个位置

A,2,2

车停在停车场第2个位置

A,3,3

车停在便道第1个位置

D,1,4

停车时间:

3缴纳费用:

¥3

D,2,5

A,5,5

E,0,0

二、概要设计

抽象数据类型

由于每一辆车有多个数据,所以定义一个类来存储汽车的“车牌号、时间”信息。

classcData

{

Public:

intnumber;

intatime;

};

停车场的大小是固定的,且只有一个口用于进出,所以用顺序栈模拟停车场,其ADT如下:

ADTstack

数据对象:

D=(a1,a2…ai|aiЄcData)

数据关系:

R1={<

ai-1,ai>

|ai-1,aiЄD,i=2,3…n}

基本操作:

boolpush(constcData&

elem)//入栈

boolpop(constcData&

elem)//出栈

booltopValue(cData&

elem)//顶层元素值

intlength()const{returntop;

}//栈的实际长度

便道的大小未定,为了节约空间我们应该用链表实现队列,用队列模拟便道,ADT如下:

ADTquene

cData类型。

boolenquene(constcData&

elem)//入队列

booldequene(cData&

elem)//出队列

virtualintlength()const{return((rear+size)-front+1)%size;

}//队列的实际长度

算法的基本思想

对于指定大小的停车场,只有一个口进入或者出去,先进后出,用栈存储,如果入栈失败则将车停到便道上,先到便道的车先进停车场,用队列存储,当某辆汽车出去时,在它后面的汽车要先退出再按原顺序进入车场,需要一个临时的存储空间来停这些车,而由于是最后一辆车在某辆车出去的时候要先出去而又最后进去,这个临时的存储空间应该是一个栈。

三、详细设计

实现概要设计中的数据类型

分别用整形、整形存储用户的输入,并将相应数据存入cData类。

用顺序栈表实现栈:

classStack

private:

intsize;

inttop;

cData*listArray;

public:

Stack(intsz)

{size=sz;

top=0;

listArray=newcData[sz];

}

~Stack(){delete[]listArray;

boolpush(constcData&

elem)//进栈

{

if(top==size)returnfalse;

else

listArray[top]=elem;

top++;

returntrue;

}

}

boolpop(cData&

elem)//出栈

if(top==0)returnfalse;

elem=listArray[top-1];

top--;

booltopValue(cData&

elem)//顶层元素值

if(top==0)returnfalse;

it=listArray[top-1];

intlength()const{returntop;

}//栈实际长度

};

用顺序表实现队列(由于题目中没有明确表明便道的长度,队列应该用链表来实现比较合适且节省空间,但是为了方便程序的设计这里采用顺序表来实现):

classQuene

intfront;

intrear;

Quene(intsz){size=sz+1;

rear=0;

front=1;

listArray=newcData[size];

~Quene(){delete[]listArray;

boolenquene(constcData&

it)//入队

if((rear+2)%size==front)returnfalse;

rear=(rear+1)%size;

listArray[rear]=it;

booldequene(cData&

it)//出队

if(length()==0)returnfalse;

it=listArray[front];

front=(front+1)%size;

virtualintlength()const{return((rear+size)-front+1)%size;

}//队列的实际长度

};

实现程序的具体步骤:

车辆进入:

每进入一辆汽车,进行入栈操作,即进入停车场;

如果入栈不成功,即停车场满,进入便道。

车辆出去:

(1)对输入数据的车牌号与栈顶的车牌号比较,若相等则直接出栈,否则为要出去的车开道。

(2)在该车进行出栈操作后,再将临时栈中的数据弹出并入栈。

(3)将离开时间和进入的时间做差,得出停车时间进行输出,并且算出应该缴纳的费用(1元/h)

(4)若车辆离开后队列不为空,表明便道上有车要进到停车场,修改该车辆的到达时间为离开车的离开时间,并且进行入栈操作。

当输入不为E时,循环进行上述操作。

while(c!

='

E'

)//不退出程序

{

cDatad;

scanf("

%c,%d,%d"

&

c,&

d.number,&

d.ctime);

cDatatop;

if(c=='

A'

)//进入停车场

{if(park.push(d))//入栈成功

cout<

<

"

停在停车场的"

i++<

位置"

endl;

//输出提示语句

}

else//入栈失败

line.enquene(d);

cout<

停车场已满,进入便道"

line.enquene(d);

elseif(c=='

D'

)//离开停车场

{

park.topValue(top);

while(top.number!

=d.number)//为车开道

park.pop(top);

temp.push(top);

停车时间为"

d.ctime-top.ctime<

h"

;

离开停车场,车牌号为"

d.number<

应该收费"

元"

//输出提示语句

i--;

while(temp.length()!

=0)//回到车位

temp.pop(top);

park.push(top);

if(line.length()!

=0)//由便道到车库

line.dequene(top);

top.ctime=d.ctime;

//进入的时间刚好是那辆车出去的时间

算法的时空分析

对于入栈处理,时间复杂度为Θ

(1),对于出栈处理,最坏情况下的时间复杂度是Θ(n)的。

输入N次,出栈处理最多只有N/2次,所以时间复杂度最坏情况是Θ(n2)的,最好情况是Θ(n)的。

停车场没有满,入栈成功,s.push()

函数的调用关系图

车辆进入‘A’

停车场已经满,入栈失败,入队列line.enquene()

主程序退出程序‘E’程序结束

如果离开的车在栈顶,s.pop(),否则后面的车进入临时栈

该车离开s.pop()

临时栈中的车回到停车场s.push(temp.pop())

车辆退出‘D’

便道车入栈s.push(line.dequene())

输入和输出的格式

输入:

2

D,1,5

输出:

停在停车场第1个位置

停在停车场第2个位置

停车场已满,进入便道

停车时间4h离开停车场,车牌号为1应该收费2元

四、测试结果

五、用户使用说明(可选)

1、本程序的运行环境为DOS操作系统,执行文件为停车场管理.exe

2、运行程序时:

输入停车场长度

输入停车数据,按“出入停车场(A,D),车牌,时间”输入。

输出提示信息。

六、实验心得

这次实验比前一次熟练了很多,思路很清晰,以后应该在实验上多花点心思,提高自己的编程和算法分析能力。

七、附录

#include<

iostream>

usingnamespacestd;

classcData//每辆车的信息类

intnumber;

//车牌号码

intctime;

//到达时间

main()

intn;

请输入停车场的长度n:

cin>

>

n;

Stackpark(n);

Stacktemp(n);

Queneline(100);

charc='

inti=1;

system("

pause"

);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1