课程设计-停车场管理系统_第1页
课程设计-停车场管理系统_第2页
课程设计-停车场管理系统_第3页
课程设计-停车场管理系统_第4页
课程设计-停车场管理系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学 号 数据结构课程设计设计说明书停车场管理系统起止日期:年月 至 年月日学生姓名班级成绩指导教师(签字)年 月 日停车场管理系统一、引言3二、系统总体设计31、设计思路32、系统总体框架图53、系统流程图5三、详细设计71、车辆停车函数及流程图72、车辆离开函数及流程图83、列表显示车场信息函数及流程图94、列表显示便道信息105列表显示菜单函数及流程图11四、总结12参考文献12五、附录13一、引言随着现代化信息技术的发展,人民生活水平快速提高,汽车的数量也飞速增长,于此同时,停车问题越来越受人们的关注,为了使停车场有效管理,停车场管理的信息化成为必然。我们可以利用所学的知识,编写一个停车

2、场管理系统,以提高管理的效率,提升停车场的竞争力。本次课程设计,我运用C语言编写停车场管理系统,主要实现汽车停车,离开,收费,停车信息查询,显示等功能,主要实现方式是用栈和队列。下面对栈和队列进行一下简单介绍。栈(stack)是一种仅允许在一端进行插入和删除运算的线性表。栈中允许插入和删除的那一端,称为栈顶(top)。栈顶的第一个元素称为栈顶元素。栈中不可以插入和删除的那一端称为栈底。在一个栈中插入元素,即把新元素放到当前栈顶元素的上面,使其称为新的栈顶元素,即进栈(push)。从一个栈中删除一个元素,即把栈顶元素删除掉,使其下面的元素成为新的栈顶元素,称为出栈(pop)。栈遵循后进先出的原则

3、,即后进栈的元素必先出栈。其中顺序栈是利用一组地址连续的存储单元依次存放从栈底到栈顶的元素。在C语言中,可以用一维数组描述顺序栈中数据元素的存储区域,并预设一个数组的最大空间。栈底设置在0下标端,栈顶随着插入和删除元素而变化,可以用一个整形变量top来指示栈顶的位置。队列是一种限定在表的一端进行插人而另一端进行删除的线性表,与栈相反,队列遵循先进先出的原则。允许删除的一端,称为队头(front)。允许插入的一端称为队尾(rear)。向队列中插入新的元素称为入队,新元素进队后就成为了新的队尾元素;从队列中删除元素,称为出队,元素离队后,其后继元素就成为了新的队头元素。其中链队列就是用链表表示的队

4、列,需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针)。为了操作方便,给链队列添加一个头结点,并令头指针指向头结点,尾指针指向队尾元素结点,判断队列为空的条件是头指针和尾指针均指向头结点。停车场的管理系统正好利用栈和队列的这些特点来实现模拟停车场和便道。停车场管理主要实现以下几个功能:(1)、停车场车位的划分。(2)、车辆进出管理及收费功能。(3)、停车场车辆信息查询功能。(4)、退出系统。二、系统总体设计1、设计思路停车场采用栈式结构,便道采用队列结构(即便道就是等候队列)。停车场的管理流程如下:(1)当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如

5、果停车场已满,则车辆进入等候队列(车辆进入便道等待)。(2)当车辆要求出栈时,该车到栈顶的那些车先出栈(在它之后进入的车辆必须先退出车场为它让路),在让该车出栈,其他车辆再按原次序进栈(进入车场)。当车辆出栈完毕后,检查等候队列(便道)中是否有车,有车则从队头取出,压入栈中。用栈模拟停车场,用队列模拟便道,按照从终读入的输人数据序列的进行模拟管理,每一组输入数据包含三个数据项:汽车到达或汽车离去的信息,汽车车牌号以及汽车到达或离去的时刻。每次输完,进行输出操作:若是车辆到达,输出汽车在停车场内或者便道上停车的信息;若是车辆离去,输出停留时间和需缴纳的费用(在便道上停留的时间不收费),其中栈以顺

