ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:301.23KB ,
资源ID:30228833      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30228833.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整word版课程设计停车场管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整word版课程设计停车场管理系统.docx

1、完整word版课程设计停车场管理系统学 号 1011200142数据结构课程设计设计说明书停车场管理系统起止日期:年月 至 年月日学生姓名班级成绩指导教师(签字)年 月 日停车场管理系统一、引言随着现代化信息技术的发展,人民生活水平快速提高,汽车的数量也飞速增长,于此同时,停车问题越来越受人们的关注,为了使停车场有效管理,停车场管理的信息化成为必然。我们可以利用所学的知识,编写一个停车场管理系统,以提高管理的效率,提升停车场的竞争力。本次课程设计,我运用C语言编写停车场管理系统,主要实现汽车停车,离开,收费,停车信息查询,显示等功能,主要实现方式是用栈和队列.下面对栈和队列进行一下简单介绍.栈

2、(stack)是一种仅允许在一端进行插入和删除运算的线性表。栈中允许插入和删除的那一端,称为栈顶(top)。栈顶的第一个元素称为栈顶元素。栈中不可以插入和删除的那一端称为栈底.在一个栈中插入元素,即把新元素放到当前栈顶元素的上面,使其称为新的栈顶元素,即进栈(push)。从一个栈中删除一个元素,即把栈顶元素删除掉,使其下面的元素成为新的栈顶元素,称为出栈(pop)。栈遵循后进先出的原则,即后进栈的元素必先出栈.其中顺序栈是利用一组地址连续的存储单元依次存放从栈底到栈顶的元素。在C语言中,可以用一维数组描述顺序栈中数据元素的存储区域,并预设一个数组的最大空间。栈底设置在0下标端,栈顶随着插入和删

3、除元素而变化,可以用一个整形变量top来指示栈顶的位置.队列是一种限定在表的一端进行插人而另一端进行删除的线性表,与栈相反,队列遵循先进先出的原则.允许删除的一端,称为队头(front)。允许插入的一端称为队尾(rear)。向队列中插入新的元素称为入队,新元素进队后就成为了新的队尾元素;从队列中删除元素,称为出队,元素离队后,其后继元素就成为了新的队头元素.其中链队列就是用链表表示的队列,需要两个分别指示队头和队尾的指针(分别称为头指针和尾指针).为了操作方便,给链队列添加一个头结点,并令头指针指向头结点,尾指针指向队尾元素结点,判断队列为空的条件是头指针和尾指针均指向头结点。停车场的管理系统

4、正好利用栈和队列的这些特点来实现模拟停车场和便道.停车场管理主要实现以下几个功能:(1)、停车场车位的划分。(2)、车辆进出管理及收费功能。(3)、停车场车辆信息查询功能。(4)、退出系统。二、系统总体设计1、设计思路停车场采用栈式结构,便道采用队列结构(即便道就是等候队列)。停车场的管理流程如下:(1)当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进栈(车辆进入停车场);如果停车场已满,则车辆进入等候队列(车辆进入便道等待)。(2)当车辆要求出栈时,该车到栈顶的那些车先出栈(在它之后进入的车辆必须先退出车场为它让路),在让该车出栈,其他车辆再按原次序进栈(进入车场)。当车辆出栈完毕

5、后,检查等候队列(便道)中是否有车,有车则从队头取出,压入栈中.用栈模拟停车场,用队列模拟便道,按照从终读入的输人数据序列的进行模拟管理,每一组输入数据包含三个数据项:汽车到达或汽车离去的信息,汽车车牌号以及汽车到达或离去的时刻。每次输完,进行输出操作:若是车辆到达,输出汽车在停车场内或者便道上停车的信息;若是车辆离去,输出停留时间和需缴纳的费用(在便道上停留的时间不收费),其中栈以顺序结构实现,队列以链表结构实现.2、系统总体框架图主函数流程图 图1 系统总体框图3、系统流程图实现对一级菜单:模拟停车场,便道,实现车辆停车、离开、列表显示停车场信息、退出系统功能的控制,调用各个子函数。程序流

6、程图如图2所示。图2主函数流程图三、详细设计1、车辆停车函数及流程图车辆停车函数实现:记录停车信息包括车辆车牌号、停车时刻、停车车位等。其流程如图3所示图3车辆停车流程图2、车辆离开函数及流程图车辆离开函数主要实现:记录车辆离开的信息,以及便道上的车是否进入车库中。其流程如图4所示。图4车辆离开流程图3、列表显示车场信息函数及流程图该函数主要判断停车场是否有车,如果有车就显示停车场车辆的信息,没车显示无车.其流程如图5所示。图5列表显示停车场信息流程图4、列表显示便道信息判断便道上是否有车,如果有车,输出车辆的车牌号,如果没有车,显示无车,其流程如图6所示图6列表显示便道信息5列表显示菜单函数

7、及流程图示实现列表显示功能的控制,调用显示停车场信息、便道信息的函数,程序流程图如图7所示结束图7列表显示菜单及流图四、总结通过本次课程设计,我对数据结构的理解进一步加深,我理解和掌握了每一段程序代码的功能及含义,并且能够实现模拟停车场管理的主要功能:利用栈实现车的入库问题,利用队列完成车在便道上停放的问题,主要是通过栈和队列的初始化,调用等函数来模拟停车问题。学习数据结构,我学会如何将所学的知识运用到实际中,解决一些实际的问题,这才是学习的根本。当然在实验中我也遇到了不少实际性的问题,比如车辆停车的时间hour限制在24小时,min限制在60分钟之内,如果加入日期计算就更好了;在便道上等待的

