- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计 《停车场管理》班级:姓名:学号:设计日期:2012年7月2日——2012年7月11日需求分析本次的数据结构课程设计所选的题目是停车场管理系统。根据题目要求,已知停车场是一个可停放n辆汽车的狭长通道,只有一个大门可供汽车出入,由此可将停车场的类型定义为栈,其容量为n。当停车场已经停满n辆车后,后来的车辆只能在便道上等待。当停车场内有车开走,便道上的第一辆汽车便可以进入停车场中。根据其先入先出的特点,可以将便道的类型定义为队列,容量不限。由题目可知,需停车辆的信息包括:车牌号码、汽车“到达”“离去”的信息、“到达”“离去”的时刻等。按照从终端读入的数据序列进行模拟管理。每辆车需要三个数据,其中车辆数据为:A表示到达,D表示离去,E表示程序结束。车辆牌照号码为整型数据,车辆到达或离开的时刻同样为整型数据。输入车辆到达应该输出的信息为:汽车在停车场内或便道上的停车位置;输入车辆离开应该输出的信息为汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。停车场管理系统主要实现以下几个功能: (1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。 (2)该程序设计能够通过车牌号能查到该车辆在停车场或便道中的位置。(3)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。该程序设计可以完整的模拟停车场的管理过程。概要设计停车场管理系统是充分利用数据结构中栈和队列的思想实现的,栈是一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是”后进先出”,即后进栈的元素先处理。停车场的容量即为栈的存储空间,停车场的车辆的停靠是无秩序的,因此采用链式存储的方式更适合,也方便车辆的调度。队列是限定仅能在表的一端进行插入,在表的另一端进行删除的线性表。队列中可以插入的一端称为队尾,可以删除的一端称为队首。把一个元素插入队列中的操作为进队,队列中删除一个元素的操作为出队。队列存取操作符合:先进先出。停车场的车辆到达停车和车辆的离开的管理方式就是采用队列的“先进先出”的移动的思想。停车场的入口就是队列的队首,停车场的出口就是队列的队尾。停车场管理系统流程图如图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 node{int passport; //存储车辆牌照信息int time; //存储进场时间信息}node;3.栈类型(停车场)typedef struct stack{node *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(stack 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 Qnode{node Qdata;struct Qnode *next;}Qnode;typedef struct {Qnode *front;Qnode *rear;}LinkQueue;void EnQueue(LinkQueue Q,node e){ //入队函数Qnode *q;q=(Qnode *)malloc(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,nod
文档评论(0)