数据结构实践报告-停车场管理系统

上传人:鲁** 文档编号:506734231 上传时间:2023-11-08 格式:DOC 页数:25 大小:232.51KB
返回 下载 相关 举报
数据结构实践报告-停车场管理系统_第1页
第1页 / 共25页
数据结构实践报告-停车场管理系统_第2页
第2页 / 共25页
数据结构实践报告-停车场管理系统_第3页
第3页 / 共25页
数据结构实践报告-停车场管理系统_第4页
第4页 / 共25页
数据结构实践报告-停车场管理系统_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数据结构实践报告-停车场管理系统》由会员分享,可在线阅读,更多相关《数据结构实践报告-停车场管理系统(25页珍藏版)》请在金锄头文库上搜索。

1、河 南 财 经 政 法 大 学集中实践报告院系: 班级: 指导老师: 小组: 小组成员: 目 录(一)设计目的3(二)问题描述3(三)概要设计4(四)详细设计8 (五)调试分析9(六)测试分析10(七)心得体会11(八)附录(源代码)12(一) 设计目的1通过课程设计,了解并掌握数据结构的设计方法,具备初步的独立分析和设计能力;2通过课程设计,初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3通过课程设计,提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4通过课程设计,训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作

2、风。(二)问题描述及要求基本要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。测试数据设n=2,输入数据为:(A,1,5),(A,2,10),(D,1,15),(A,3,20),(A,4,25),(A5,30),(D,2,35),(D,4,40),(E

3、,0,0)。其中:A表示到达(arrival);D表示离去(departure);E表示输出结束(end)。实现提示需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 此外还要实现:(1)两个栈共享空间,思考应开辟数组的空间是多少?(2)汽车可有不同种类,则他们的占地面积不同,收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道上开走,此时排在它前面的汽车要先开走让路,然后

4、再依次排到队尾。(三) 概要设计1、设计思想此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就可以设计两个栈,其中一个栈用来模拟停车场,另一个栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点的连接方式就可以了,使通道上第一辆车进入停车场这个栈,并且使通道上原来的

5、第二辆车成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就可以了。2、实现方法对于此停车场管理系统的实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已。对于要对停车场内的车辆根据其停放时间收取相应的停车费用,可以记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价并且打印出最后的费用就可以实现了。 3、流程图分析 流程图按块来分析,共分成整体系统,汽车到达系统,汽车离去系统,汽车显示系统。如图1。(1) 汽车整体

6、系统 图1S停 车 场 管 理 系 统车辆到达车辆离开车辆显示A D (2)以模块为单位分析算法1、“到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图2。 图2 2.“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。 图3 3. “显示”模块:显示模块有两个显示选项,即:车场与便道。如图4。图4(四)详细设计1. 此函数分为不同的函数,其中包含主函数,用此来调用其他子函数,其子函数包括车辆进车站、便道函数;车辆离开函数;车辆显示函数等。2. 函数的定义: typedef structint num; /*车牌号*/int arr

7、time; /*到达/离开时间*/char car;/*车的类型*/ELEMTP; /*顺序栈的数据元素类型*/typedef structELEMTP elemN;int top;SqStack;/*顺序栈类型*/typedef struct nodeint num; /*车牌号/便道上的车辆数量*/struct node *next;QNode; /*链队列的数据元素类型*/typedef structQNode *front, *rear;LQueue; /*链队列类型*/3. 主函数为void main(),在此函数中用switch()函数来调用子函数。其中车辆进入车站、便道的函数为v

8、oid Arrive (SqStack *s1, LQueue *q,ELEMTP x);车辆离开函数为void Delive (SqStack *s1,SqStack *s2, LQueue *q,ELEMTP x);车辆显示函数为void Display(SqStack *s1, LQueue *q)。(五)调试分析 由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清屏函数,所以,运行时用户选择任务并且执行完任务结构清晰,使用方便。本程序的调试运行,总体上情况良好,但中间也出现了一些小问题。如当删除第3个元素时,出现了错误。明明有4号车,却出现了提示错误,后经过调试,发现

9、了问题,原来if (y.num=x.num&y.car=x.car),这个判定限制了太多,当把其改为if (y.num=x.num),便不会再次出现此问题。(六)测试分析 1.主界面 2.车辆到达3.车辆离开4.显示车辆信息5.程序结束(七)心得体会 (1) 该实验涉及到顺序栈的建立、插入、删除等操作,涉及到了链队列的建立、插入、删除等操作。 做这个实验,加深了我对以上知识点的认识和理解。 (2) 在这一周中,我们提高了 C 语言编程的能力。在程序设计过程中,需要经过反复地编写,调试,运行,发现问题并解决问题,在这次实验的设计中,我加深对程序的了解,提高自己的实际动手能力和独立思考的能力同时我

10、也学会了综合以前学到的基本知识来解决较大问题的方法。(3)在这一周中,我们通过小组中的团结合作,解决了程序中一个又一个问题。在这个过程中,我们更加了解彼此,更加明白合作的重要性。这次集中实践,不但学会了知识,还明白了团结的重要性,可谓收获良多。(八)附录(源代码) #include stdio.h#include stdlib.h#define N 2 /*停车场容量*/#define M 10#define True 1#define False 0typedef structint num; /*车牌号*/int arrtime; /*到达/离开时间*/char car;/*车的类型*/E

11、LEMTP; /*顺序栈的数据元素类型*/typedef structELEMTP elemN;int top;SqStack;/*顺序栈类型*/typedef struct nodeint num; /*车牌号/便道上的车辆数量*/struct node *next;QNode; /*链队列的数据元素类型*/typedef structQNode *front, *rear;LQueue; /*链队列类型*/void InitStack_Sq (SqStack *s); /*初始化栈*/int Push_Sq(SqStack *s,ELEMTP x); /*入栈*/ELEMTP Pop_Sq

12、(SqStack *s); /*出栈*/void InitQueue_L(LQueue *q); /*初始化队列*/void EnQueue_L (LQueue *q,int num1); /*入队列*/int DelQueue_L(LQueue *q); /*出队列*/void Arrive (SqStack *s1, LQueue *q,ELEMTP x)/*车辆x进入停车场*/int f;f=Push_Sq(s1,x);if (f=False) /*停车场栈s1已满入便道q */EnQueue_L(q,x.num);printf(第%d号车停在便道第%d车位上n,x.num,q-fron

13、t-num);else printf(第%d号车停在停车场第%d车位上n,x.num,s1-top);/* Arrive */void Delive (SqStack *s1,SqStack *s2, LQueue *q,ELEMTP x)/*车辆x离开停车场*/int n,f=False;ELEMTP y; QNode *p;while (s1-top0) & (f!=True) /*在栈s1中寻找车辆x */y=Pop_Sq(s1);if (y.num!=x.num) n=Push_Sq(s2,y);else f=True;if (y.num=x.num) /*寻找到车辆x*/if(A=x.car)printf(第%d号车应收费%d元n,y.num,(x.arrtime-y.arrtime)*M);elseif(B=x.car)printf(第%d号车应收费%d元n,y.num,(x.arrtime-y.arrtime)*M*2);else printf(第%d号车应收费%d元n,y.num,(x.arrtime-y.arrt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

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