6、序结构实现,队列以链表结构实现。2、系统总体框架图停车场管理系统主函数流程图列表显示停车场信息退出系统车辆停车车辆离开车库停车便道停车便道信息停车场信息返回主菜单停车位置应缴纳费用停车时刻离开时刻停车位置到达时刻车牌号等待中的车牌号停车时刻停车位置车牌号图1 系统总体框图3、系统流程图实现对一级菜单:模拟停车场,便道,实现车辆停车、离开、列表显示停车场信息、退出系统功能的控制,调用各个子函数。程序流程图如图2所示。开始读取头函数判断输入的数字是否为1执行第一种情况执行其他情况输入是否为4 跳出头函数是否空 结束NYNYYN图2主函数流程图三、详细设计1、车辆停车函数及流程图车辆停车函数实现:记

7、录停车信息包括车辆车牌号、停车时刻、停车车位等。其流程如图3所示开始车辆停车,进入函数输入车牌号N停车场车库不满Y车进便道输出车辆停车位置输入车辆车牌号 结束图3车辆停车流程图2、车辆离开函数及流程图车辆离开函数主要实现:记录车辆离开的信息,以及便道上的车是否进入车库中。其流程如图4所示。开始N停车场车有车YN1停车场没有车Y输入离开车的车位 车辆离开 输出该车信息N便道上有车Y便道上车进停车库显示便道上没有车输入便道上的车进车库时间结束图4车辆离开流程图3、列表显示车场信息函数及流程图该函数主要判断停车场是否有车,如果有车就显示停车场车辆的信息,没车显示无车。其流程如图5所示。开始N停车场是

8、否有车Y显示停车场没有车输出停车场中车辆的信息结束图5列表显示停车场信息流程图4、列表显示便道信息判断便道上是否有车,如果有车,输出车辆的车牌号,如果没有车,显示无车,其流程如图6所示开始N便道是否有车Y显示便道上没有车输出便道车辆的信息结束图6列表显示便道信息5列表显示菜单函数及流程图示实现列表显示功能的控制,调用显示停车场信息、便道信息的函数,程序流程图如图7所示开始NFlag=1Y输出车场信息、便道信息、返回主菜单三个选项N1Y输入1-2-3选择的选项N1Y执行其他情况执行第一种情况跳出结束图7列表显示菜单及流图四、总结通过本次课程设计,我对数据结构的理解进一步加深,我理解和掌握了每一段

9、程序代码的功能及含义,并且能够实现模拟停车场管理的主要功能:利用栈实现车的入库问题,利用队列完成车在便道上停放的问题,主要是通过栈和队列的初始化,调用等函数来模拟停车问题。学习数据结构,我学会如何将所学的知识运用到实际中,解决一些实际的问题,这才是学习的根本。当然在实验中我也遇到了不少实际性的问题,比如车辆停车的时间hour限制在24小时,min限制在60分钟之内,如果加入日期计算就更好了;在便道上等待的车辆,车主不可能无限制的等待,应该编写一个便道上车辆离开的函数更合理些。编写的程度要与实际有联系,这就不能只依赖于课本,还要联系实际多多思考,重复调试,不断改进,才能编出一个符合实际的有价值的

10、系统。参考文献1冯燕,陈越.数据结构课程设计M.第一版.浙江大学出版社,20072李春葆,尹为民,李蓉蓉.数据结构教程上机指导.第三版.清华大学出版社,2008五、附录#include stdio.h#include stdlib.h#include string.h#define MAX 2 /车库容量#define price 0.2 /停车收费按分计typedef struct time int hour;int min;Time; /时间结点typedef struct nodechar num10;Time reach;Time leave;CarNode; /车辆信息 ,包括车牌号

