数据结构课程设计报告停车场管理系统.docx

上传人:b****2 文档编号:1919405 上传时间:2022-10-25 格式:DOCX 页数:16 大小:170.04KB
下载 相关 举报
数据结构课程设计报告停车场管理系统.docx_第1页
第1页 / 共16页
数据结构课程设计报告停车场管理系统.docx_第2页
第2页 / 共16页
数据结构课程设计报告停车场管理系统.docx_第3页
第3页 / 共16页
数据结构课程设计报告停车场管理系统.docx_第4页
第4页 / 共16页
数据结构课程设计报告停车场管理系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据结构课程设计报告停车场管理系统.docx

《数据结构课程设计报告停车场管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告停车场管理系统.docx(16页珍藏版)》请在冰豆网上搜索。

数据结构课程设计报告停车场管理系统.docx

数据结构课程设计报告停车场管理系统

实验二停车场管理

班级:

A0712学号:

12XX:

冷清淼成绩:

__________

指导教师签名:

__________

一、问题描述

设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。

在停车场,汽车按到达的先后次序,由北向南依次排列〔假设大门在最南端〕。

假设停车场已停满n辆车,那么后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。

当停车场某辆车要离开时,在它之后进入的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。

每辆车离开停车场时,应按其停留时间的长短交费〔在便道上停留的时间不收费〕。

设计要求:

1.模拟上述管理过程。

要求以顺序栈模拟停车场,以链队列模拟便道。

2.从终端读入汽车到达或离去的数据,每组数据包括三项:

〔1〕是“到达〞还是“离开〞;

〔2〕汽车牌照;

〔3〕“到达〞或“离开〞的时刻。

3.与每组输入信息相应的输出信息为:

如果是到达的车辆,那么输出其在停车场中或便道上的位置;如果是离去的车辆,那么输出其在停车场中停留的时间和应交的费用。

二、算法说明

1.数据构造说明

〔1〕用到两个堆栈:

一个为车场栈;另一个为临时栈temp

typedefstructNODE{

CarNode*stack[MAX+1];

inttop;

}SeqStackCar;/*模拟车场*/

(2)一个队列构造,存储便道车辆信息:

typedefstructNode{

QueueNode*head;

QueueNode*rear;

}LinkQueueCar;/*模拟便道*/

2.算法说明

(1)功能模块说明:

停车场管理系统含有三个模块,即:

车辆到达、离开、列表显示

图1

〔2〕以模块为单位分析算法

1、“到达〞模块:

到达时有两种情况,即车场是否满,未满那么直接进入停车场;满时,到便道等待。

如图2。

图2

2.“离开〞模块:

离开时,当车库为空时,提示没有车,完毕;否那么车辆离开。

如图3。

图3

3.“显示〞模块:

显示模块有两个显示选项,即:

车场与便道。

如图4。

图4

 

三、测试结果

〔一〕测试用例〔说明:

测试用例要合理并且足够,既要有正确用例,也要有错误用例,同时检验程序的正确性和强壮性〕

1.第一组测试用例

〔1〕测试输入:

停车场的车辆离开,如下表:

效劳选择

车牌号/车位

到达/离开时间

1

QH058

15:

25

1

AB123

18:

45

1

EA642

23:

15

2

2

0:

30

2

1

0:

65〔错误〕

〔2〕测试目的:

测试离开方法时间格式控制以及费用计算是否正确。

〔3〕正确输出:

第一次离开的是AB123,应交费3.45元。

第二次时,当在输入65时,应该提示输入错误,重输。

〔4〕实际输出:

〔5〕错误原因:

第一个错误是在计算时,一个数字错了;第二个是没有对时间格式控制。

〔6〕当前状态:

已改正

2.第二组测试用例

〔1〕测试输入:

连续6辆车到达,如下表:

效劳选择

车牌号

到达时间

1

A8828

7:

56

1

S2296

8:

25

1

WW666

8:

45

1

HK456

15:

50

1

GH999

12:

30

1

DD555

13:

40

(2)测试目的:

测试到达方法与列表显示方法能否正确完成。

〔3〕正确输出:

先到达的五辆车先进入停车场,最后到达的一辆在便道等候。

〔4〕实际输出:

〔5〕错误原因:

没有作出时间先后的判断,而是先输入先进入。

〔6〕当前状态:

待修改

3.第三组测试用例

〔1〕测试输入:

接上一步输入离开信息,下表:

效劳选择

离开车位

离开时间

便道车进入时间

2

3

13:

30

13:

40

〔2〕测试目的:

测试离开方法功能是否成功以及便道进入车场是否正确。

〔3〕正确输出:

输出3号车位的车辆离开信息清单,便道1号车进入停车场。

〔4〕实际输出:

(5)错误原因:

没有错误。

〔6〕当前状态:

