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

上传人:m**** 文档编号:564666379 上传时间:2022-08-15 格式:DOC 页数:15 大小:74KB
返回 下载 相关 举报
数据结构课程设计停车场管理报告_第1页
第1页 / 共15页
数据结构课程设计停车场管理报告_第2页
第2页 / 共15页
数据结构课程设计停车场管理报告_第3页
第3页 / 共15页
数据结构课程设计停车场管理报告_第4页
第4页 / 共15页
数据结构课程设计停车场管理报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

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

1、. . . 数据结构课程设计停车场管理班级:学号:设计日期:2012年7月2日2012年7月11日1) 需求分析本次的数据结构课程设计所选的题目是停车场管理系统。根据题目要求,已知停车场是一个可停放n辆汽车的狭长通道,只有一个大门可供汽车出入,由此可将停车场的类型定义为栈,其容量为n。当停车场已经停满n辆车后,后来的车辆只能在便道上等待。当停车场有车开走,便道上的第一辆汽车便可以进入停车场中。根据其先入先出的特点,可以将便道的类型定义为队列,容量不限。由题目可知,需停车辆的信息包括:车牌、汽车“到达”“离去”的信息、“到达”“离去”的时刻等。按照从终端读入的数据序列进行模拟管理。每辆车需要三个

2、数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。车辆牌照为整型数据,车辆到达或离开的时刻同样为整型数据。输入车辆到达应该输出的信息为:汽车在停车场或便道上的停车位置;输入车辆离开应该输出的信息为汽车在停车场停留的时间和应交纳的费用(在便道上停留的时间不收费)。停车场管理系统主要实现以下几个功能: (1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。 (2)该程序设计能够通过车牌号能查到该车辆在停车场或便道中的位置。(3)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。该程序设计可以完整的模拟停车场的管理过程。2) 概要设计停车场管理系

3、统是充分利用数据结构中栈和队列的思想实现的,栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是”后进先出”,即后进栈的元素先处理。停车场的容量即为栈的存储空间,停车场的车辆的停靠是无秩序的,因此采用链式存储的方式更适合,也方便车辆的调度。队列是限定仅能在表的一端进行插入,在表的另一端进行删除的线性表。队列中可以插入的一端称为队尾,可以删除的一端称为队首。把一个元素插入队列中的操作为进队,队列中删除一个元素的操作为出队。队列存取操作符合:先进先出。停车场的车辆到达停车和车辆的离开的管理方式就是采用队列的“先进先出”的移动的思想。停车场的入口就是队列的队首,停车场的出口就

4、是队列的队尾。停车场管理系统流程图如图1所示。开闸关闸出口 入口 车辆过闸计时出队入队缴费停车准备离场调度等待、图1 停车场管理系统流程图3.详细设计1.全局变量与编译预处理语句#define ERROR 0#define OK 1#define NULL 0int count=0; /队列是否为空的标志int times;stack s,temp; /初始化栈LinkQueue Q; /初始化队列2 车辆信息类型typedef struct nodeint passport; /存储车辆牌照信息int time; /存储进场时间信息node;3栈类型(停车场)typedef struct s

5、tacknode *base;node *top;int stacksize;stack;void initstack(stack &S,int n) /构造空栈S.base=(node *)malloc(n*sizeof(node);S.top=S.base;S.stacksize=n;void push(stack &S,node e) /入栈函数if(S.top-S.base)=S.stacksize)EnQueue(Q,e); /如果栈满,调用入队函数else S.top-passport=e.passport;S.top-time=e.time;S.top+;int pop(stac

6、k &S,node &e) /出栈函数if(S.top=S.base)return ERROR; /如果栈空,返回ERROR-S.top;e.passport=S.top-passport;e.time=S.top-time;return OK;4队列类型(便道)typedef struct Qnodenode Qdata;struct Qnode *next;Qnode;typedef struct Qnode *front;Qnode *rear;LinkQueue;void EnQueue(LinkQueue &Q,node e) /入队函数Qnode *q;q=(Qnode *)mal

