数据结构实验二:停车场管理问题

上传人:灯火****19 文档编号:139153437 上传时间:2020-07-20 格式:DOC 页数:26 大小:363.50KB
返回 下载 相关 举报
数据结构实验二:停车场管理问题_第1页
第1页 / 共26页
数据结构实验二:停车场管理问题_第2页
第2页 / 共26页
数据结构实验二:停车场管理问题_第3页
第3页 / 共26页
数据结构实验二:停车场管理问题_第4页
第4页 / 共26页
数据结构实验二:停车场管理问题_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《数据结构实验二:停车场管理问题》由会员分享,可在线阅读,更多相关《数据结构实验二:停车场管理问题(26页珍藏版)》请在金锄头文库上搜索。

1、HUNAN UNIVERSITY课程实习报告题 目: 停车场管理问题 学生姓名 学生学号 专业班级 指导老师 李 晓 鸿 完 成 日 期 2 0 1 5年 11 月 25日 1、 需求分析1. 输入的形式的输入的范围:选择功能:1停车 2离开停车场 3离开过道若输入1(停车),输入当前车牌号和当前的时间;若输入2(离开停车场),输入车票号和当前时间;若输入3(离开过道),输入车牌号。2. 输出的形式:提示选择功能“1.停车 2离开停车场 3离开过道”。若输入1(停车),并且输入当前车牌号和当前的时间后,若停车场未满,输出“成功 停入停车场,停车场内有n辆车,过道上有m辆车等候”;若停车场满,输

2、出 “停 车场已满,请在过道等候”。 若输入2(离开停车场),输入车票号和当前时间,输出“存车总计时间,收费q元, 停车场内有n辆车,过道上有m辆车等候”;如果进停车场和出停车场时间错误,输 出“时间输入有误,请重新输入”;如果停车场没有此车,输出“车牌号有误,请重新 输入”。若输入3(离开过道),输入车牌号,输出“此车已成功离开过道”;若无此车,输出 “停车过道为空”。若输入其他,则提示选择功能“1.停车 2离开停车场 3离开过道”。3. 程序所能达到的功能:有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达

3、的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。4. 测试数据:正常的进入停车场,出停车场,离开过道的模拟输入11(车牌)1(当前时间)输入 12(车牌)2(当前时间)输入22(车牌)3(当前时间)输入1

4、3(车牌)4(当前时间)输入14(车牌)5(当前时间)输入34(车牌)停车场里没有车出停车场的模拟输入21(车牌)过道没车出过道的模拟输入31(车牌)进入停车场时间与出停车场时间的模拟输入11(车牌)1(进停车场的时间)输入21(车牌)0(出停车场的时间)停车场模拟系统功能输入错误输入4二.概要设计抽象数据类型:由于该停车场只有一个门供出入,并且最先进的停在停车场的最末,最先进的车辆要出停车场需要之后进入的车先出,满足先进后出的结构,其限制是仅允许在表的一端进行插入和删除运算,所以用栈来模拟停车场。由于这是一个模拟的车库,车辆出停车场,后面车辆不得不被动跟着出停车场,我们需要对这些车辆进行管理

5、,将第一辆被动出停车场的放置到一个队伍的前端,接下来被动出停车场的车辆依次放到第一辆车之后,当需要离开的车出栈后,对被动出停车场的车辆进行管理,又队伍的前端依次进入停车场,由于满足只允许在表的前端进行删除操作,而在表的后端进行插入操作,所以用队列来模拟被动出停车场车辆的管理。基本思想1.给定一个size为停车场的容量。2.每一辆车进栈前,储存车辆编号和进栈的时间。3.对于栈满的情况,再来的车辆不进栈,只记录编号。4.对于出栈的车辆,先将出栈车辆之前的停车场内车辆由后往前依次进入队列中,将进栈和出栈时间相比较算出需要付的金额,之后再将队列中的元素由前往后依次进栈。程序的流程 程序由三个模块组成:

6、 输入模块:按照提示输入 计算模块:计算(出栈时间-进栈时间)*每小时金额。 输出模块:首先提示 请选择:1、停车;2、离开停车场;3、离开过道; 选择1.2提示 请输入车牌号和现在的时间: 选择3提示“请输入车牌号”基本ADT栈空判别算法int Empty_SeqStack(queue *s) if (s-top = -1)return 0;elsereturn 1;入栈算法void Push_SeqStack(queue *s, Datatype x) s-top+;s-data1s-top = x;return;出栈算法void Pop_SeqStack(queue *s, Dataty

7、pe *x) *x = s-data1s-top;s-top-;return;列队初始化C_SeQueue *Init_SeQueue() C_SeQueue *q;q = new C_SeQueue;q-front = q-rear = MAXSIZE - 1;q-num = 0;return q;入队算法void In_SeQueue(C_SeQueue *q, Datatype x) q-rear = (q-rear + 1) % MAXSIZE;q-data2q-rear = x;q-num+;return;出队算法void Out_SeQueue(C_SeQueue *q, Data

8、type *x)q-front = (q-front + 1) % MAXSIZE;*x = q-data2q-front;q-num-;return;算法流程图(进入车库和出车库)3 详细设计1. 数据类型用Int型整数储存车辆的信息.车辆进出时间.收取的费用2.算法的具体步骤车进入停车场的基本操作void Arrive(queue *s, C_SeQueue *q, int x, double t) int y;int a = s-top;while (a != -1) /判断将要存的车是否已存在于停车场,防止出现有相同车牌号的车出现在停车场内;if (s-data1a = x)cout

9、此车已存在停车场内! endl;return;elsea-;if (Push_SeqStack1(s, x, t)cout 此车已成功存入停车场。 endl;elsecout 停车场已满,后来车辆请在便道等候。 data1s-top != x&!Empty_SeqStack(s)Pop_SeqStack(s, &y);Push_SeqStack(s1, y);if (s-data1s-top = x) while (i)if (t = 1 & t s-times-top)d = t - s-times-top;Pop_SeqStack(s, &y);cout 存车时间总计: d 小时 endl

10、 收费为: d 元 endl;i = 0;elsecout 时间输入有误,请重新输入。 t;elsecout 车牌号有误,停车场中无此车。 num != 0 & s-top != MINSIZE - 1)Out_SeQueue(q, &y);Push_SeqStack1(s, y, t);show(s, q);return;离开过道的基本操作void Leave1(queue *s, C_SeQueue *q, int x) if (q-num = 0)cout 停车过道为空。 rear;while (q-data2a != x & (a + MAXSIZE) % MAXSIZE != q-f

11、ront)a-;if (q-data2(a + MAXSIZE) % MAXSIZE = x)while (a + MAXSIZE) % MAXSIZE != q-rear - 1)q-data2a = q-data2a + 1;a+;q-num-;cout 此车已成功离开过道。 endl;elsecout 此车不在过道中。 endl;show(s, q);3.算法的时空分析和改进设想 每次进栈的时间复杂度为O(1),当要出车辆后有n辆车时,出栈时间复杂度为O(n),也许对于一个车库来说n并不会很大,但是考虑实际这个停车场的设计非常不合理。4.输入和输出格式 输入:功能选择输入为整数1-3,输入车牌号为大于零的整数,时间为大于零的整数。 输出:输出整数型的应收的价格4 调试分析1. 为了简化程序,采用手动输入进栈车辆的排序.进栈时间.出栈时间。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号