通过

〔二〕测试结果分析

此停车管理系统根本可能实现一个小的停车场的管理,其“到达〞与“离开〞方法都相比照拟完整,以及结算清单明了。

尽管在时间先后上有出现混乱,但当其用到实际应用时,那个时间先后就可以防止了。

但在输入数据时,要按照严格的格式输入,否那么有可能出现死去或崩溃。

假设本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。

会慢慢完善。

附录:

源代码

///系统说明:

本系统适应于小型停车场,且停车时间在一天之的短期停放停车场。

//在此系统中,车库容量设置为5,便于测试。

在实际使用中可以对容量大小按实际情况设置。

#include

#include

#include

#include

#defineMAX5/*车库容量,可以根据实际情况改变*/

#defineprice0.01/*一辆车每分钟费用,可变*/

typedefstructtime

{

inthour;

intmin;

}Time;/*时间结点*/

typedefstructnode

{

charnum[10];

Timereach;

Timeleave;

}CarNode;/*车辆信息结点*/

typedefstructNODE

{

CarNode*stack[MAX+1];

inttop;

}SeqStackCar;/*模拟停车场*/

typedefstructcar

{

CarNode*data;

structcar*next;

}QueueNode;

typedefstructNode

{

QueueNode*head;

QueueNode*rear;

}LinkQueueCar;/*模拟便道*/

/*方法声明*/

voidInitStack(SeqStackCar*);/*初始化栈*/

intInitQueue(LinkQueueCar*);/*初始化便道*/

intArrival(SeqStackCar*,LinkQueueCar*);/*车辆到达*/

voidLeave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/*车辆离开*/

voidList(SeqStackCar,LinkQueueCar);/*显示信息*/

voidPRINT(CarNode*p,introom);/*输出离开车辆的信息清单*/

voidmain()

{

system("colorF2");/*设置系统颜色,本系统为白底绿字f2*/

SeqStackCarEnter,Temp;

LinkQueueCarWait;

intch;

InitStack(&Enter);/*初始化车站*/

InitStack(&Temp);/*初始化让路的临时栈*/

InitQueue(&Wait);/*初始化通道*/

while

(1)

{

cout<<"※※※※欢送使用本停车管理系统※※※※"<

cout<<"********************************************************"<

cout<<"※--※1.车辆到达※--※"<

cout<<"※--※2.车辆离开※--※"<

cout<<"※--※3.列表显示※--※"<

cout<<"※--※4.退出系统※--※"<

cout<<"********************************************************"<

cout<<"!

说明:

请注意正确输入时间,在输入“时〞后,按“ENTER〞或者“空格〞,再输入“分〞。

不要为非数字!

"<

cout<<"请选择所需要的效劳!

(1-4)."<

while

(1)

{

cin>>ch;

if(ch>=1&&ch<=4)break;

elsecout<<"输入错误!

请选择:

(1-4)."<

}

switch(ch)

{

case1:

Arrival(&Enter,&Wait);break;/*车辆到达*/

case2:

Leave(&Enter,&Temp,&Wait);break;/*车辆离开*/

case3:

List(Enter,Wait);break;/*列表显示信息*/

case4:

exit(0);/*退出主程序*/

default:

break;

}

}

}

voidInitStack(SeqStackCar*s)/*初始化栈*/

{

inti;

s->top=0;

for(i=0;i<=MAX;i++)

s->stack[s->top]=NULL;

}

intInitQueue(LinkQueueCar*Q)/*初始化便道*/

{

Q->head=(QueueNode*)malloc(sizeof(QueueNode));

if(Q->head!

=NULL)

{

Q->head->next=NULL;

Q->rear=Q->head;

return

(1);

}

elsereturn(-1);

}

intArrival(SeqStackCar*Enter,LinkQueueCar*W)/*车辆到达*/

{

CarNode*p;

QueueNode*t;

p=(CarNode*)malloc(sizeof(CarNode));

flushall();

cout<<"请输入车牌号(例:

A1234):

"<

gets(p->num);

if(Enter->top

{

Enter->top++;

cout<<"车辆在车场第"<top<<"位置!

"<

cout<<"请输入到达时间:

(小时:

分钟)"<

cin>>p->reach.hour;

while(p->reach.hour<0||p->reach.hour>23)//控制时间格式正确

{

cout<<"输入错误!

"<

cout<<"请重输入到达时间的时(0-23)!

"<

cin>>p->reach.hour;

}

cin>>p->reach.min;

while(p->reach.min<0||p->reach.min>59)//控制分钟输入正确

{

cout<<"输入错误!

"<

cout<<"请重输入到达时间的分(0-59)!

"<

cin>>p->reach.min;

}

Enter->stack[Enter->top]=

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

当前位置:首页 > 人文社科 > 法律资料

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

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