数据结构课程设计报告停车场管理系统Word格式.docx
《数据结构课程设计报告停车场管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告停车场管理系统Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
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
AB123
18:
45
EA642
23:
15
2
0:
30
65〔错误〕
〔2〕测试目的:
测试离开方法时间格式控制以及费用计算是否正确。
〔3〕正确输出:
第一次离开的是AB123,应交费3.45元。
第二次时,当在输入65时,应该提示输入错误,重输。
〔4〕实际输出:
〔5〕错误原因:
第一个错误是在计算时,一个数字错了;
第二个是没有对时间格式控制。
〔6〕当前状态:
已改正
2.第二组测试用例
连续6辆车到达,如下表:
效劳选择
车牌号
到达时间
A8828
7:
56
S2296
8:
WW666
HK456
50
GH999
12:
DD555
13:
40
(2)测试目的:
测试到达方法与列表显示方法能否正确完成。
先到达的五辆车先进入停车场,最后到达的一辆在便道等候。
没有作出时间先后的判断,而是先输入先进入。
待修改
3.第三组测试用例
接上一步输入离开信息,下表:
离开车位
离开时间
便道车进入时间
3
〔2〕测试目的:
测试离开方法功能是否成功以及便道进入车场是否正确。
输出3号车位的车辆离开信息清单,便道1号车进入停车场。
(5)错误原因:
没有错误。
〔6〕当前状态:
通过
〔二〕测试结果分析
此停车管理系统根本可能实现一个小的停车场的管理,其“到达〞与“离开〞方法都相比照拟完整,以及结算清单明了。
尽管在时间先后上有出现混乱,但当其用到实际应用时,那个时间先后就可以防止了。
但在输入数据时,要按照严格的格式输入,否那么有可能出现死去或崩溃。
假设本系统能加上保存功能就更好了,因为一个系统在使用过程中总会关机等,而此系统的缺点却是没有保存功能,关闭之后就要重新建立了。
会慢慢完善。
附录:
源代码
///系统说明:
本系统适应于小型停车场,且停车时间在一天之的短期停放停车场。
//在此系统中,车库容量设置为5,便于测试。
在实际使用中可以对容量大小按实际情况设置。
#include<
iostream.h>
stdio.h>
stdlib.h>
string.h>
#defineMAX5/*车库容量,可以根据实际情况改变*/
#defineprice0.01/*一辆车每分钟费用,可变*/
typedefstructtime
{
inthour;
intmin;
}Time;
/*时间结点*/
typedefstructnode
charnum[10];
Timereach;
Timeleave;
}CarNode;
/*车辆信息结点*/
typedefstructNODE
/*模拟停车场*/
typedefstructcar
CarNode*data;
structcar*next;
}QueueNode;
typedefstructNode
}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);
/*初始化车站*/
Temp);
/*初始化让路的临时栈*/
InitQueue(&
Wait);
/*初始化通道*/
while
(1)
{
cout<
<
"
※※※※欢送使用本停车管理系统※※※※"
endl;
********************************************************"
※--※1.车辆到达※--※"
cout<
※--※2.车辆离开※--※"
※--※3.列表显示※--※"
※--※4.退出系统※--※"
!
说明:
请注意正确输入时间,在输入“时〞后,按“ENTER〞或者“空格〞,再输入“分〞。
不要为非数字!
请选择所需要的效劳!
(1-4)."
{
cin>
>
ch;
if(ch>
=1&
&
ch<
=4)break;
elsecout<
输入错误!
请选择:
(1-4)."
}
switch(ch)
{
case1:
Arrival(&
Enter,&
break;
/*车辆到达*/
case2:
Leave(&
Temp,&
case3:
List(Enter,Wait);
/*列表显示信息*/
case4:
exit(0);
/*退出主程序*/
default:
break;
}
}
voidInitStack(SeqStackCar*s)/*初始化栈*/
{
inti;
s->
top=0;
for(i=0;
i<
=MAX;
i++)
stack[s->
top]=NULL;
intInitQueue(LinkQueueCar*Q)/*初始化便道*/
Q->
head=(QueueNode*)malloc(sizeof(QueueNode));
if(Q->
head!
=NULL)
{
Q->
head->
next=NULL;
rear=Q->
head;
return
(1);
elsereturn(-1);
intArrival(SeqStackCar*Enter,LinkQueueCar*W)/*车辆到达*/
CarNode*p;
QueueNode*t;
p=(CarNode*)malloc(sizeof(CarNode));
flushall();
请输入车牌号(例:
A1234):
gets(p->
num);
if(Enter->
top<
MAX)/*车场未满,车进车场*/
Enter->
top++;
车辆在车场第"
Enter->
top<
位置!
请输入到达时间:
(小时:
分钟)"
cin>
p->
reach.hour;
while(p->
reach.hour<
0||p->
reach.hour>
23)//控制时间格式正确
请重输入到达时间的时(0-23)!
reach.min;
reach.min<
reach.min>
59)//控制分钟输入正确
请重输入到达时间的分(0-59)!
Enter->
stack[Enter->
top]=