11、,到达和离开时间typedef struct NODECarNode*stackMAX+1;int top;SeqStackCar; /用栈模拟车库typedef struct carCarNode *data; struct car*next;QueueNode;typedef struct NodeQueueNode *front; QueueNode *rear;LinkQueueCar;/用队列模拟便道/*函数声明*/void InitStack(SeqStackCar*);/初始化栈int InitQueue(LinkQueueCar *);/初始化便道int Arrival(Seq

12、StackCar*,LinkQueueCar *);/车辆停车void Leave(SeqStackCar*,SeqStackCar*,LinkQueueCar*);/车辆离开void List(SeqStackCar,LinkQueueCar);/显示存车信息 void main() SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; InitStack(&Enter); InitStack(&Temp); InitQueue(&Wait); while(1) printf(nn*欢迎使用停车场管理系统*); printf(n 1-车辆停车)

13、; printf(n 2-车辆离开); printf(n 3-列表显示); printf(n 4-退出系统n); printf(n 停车费用:0.2元/分); printf(n*); printf(n 请选择您要服务的项目1-2-3-4: ); while(1) scanf(%d,&ch); if(ch=1&chtop=0; for(i=0;istacks-top=NULL; int InitQueue(LinkQueueCar *Q)/初始化便道 Q-front=(QueueNode*)malloc(sizeof(QueueNode); if(Q-front!=NULL) Q-front-n

14、ext=NULL; Q-rear=Q-front; return(1); else return(-1); void Display(CarNode*p,int room)/打印车场的信息 int A1,A2,B1,B2; printf(n请输入离开的时间/ *:*/:); scanf(%d:%d,&(p-leave.hour),&(p-leave.min); printf(n离开车辆的车牌号:); puts(p-num); printf(n其到达时间为:%d:%d,p-reach.hour,p-reach.min); printf(n离开时间为:%d:%d,p-leave.hour,p-le

15、ave.min); A1=p-reach.hour; A2=p-reach.min; B1=p-leave.hour; B2=p-leave.min; printf(n应交费用为:%.1f元n,(B1-A1+24)%24*60+(B2-A2+60)%60)*price); free(p); int Arrival(SeqStackCar*Enter,LinkQueueCar *W)/车辆到达 CarNode *p; QueueNode *t; p=(CarNode*)malloc(sizeof(CarNode); flushall(); printf(n 请输入车牌号: ); gets(p-n

16、um); if(Enter-toptop+; printf(n车辆在第%d号车位,Enter-top); printf(n 请输入开始停车时间:/*:*/); scanf(%d:%d,&(p-reach.hour),&(p-reach.min); Enter-stackEnter-top=p; return(1); else/车位已满,车进便道 printf(n车位已满,请在便道等待!n); t=(QueueNode*)malloc(sizeof(QueueNode); t-data=p; t-next=NULL; W-rear-next=t; W-rear=t; return(1); voi

17、d Leave(SeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W)int room; CarNode*p,*t; QueueNode*q; if(Enter-top0)while(1)printf(请输入离开车的车位号/1-%d/,Enter-top);scanf(%d,&room);if(room=1&roomtop) break;while(Enter-toproom)/车辆离开Temp-top+;Temp-stackTemp-top=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-

18、top-;p=Enter-stackEnter-top;Enter-stackEnter-top=NULL;Enter-top-;while(Temp-top=1)Temp-top+;Enter-stackEnter-top=Temp-stackTemp-top;Temp-stackTemp-top=NULL;Temp-top-;Display(p,room);/判断通道上是否有车及停车位是否已满if(W-front!=W-rear)&Enter-topfront-next;t=q-data;Enter-top+;printf(便道车牌号为%s的车进入%d号车位停车,t-num,Enter-top);printf(n 请输入现在的时间/*:*/);scanf(%d:%d,&(t-reach.hour),&(t-reach.min);W-front-next=q-next;if(q=W-rear)W-rear=W-front;Enter-stackEnter-top=t;free(q);else printf(便车道里没有车n);else printf(车位里没有车n);void List1(SeqSta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论