大数据结构课程设计停车场管理系统.docx
- 文档编号:2466215
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:16
- 大小:169.33KB
大数据结构课程设计停车场管理系统.docx
《大数据结构课程设计停车场管理系统.docx》由会员分享,可在线阅读,更多相关《大数据结构课程设计停车场管理系统.docx(16页珍藏版)》请在冰豆网上搜索。
大数据结构课程设计停车场管理系统
实验二停车场管理
班级:
A0712学号:
12姓名:
冷清淼成绩:
__________
指导教师签名:
__________
一、问题描述
设停车场是一个可停放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<<"车辆在车场第"< "< 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[Ent
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大数据结构课程设计 停车场管理系统 数据结构 课程设计 停车场 管理 系统