8、车辆,车主不可能无限制的等待,应该编写一个便道上车辆离开的函数更合理些。编写的程度要与实际有联系,这就不能只依赖于课本,还要联系实际多多思考,重复调试,不断改进,才能编出一个符合实际的有价值的系统。参考文献1冯燕,陈越。数据结构课程设计M.第一版。浙江大学出版社,20072李春葆,尹为民,李蓉蓉.数据结构教程上机指导。第三版.清华大学出版社,2008五、附录include ”stdio.hinclude stdlib.h”include ”string。h”define MAX 2 /车库容量define price 0。2 /停车收费按分计typedef struct time int ho

9、ur; int min;Time; /时间结点typedef struct node char num10; Time reach; Time leave;CarNode; /车辆信息 ,包括车牌号,到达和离开时间typedef struct NODE CarNodestackMAX+1; int top;SeqStackCar; /用栈模拟车库typedef struct carCarNode *data; struct carnext;QueueNode;typedef struct NodeQueueNode front; QueueNode rear;LinkQueueCar;/用队列

10、模拟便道/函数声明/void InitStack(SeqStackCar);/初始化栈int InitQueue(LinkQueueCar *);/初始化便道int Arrival(SeqStackCar,LinkQueueCar *);/车辆停车void Leave(SeqStackCar*,SeqStackCar,LinkQueueCar*);/车辆离开void List(SeqStackCar,LinkQueueCar);/显示存车信息 void main() SeqStackCar Enter,Temp; LinkQueueCar Wait; int ch; InitStack(&En

11、ter); InitStack(Temp); InitQueue(&Wait); while(1) printf(”nn*欢迎使用停车场管理系统*”); printf(”n 1-车辆停车”); printf(”n 2-车辆离开”); printf(n 3-列表显示”); printf(n 4-退出系统n); printf(n 停车费用:0。2元/分”); printf(”n*); printf(n 请选择您要服务的项目12-34: ”); while(1) scanf(”d,ch); if(ch=1&ch=4)break; else printf(n请选择:1-234); switch(ch)

12、 case 1:Arrival(&Enter,Wait);break;/车辆停车 case 2:Leave(Enter,&Temp,Wait);break;/车辆离开 case 3:List(Enter,Wait);break;/列表打印信息 case 4:exit(0);/退出主程序 default:break; void InitStack(SeqStackCar *s)/初始化栈 int i; stop=0; for(i=0;ifront=(QueueNode)malloc(sizeof(QueueNode)); if(Q-front!=NULL) Qfrontnext=NULL; Qr

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

14、preach.hour; A2=preach。min; B1=p-leave.hour; B2=pleave。min; printf(n应交费用为:.1f元n”,(B1A1+24)2460+(B2A2+60)60)price); free(p); int Arrival(SeqStackCarEnter,LinkQueueCar W)/车辆到达 CarNode p; QueueNode t; p=(CarNode*)malloc(sizeof(CarNode)); flushall(); printf(n 请输入车牌号: ”); gets(p-num); if(Enter-toptop+; p

15、rintf(”n车辆在第d号车位”,Enter-top); printf(n 请输入开始停车时间:/*:*/”); scanf(”%d:d,&(preach.hour),(preach。min); Enter-stackEnter-top=p; return(1); else/车位已满,车进便道 printf(n车位已满,请在便道等待!n); t=(QueueNode)malloc(sizeof(QueueNode); tdata=p; t-next=NULL; W-rear-next=t; Wrear=t; return(1); void Leave(SeqStackCarEnter,Seq

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

17、er-stackEnter-top=NULL;Enter-top-;while(Temp-top=1)Temp-top+;EnterstackEntertop=Temp-stackTemp-top;TempstackTemptop=NULL;Temp-top-;Display(p,room);/判断通道上是否有车及停车位是否已满if((W-front!=W-rear)&EntertopMAX)q=W-front-next;t=qdata;Entertop+;printf(”便道车牌号为%s的车进入d号车位停车”,t-num,Enter-top);printf(”n 请输入现在的时间/*:*/”

18、);scanf(d:d”,&(treach。hour),&(treach.min));W-front-next=q-next;if(q=Wrear)Wrear=W-front;EnterstackEntertop=t;free(q);else printf(”便车道里没有车n);else printf(”车位里没有车n”);void List1(SeqStackCar *S)int i;if(Stop0)printf(n车牌号 车位 停车时刻 n);for(i=1;itop;i+)printf( %s”,S-stacki-num); printf(” d”,i);printf(” d:dn”,

19、Sstacki-reach。hour,Sstacki-reach.min);else printf(n车位里没有车”);void List2(LinkQueueCar*W)QueueNode p;p=W-front-next;if(W-front!=W-rear)printf(”等待车辆的车牌号为:”);while(p!=NULL)puts(pdata-num);p=p-next;else printf(”n便道里没有车n);void List(SeqStackCar S,LinkQueueCar W)int flag=1,tag;while (flag)printf(”nn请选择: 1-23:);printf(n1.车位信息n2。便道信息n3.返回主菜单n”);while(1)scanf(”d”,&tag);if(tag=1|tag=3)break;else printf(n 请选择: 1-23);switch(tag)case 1:List1(&S);break;case 2:List2(W);break;case 3:flag=0;break;default :break;相关运行结果如下

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1