实验报告 停车场管理Word文档下载推荐.docx

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

实验报告 停车场管理Word文档下载推荐.docx

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

实验报告 停车场管理Word文档下载推荐.docx

};

//栈最大容量

Set*elems;

}

template<

structNode

{

//数据成员:

ElemTypedata1,data2;

//两个数据域

Node<

ElemType>

*next;

//指针域

//构造函数:

Node();

//无参数的构造函数

Node(ElemTypeitem1,ElemTypeitem2,Node<

*link=NULL);

//已知数数据元素值和指针建立结构

};

3.程序设计

(1)头文件

由于数据域的改变,创建,插入,删除等函数都需要增加一个数据域的处理。

顺序栈:

public:

//抽象数据类型方法声明及重载编译系统默认方法声明:

SqStack(intsize=DEFAULT_SIZE);

//构造函数

virtual~SqStack();

//析构函数

intLength()const;

//求栈长度

boolEmpty()const;

//判断栈是否为空

voidClear();

//将栈清空

voidTraverse(void(*Visit)(constElemType&

))const;

//遍历栈

StatusPush(constElemType&

e,constElemType&

t);

//入栈

StatusTop(ElemType&

e,ElemType&

t)const;

//取顶元素

StatusPop(ElemType&

e);

//出栈

SqStack(constSqStack<

&

copy);

//复制构造函数

SqStack<

operator=(constSqStack<

//赋值语句重载

 

链式队列:

LinkQueue();

//无参数的构造函数

virtual~LinkQueue();

//析构函数

//求队列长度

//判断队列是否为空

//将队列清空

))const;

//遍历队列

StatusDelQueue(ElemType&

//出队操作

StatusGetHead(ElemType&

//取队头操作

StatusEnQueue(constElemType&

//入队操作

LinkQueue(constLinkQueue<

//复制构造函数

LinkQueue<

operator=(constLinkQueue<

//赋值语句重载

(2)辅助函数

当车辆离开时,输入车牌号与离开时间,如果该车辆在停车场中,则在其之后的车辆需要暂时离开停车场为其让路,返回其进入停车场的时间,并判别为真;

如果该车辆不存在停车场中,则判别为假。

intdepart(constint&

a,constint&

n,SqStack<

int>

p,bool&

dans)//返回进入时间

{SqStack<

park1(n);

//建立一个临时栈

inttmpn,tmpt,count=0,atime,i;

do{p.Pop(tmpn,tmpt);

park1.Push(tmpn,tmpt);

count++;

}//计数器用来记录让开的车数

while(tmpn!

=a&

&

!

p.Empty());

//如果栈顶车牌不符合条件,而且栈不为空,把栈顶元素弹出后放入临时栈中

if(tmpn==a)//如果找到了该车

{dans=1;

//判别为真

park1.Pop(tmpn,tmpt);

//该车辆离开

count--;

}

else

{dans=0;

}//如果遍历仍找不到车,则判别为假

atime=tmpt;

for(inti=0;

i<

count;

i++)//让路的车重新返回停车场

{park1.Pop(tmpn,tmpt);

p.Push(tmpn,tmpt);

}

returnatime;

//返回进入时间

为了避免输入重复的车牌号,输入的离开时间小于进入时间,设计了遍历功能供使用者参考

voidSqStack<

:

Traverse(void(*Visit)(constElemType&

))const

//操作结果:

从栈顶到栈底依次对栈的每个元素调用函数(*visit)

for(intPos=top-1;

Pos>

=0;

Pos--)//从栈底到栈顶对栈的每个元素调用函数(*visit)

{cout<

<

"

车牌:

;

(*Visit)(elems[Pos].num);

cout<

到达时间:

(*Visit)(elems[Pos].time);

endl;

(3)主程序

#include"

assistance.h"

sq_stack.h"

lk_queue.h"

dans)

if(tmpn==a)

i++)

intmain(){

intn=0,time,num,tmp,oldtime;

doubleprix;

//停车单价

boolsi;

//判别车辆是否存在

charjug='

P'

欢迎使用停车场管理系统"

while(n<

1)

{

请输入停车场的车位数:

cin>

>

n;

}

hallway;

park(n);

请输入每分钟停车费:

prix;

while(jug!

='

E'

)//选择界面

A.车辆到达"

D.车辆离开"

L.查看停车场情况"

//遍历停车场情况

E.退出程序"

jug;

switch(jug){

case'

A'

//进入

请输入车牌号与达到时间:

"

num>

time;

if(park.Length()!

=n)//停车场没满

{park.Push(num,time);

车牌号为"

num<

的车辆进入停车场时间:

time<

分钟,位置:

park.Length()<

}//进入停车场

Else//停车场满

{hallway.EnQueue(num,time);

cout<

停车场已满,车牌号为"

的车辆进入停车场外便道时间:

hallway.Length()<

//进入便道排队

continue;

D'

//离开

{if(!

park.Empty())//停车场有车辆

请输入车牌号与离开时间:

oldtime=depart(num,n,park,si);

//记录进入时间,判定其存在

if(si){//存在则输出

oldtime<

,离开时间为:

停留时间:

time-oldtime<

分钟,费用:

(time-oldtime)*prix<

if(!

hallway.Empty())//如果有车辆在便道内等候

{hallway.DelQueue(num,tmp);

park.Push(num,time);

分钟,位置:

//队列的队首进入栈,并输出相关信息

elsecout<

停车场内没有该车辆"

}//输入的车牌号不存在于栈内

停车场内没有任何车辆"

end//栈为空时,不用输入离开车辆的信息

continue;

case'

L'

停车场出入口(南)"

park.Traverse(Write<

);

//遍历停车场占用的车位

}}}

再见"

//程序结束

system("

pause"

return0;

停车场管理数据测试

次数

输入

输出

车位数

单价

到达离去信息

时刻

车牌号

位置

停留时间

费用

1

2

5

A

车位1

 

10

车位2

D

15

50

20

3

25

4

便道位1

30

便道位2

35

125

40

E

0.5

便道位3

6

45

100

7

车位3

8

9

18

车位4

2.785

13.925

27.85

11

A

22

110

33

44

34

340

0.01

80

120

180

60

0.6

250

300

350

36

48

72

55

12

96

16

5.测试记录及收获

由于时间紧迫,对于车牌重复,到达时间小于离开时间的情况未做进一步的限制,假定输入的车牌不重复,时间的输入依次递增。

为了避免以上错误,设计了遍历停车场情况的函数,以此弥补程序的不足。

通过本次实验,我们小组进一步熟悉了栈和队列的区别。

无论是链式还是顺序,各有优点,灵活地运用这些结构,可以模拟许多常见的情况。

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

当前位置:首页 > 职业教育 > 中职中专

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

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