7、loc(sizeof(Qnode);q-Qdata.passport=e.passport;q-Qdata.time=e.time;q-next=NULL;if(count=0)Q.front=q;count+; /若创建节点前队空,头指针指向节点Q.rear-next=q;Q.rear=q;void DeQueue(LinkQueue &Q,node &e) /出队函数if(Q.rear=NULL)else e.passport=Q.front-Qdata.passport;e.time=Q.front-Qdata.time;Q.front=Q.front-next;if(Q.front=N

8、ULL)Q.rear=Q.front;count=0;5主函数与其他函数的C+算法void main()int n,exit;float money;char info;int pass;Q.front=NULL ;Q.rear=(Qnode *)malloc(sizeof(Qnode);Q.rear-next=Q.rear;printf(欢迎使用停车场管理系统n本停车场容量为:);cinn;initstack(s,n);initstack(temp,n);printf(停车场费率为:);cinmoney;while(exit!=OK)printf(n请输入车辆数据nA到达 D离去 E结束:)

9、;cininfo;printf(请输入车辆牌照:);cinpass;if(info=A|info=E)printf(请输入车辆进场时间:);if(info=D)printf(请输入车辆离场时间:);cintimes;if(info=E)exit=OK;else if(info=A)int i,j;node a;a.passport=pass;a.time=times;push(s,a);for(i=1;inext;j+;printf(停车位置(便道):%dn,j);else if(info=D)node d;int tp,counter=0;docounter+;tp=pop(s,d);whi

10、le(tp!=ERROR)if(d.passport=pass)float m;m=(times-d.time)*money;printf(停留时间:%d您需交费:%fn,times-d.time,m);while(temp.base!=temp.top)pop(temp,d);push(s,d);wait(s);d.passport=9999;tp=ERROR;elsepush(temp,d);d.passport=0;tp=ERROR;while(d.passport=0|countern);else if(info!=A&info!=D&info!=E)void wait(stack &

11、S)if(S.top-S.base)=(S.stacksize-1)&count!=0)node temp;DeQueue(Q,temp);temp.time=times;push(S,temp);4.调试分析(1)一开始在调试程序时遇到了存错误,经过DEBUG,找到了引起存错误的原因:即在建立队头指针与队尾指针时没有对指针进行初始化(没有为指针动态分配空间)。问题得到解决。 (2)在Wait函数中的If语句处,一开始的算法有些问题,导致实现的功能与设想的有出入,无法得到正确的结果。原条件为: S.top-S.base=S.stacksize后改为: (S.top-S.base)=(S.sta

12、cksize-1)&count!=0 该函数的功能得以正确实现。(3)在EnQueue函数中,一开始用的是建立实体结点,用队头队尾指针指向该实体的方法来创建队列。在调试过程中发现,忽略了生存期,导致队列并没有被创建。改为创建指针,并为指针分配空间,再给头指针和尾指针赋值的方式解决问题。虽然指针也有生存期,但为它分配的空间却并没有被收回,于是队列创建成功,问题解决。 (4)本程序中:车辆到达,离去时的时间复杂度均为:O(n)。本程序空间复杂度为:O(n)。 (5)前面运行一切正常,但是最后无法结束退出。经调试后解决。5).用户手册1、运行程序进入停车场管理界面,首先输入停车场容量和停车场费率。2

13、、然后根据车辆到达和离去的实际情况输入A或D。例如车辆到达输入A,然后输入车辆车牌与到达时刻。此时便会显示车辆停放的信息(在停车场,当停车场停满后,车辆会停放在便道上)。3、车辆离开输入D,然后输入车辆与离开时刻。此时会显示离开车辆的停车时间以与应缴纳的费用。4、输入E结束本程序。6)测试结果测试数据:设n=2输入数据:2输出:停车场容量为:2停车场费率为:1.5元/分钟A,1,5 停车位置(停车场):1A,2,10 停车位置(停车场):2D,1,15 停留时间:10分钟 需交费:15.00元A,3,20 停车位置(停车场):2A,4,25 停车位置(便道):1A,5,30 停车位置(便道):2D,2,35 停留时间:25分钟 需交费:37.50元D,4,40 停留时间:5分钟 需交费:7.50元E,0,07)附录(源程序代码)#include #include #include #include #define ERROR 0#define OK 1#

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

当前位置:首页 > 办公文档 > 教学/培训

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