欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

停车场管理系统课程设计

  • 资源ID:38995182       资源大小:245.51KB        全文页数:29页
  • 资源格式: DOC        下载积分:15积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要15积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

停车场管理系统课程设计

.哈尔滨理工大学课程设计(数据结构)题 目 停车场管理系统 班 级 学 号 姓 名 指导教师 系主任: 2013年03月08日.一、设计内容与设计要求1设计内容:问题描述设停车场只是一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出,还有一个等停的的狭长通道。汽车在停车场内按车辆的先后顺序依次排列,若车站内已停满汽车,则后来的汽车只能在门外的通道上等停,一旦停车场内有车开走,则排在通道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车站为它让路,待该车辆开出大门,为它让路的车辆再按原来次序进入车场。在这里假设汽车不能从便道上开走,试设计这样一个停车场模拟管理程序。基本功能(1) 车辆成批入站。当一个停车场刚开始投入运行的时候,会有很多车进来,因此,要设计一个函数来实现车辆批量进站。并要检测车辆的数目是否超过规定的最大容量,给出相关提示信息。(2)单个车辆入站。当系统正常投入运行后,会有零散的车辆进进出出,因此,设计一个函数实现单个车辆入站。(3)车站内信息实时显示。车站内信息包括两个部分:停车场内停放的车辆以及在外面通道上等停的车辆。(4)车辆出站。当停车场内车辆出站后,检查通道上是否有车等停,如果有,则要把排在最前面的车调入停车场内。2设计要求:1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会。6)上机演示。二、进度安排目 录1 系统需求分析11.1设计思想11.2实现方法12 总体设计22.1总体设计图22.2模块流程图32.2.1:车辆成批入站32.2.2:车站内信息显示43 详细设计53.1 采用结构体定义的相关数据类型53.2 功能函数设计64 系统测试及其结果114.1 程序调试中的问题114.2 结果截图134.2.1:case1:车辆成批入站134.2.2:case3:车辆出站155 心得体会166 附录186.1源程序代码181 系统需求分析1.1设计思想此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就可以设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个循环队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点的连接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道上原来的第二辆车成为通道上的第一辆车,此时只需将模拟通道的循环队列的头结点连到原来的第二辆车上就可以了。这个程序的关键是车辆的进站和出站操作,以及车场和通道之间的相互关系。由于车站是一个很窄的、一边开口的车道,先进后出,类似数据结构中的栈结构,故车场用栈这种数据结构来描述。外面的狭长的通道,先进先出,故可用队列结构来描述。考虑到车场和通道在整个程序中都要用到。故把这两个变量定义成全局变量。本程序中的数据对象是汽车,可以认为车牌号是每个元素的关键项,不能重复,和现实中一样,另外加了车主姓名这一数据项,为表简洁,其他相关信息如入场时间,车的类型,收取费率等,都不再考虑,具体应用的时候可以方便地修改得到。1.2实现方法对于此停车场管理系统的实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点。至于通道上车辆的停放则用一个循环队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此循环队列上的结点而已。2 总体设计2.1总体设计图停车场车辆管理 系统车辆出站显示车站内汽车信息车站管理系统主菜单 函 数退出 系统车辆成批入站单个车辆入站图2.1 功能模块图 运行程序到系统界面,接着系统界面就会出现让你能选择的功能:【1】车辆成批入站【2】单个车辆入站【3】车辆出站【4】车站内信息实时显示【5】相关功能设定【0】退出本系统2.2模块流程图2.2.1:车辆成批入站开 始输入汽车的车牌号还有车主姓名strcpy(pcar.num,pnum);strcpy(pcar.name,pname);Push(SCar,pcar)=-1InsertQueue(QCar,pcar)=-1车站已满!车辆已经入通道!通道已满,进入通道失败!while(strcmp(pnum,"#")!=0)结 束这批汽车已经成功进入停车场nynyny图2.2车辆成批入站流程图2.2.2:车站内信息显示开 始SCar->top=-1i=0i<SCar->top+1printf("%-13s",SCar->datai.num);printf("%18sn",SCar->datai.name);i+QCar->rear!=QCar->frontwhile(front!=rear)printf("%-13s",SCar->datai.num);printf("%18sn",SCar->datai.name);front=(front+1)%QCar->n结 束ynnyyn图2.3停车场内信息显示流程图3 详细设计3.1 采用结构体定义的相关数据类型前面提到,要用到栈和队列的操作。这里,由于一个车场的最大容量是一定的,且车场最多执行的操作是插入和删除操作,所以用顺序储存结构可以带来更大益处。为了防止队列中出现“假溢出”现象,这里采用了循环队列。在模拟汽车这个对象时,进行了简化处理,只取得最核心的两个数据项:车牌号和车主姓名。具体数据结构定义如下:首先定义maxsize为20:#define maxsize 20第二个再定义汽车的信息:车牌号num10和车主姓名name10:typedef struct carchar num10;char name10;Car;第三个定义汽车场的结构,在这里我把它看成是一个栈,在这里定义栈的容量等信息:typedef struct Car datamaxsize; int n;/栈容量设定 int top;Stack;/顺序栈 用来存放汽车场内的车辆信息第四个定义通道的结构,在这里我把它看成是一个循环队列,在这里定义队列胡容量等信息:typedef struct Car datamaxsize; int n;/队列容量设定 int num;/当前通道上的车辆数 int front,rear;Queue;/循环队列 用来存放通道内的车辆信息3.2 功能函数设计(1)车辆成批入站void InitCarpark(void)/车辆成批入站此函数也可以作为初始化车场的函数,因为一个车场刚开始投入运行的时候会有很多的车进来,这也是设计此函数最重要的一个原因。每行输入一个汽车信息,最后结束的时候输入“# #”即可。汽车信息中前面表示汽车的车牌号,后面表示车主姓名,中间用空格隔开。当输入汽车的数目超过规定的最大容量的时候(如果开始不设置最大容量,默认值为系统申请的最大值maxsize=20),自动检测条件,给出相关提示信息。程序如下:void InitCarpark(void)/车辆成批入站char num8,*pnum,name10,*pname;Car pcar;pnum=num;pname=name;printf("nn请输入车子的信息(包括车牌号和车主姓名(两者之间用空格隔开)(以# #这个符号结束):n");scanf("%s%s",pnum,pname);while(strcmp(pnum,"#")!=0)strcpy(pcar.num,pnum);strcpy(pcar.name,pname);if(Push(SCar,pcar)=-1) printf("n车站已满!车辆已经入通道!n");if(InsertQueue(QCar,pcar)=-1)printf("n通道已满,进入通道失败!n");scanf("%s%s",pnum,pname);printf("这批汽车已经成功进入停车场n");getch();carmenu();(2)单个车辆入站void InsertCar(void)/单个车辆入站当系统正常投入运行后,会有零散的车辆进进出出,如还用成批输入方式的话,将会带来一定的麻烦。此函数具有函数InitCarpark()几乎所有的功能,程序跟InitCarpark()这个差不多,同样先输入,然后再判断停车场是否满了,通道是否满了,最后执行结果,程序如下:void InsertCar(void)/单个车辆入站char num10,*pnum,name10,*pname;Car pcar;pnum=num;pname=name;printf("nn请输入车子的信息(包括车牌号和车主姓名(两者之间用空格隔开):n");scanf("%s%s",pnum,pname);strcpy(pcar.num,pnum);strcpy(pcar.name,pname);if(Push(SCar,pcar)=-1)printf("n车站已满!车辆已经入通道!n");if(InsertQueue(QCar,pcar)=-1)printf("n通道已满,进入通道失败!n");getch();(3)车辆内信息显示函数void ShowCar(void)/车站内信息显示如果车场本身是空的,没有汽车,那么也就不存在查看汽车信息了。故本函数一开始进行合理性检查,如果条件不成立,拒绝执行显示信息操作,给出出错的信息后返回到主界面。前面提到,车站内信息包括两部分:车场内停放的车辆,在外面通道上等停的车辆。因为通道上也不一定有车,程序输出车场内的所有汽车信息后,自动进行判断通道上是否有车辆。如果有车辆的话,继续输出停在通道上的车子信息。程序如下:void ShowCar(void)/车站内信息显示int i,front,rear;if(SCar->top=-1)printf("nn这停车场是空的!n");getch();carmenu();printf("nn目前停车场的车有:n-车牌号-车主姓名n");for(i=0;i<SCar->top+1;i+)printf(" %-13s",SCar->datai.num);printf("%18sn",SCar->datai.name);if(QCar->rear!=QCar->front)/通道内有车辆front=QCar->front;rear=QCar->rear;printf("n通道信息:n-车牌号-车主姓名n");while(front!=rear)printf(" %-13s",QCar->datafront.num);printf("%18sn",QCar->datafront.name);front=(front+1)%QCar->n;(4)车辆出站函数void ExitCar(void)/车辆出站同上,首先进行和利息你给检查。这里的检查包括两个部分:车场非空且输入的车牌号在车场中。如果一切条件满足,则执行推车操作。最后,检查通道上是否有车辆等待。如果通道不为空,程序会自动把排在通道最前面的车调入车场内。其中,退车的算法过程如下: 前面检测条件满足时,执行如下操作:由于车场很窄,当一辆车要出场时,排在它后面的车辆需要先出场,等要退出的车开走后,刚才为它让道的那些车再按原次序进入车场。不难看出,这里需要创建一个临时栈,用于保存让道车辆的信息。 在前面的合理性检查中,已经定位到出场车辆所在位置,从栈顶开始,到所在位置前一个结束,车场内执行出栈操作,临时栈结构执行入栈操作。 在当前位置执行出栈操作,即可实现指定的车辆出场。 当临时栈不为空时,依次执行:临时栈退栈,车场内入栈。(5)车站模拟系统相关功能设定函数void SetCar(void)/车站模拟系统相关功能设定此函数很简单,首先用一个do-while循环,得到一个合理值,修改相关参数即可。这里有一个防错设计:当输入的最大容量小于车场内当前的车辆数时,拒绝执行修改。程序如下:void SetCar(void)/车站模拟系统相关功能设定int b; printf("选择1:修改停车场的容量n"); printf("选择2:修改通道的容量n"); printf("请你选择操作(1-2):n"); scanf("%d",&b); /*读入选择*/ if(b=1)int n,flag=1;printf("nn目前停车场最大的容纳量是:%dn",SCar->n);printf("n输入您想要的停车场的最大容纳量:(<=%d)n",maxsize);doprintf("请输入数值:");scanf("%d",&n);if(n>maxsize)printf("输入错误,请重新输入n");if(n<SCar->top+1)flag=0;n=SCar->n;break;while(n<0|n>maxsize);SCar->n=n;if(flag!=0) printf("n修改成功!n");elseprintf("n错误!车站车辆已经超过此数!如要再输,请再按功能5n");getch();carmenu();if(b=2)int n,flag=1;printf("nn目前通道最大的容纳量是:%dn",QCar->n-1);printf("n请输入您想要的通道的最大容纳量:(<=%d)n",maxsize);doprintf("请输入数值:");scanf("%d",&n);if(n>maxsize)printf("输入错误,请重新输入n");if(n<QCar->rear+1)flag=0;n=QCar->n;break;while(n<0|n>maxsize);QCar->n=n+1;if(flag!=0) printf("n修改成功!n");elseprintf("n错误!车站车辆已经超过此数!如要再输,请再按功能5n");getch();carmenu();(6)车站管理系统主菜单函数void carmenu(void)/车站管理系统主菜单此函数是用户与系统之间的一个窗口,用户通过它来选择相关操作。用printf语句打印出供选择项目后,用不会显的getch()得到一个字符,用开关语句switch进行分类,判断用户想要执行的操作,然后执行相关功能函数即可。(7)主函数void main(void)为分别表示车场和通道的两个指针变量申请空间,分别调用相应的初始化函数,得到一个合理解,然后程序流向主供选菜单,供用户选择执行。void main(void)if(SCar=(Stack *)malloc(sizeof(Stack)=NULL) printf("Failed!");exit(1);if(QCar=(Queue *)malloc(sizeof(Queue)=NULL)printf("Failed!");exit(1);InitStack(SCar);InitQueue(QCar);carmenu();exit(0);4 系统测试及其结果4.1 程序调试中的问题调试过程中的主要问题由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清屏函数,所以,运行时用户选择任务并且执行完任务后,又会回到供用户选择功能的主界面,因此整个程序从整体上来讲结构清晰,使用方便。本程序的调试运行,总体上情况良好,但中间也出现了一些小问题。其中比较有代表性的主要问题有:(1)当停车场已经达到最大容量,但仍有车辆进入停车场的时候,运行界面上没有出现或者说出现了但又跳掉了“车站已满!车辆已经入通道!”的提示信息。在查阅了多种资料后,在那一个printf语句后加了一个getch(),此时,程序运行结果就符合要求了,看起来也比较清晰了。(2)使用getch()语句必须使用头文件#include<conio.h>刚开始因为没有使用这个头文件,所以会出现getch()这个无法辨别图4.1 错误报告1(3)在对字符型的数据进行赋值的时候,要用strcpy,而不能直接用pcar.num=pnum这样的赋值形式,这样子会产生如下的错误:图4.2 错误报告2正确的形式应该是这样的:strcpy(pcar.num,pnum);(4)同时,对字符型的数据进行比较的时候,也需要用strcmp。不过我认为用while(pnum="#")的形式也是可以的,我试验了一下,结果是可以的,所以不用strcmp这个东西也是可以的。注意呀,那个#符号必须加” ”号,不加的话就有四个错误了:图4.3 错误报告3(5)把通道看成是一个队列,但在通道中的车辆数目总是少一辆,刚开始总是感觉疑问,明明就是设定maxsize为20的,通道内的车辆为什么就只有19辆呢,后来,我突然想到原来队列的Q->front是不存放数据的,终于找到了错误的地方了,所以我在定义数列的地方,把原来的Q->n=maxsize改成了Q->n=maxsize+1;结果是对的了。(6)采用清屏的功能:system("cls"); /*运行前清屏*/刚开始不知道有这个功能,在屏幕执行的时候,总感觉屏幕非常的复杂杂乱,感觉不是很舒服,后来问了同学一下,发现了这个功能,就马上加上了这个功能,屏幕就看起来比较清晰和舒服了。(7)刚开始的时候,程序的健壮性不是很强,在主菜单函数中选择case多少时,如果不是规定的数字范围内的时候,它就会直接说按任意键返回。所以为了增强程序的健壮性,在最后加上default:ShowCar()这句话,在一开始运行程序的时候,由于此时停车场内信息没有输入,认为是空的,而当用户选择了退出车站的时候,程序将给出出错的信息“这停车场是空的”。(8)在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难,所以尽量少用goto语句。因为在网上看到了这段话,所以我就把那个车站模拟系统相关功能设定这个模块改成用do-while语句的形式,其实我觉得do-while语句还是比较容易能实现的,而且程序也比较容易去检测出错误。(9)对于通道的假定,原本是没有采用循环队列的,只是采用了比较基本简单的顺序存储队列,后来发现,这样子会发生“假溢出”的现象,所谓的“假溢出” 顾名思义就是队列出现了“假满”的情况,而不是“真满”,比如 设队头指针为front,队尾指针是rear,约定front指向队头元素的前一位置,rear指向队尾元素。当front等于-1时队空,rear等于m-1时为队满。由于队列的性质(“删除”在队头而“插入”在队尾),所以当队尾指针rear等于m-1时,若front不等于-1,则队列中仍有空闲单元,所以队列并不是真满。这时若再有入队操作,会造成假“溢出”。4.2 结果截图4.2.1:case1:车辆成批入站待主界面显示出来后,按1进入输入车辆的界面,然后输入你想输入的车辆信息,然后以“# #”号结束;在此之前,你还可以先设定车站和通道的容量;如下图:1:先修改停车场与通道的容量,都改成2;图4.4车辆 图4.5车辆成批入站结果截图(2)2:成批输入三辆汽车的信息,因为停车场内只能停两辆汽车,所以第三辆车要停放在通道上等停,一旦停车场内有汽车开走,通道上的车辆即可进入;图4.6车辆成批入站结果截图(3)3:待返回主界面后,按4,即会显示出车站内与通道上的车辆信息;图4.7车辆成批入站结果截图(4)4.2.2:case3:车辆出站1:输入想要出站的汽车牌号,然后汽车出站,接着通道上的第一辆汽车进入停车场;图4.8车辆出结果截图(1)2:通道内的车已经进入停车场,如下图:图4.9车辆出结果截图(2)5 心得体会1. 程序的设计思想的精巧的重要性,是不管怎么说都不为过的,好的程序可以让大家很快的明白你的思想,而且很方便的来实现它。还有不管这程序有多长,只要你解释了之后,别人很快就能明白,看程序也比较简单了。2.数据结构是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,要善于捕获资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。3.学会“递进”的思想:程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。6 附录6.1源程序代码#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define maxsize 20typedef struct carchar num10;char name10;Car;typedef struct Car datamaxsize; int n;/栈容量设定 int top;Stack;/顺序栈typedef struct Car datamaxsize; int n;/队列容量设定 int num;/当前通道上的车辆数 int front,rear;Queue;/循环队列Stack *SCar;/全局变量:车站内车辆信息Queue *QCar;/全局变量:通道内车辆信息void carmenu(void);void InitStack(Stack *S)S->top=-1;S->n=maxsize;void InitQueue(Queue *Q)Q->front=Q->rear=Q->num=0;Q->n=maxsize+1;int Push(Stack *S,Car x)/入栈操作if(S->top=S->n-1)return(-1);S->top+;S->dataS->top=x;return(0);int Pop(Stack *S,Car *px)/出栈操作if(S->top=-1)return(-1);S->top-;*px=S->dataS->top+1;return(0);int InsertQueue(Queue *Q,Car x)/入队if(Q->rear+1)%Q->n)=Q->front)return(-1);Q->num+;Q->dataQ->rear=x;Q->rear=(Q->rear+1)%Q->n;return(0);int DeleteQueue(Queue *Q,Car *x)/出队if(Q->front=Q->rear)return(-1);Q->num-;*x=Q->dataQ->front;Q->front=(Q->front+1)%Q->n;return(0);void ShowCar(void)/车站内信息显示int i,front,rear;if(SCar->top=-1)printf("nn这停车场是空的!n");getch();carmenu();printf("nn目前停车场的车有:n-车牌号-车主姓名n");for(i=0;i<SCar->top+1;i+)printf(" %-13s",SCar->datai.num);printf("%18sn",SCar->datai.name);if(QCar->rear!=QCar->front)/通道内有车辆front=QCar->front;rear=QCar->rear;printf("n通道信息:n-车牌号-车主姓名n");while(front!=rear)printf(" %-13s",QCar->datafront.num);printf("%18sn",QCar->datafront.name);front=(front+1)%QCar->n;getch();carmenu();void InitCarpark(void)/车辆成批入站char num8,*pnum,name10,*pname;Car pcar;pnum=num;pname=name;printf("nn请输入车子的信息(包括车牌号和车主姓名(两者之间用空格隔开)(以# #这个符号结束):n");scanf("%s%s",pnum,pname);while(strcmp(pnum,"#")!=0)strcpy(pcar.num,pnum);strcpy(pcar.name,pname);if(Push(SCar,pcar)=-1) printf("n车站已满!车辆已经入通道!n");if(InsertQueue(QCar,pcar)=-1)printf("n通道已满,进入通道失败!n");scanf("%s%s",pnum,pname);printf("这批汽车已经成功进入停车场n");getch();carmenu();void InsertCar(void)/单个车辆入站char num10,*pnum,name10,*pname;Car pcar;pnum=num;pname=name;printf("nn请输入车子的信息(包括车牌号和车主姓名(两者之间用空格隔开):n");scanf("%s%s",pnum,pname);strcpy(pcar.num,pnum);strcpy(pcar.name,pname);if(Push(SCar,pcar)=-1)printf("n车站已满!车辆已经入通道!n");if(InsertQueue(QCar,pcar)=-1)printf("n通道已满,进入通道失败!n");getch();carmenu();void ExitCar(void)/车辆出站 int i,position,flag=0;Car x;Stack *S;char num10,*pnum;pnum=num;if(SCar->top=-1)/车站不能为空printf("nn这停车场是空的!n");getch();carmenu();printf("nn请输入车子的车牌号:n");/输入出站车辆的车牌号scanf("%s",pnum);for(i=0;i<SCar->top+1;i+)if(strcmp(SCar->datai.num,pnum)=0)position=i;flag=1;if(!flag)printf("对不起,没有找到该车的信息!");getch();carmenu();if(S=(Stack *)malloc(sizeof(Stack)=NULL)printf("Failed!");exit(1);InitStack(S);for(i=SCar->top;i>position;i-)Pop(SCar,&x);/车场出车Push(S,x);/通道入车Pop(SCar,&x);/所指定的车辆出站while(S->top!=-1)Pop(S,&x);/通道出车Push(SCar,x);/车场入车if(QCar->rear!=QCar->front)/通道内有车辆DeleteQueue(QCar,&x);Push(SCar,x);printf("n退车成功!n");getch();carmenu();void SetCar(void)/车站模拟系统相关功能设定int b; printf("选择1:修改停车场的容量n"); printf("选择2:修改通道的容量n"); printf("请你选择操作(1-2):n"); scanf("%d",&b); /*读入选择*/ if(b=1)int n,flag=1;printf("nn目前停车场最大的容纳量是:%dn",SCar->n);printf("n请输入您想要的停车场的最大容纳量:(<=%d)n",maxsize);doprintf("请输入数值:");scanf("%d",&n);if(n>maxsize)printf("输入错误,请重新输入n");if(n<SCar->top+1)flag=0;n=SCar->n;break;while(n<0|n>maxsize);SCar->n=n;if(flag!=0) printf("n修改成功!n");elseprintf("n错误!车站车辆已经超过此数!如要再输,请再按功能5n");getch();carmenu();if(b=2)int n,flag=1;printf("nn目前通道最大的容纳量是:%dn",QCar->n-1);printf("n请输入您想要的通道的最大容纳量:(<=%d)n",maxsize);doprintf("请输入数值:");scanf("%d",&n);if(n>maxsize)printf("输入错误,请重新输入n");if(n<QCar->rear+1)flag=0;n=QCar->n;break;while(n<0|n>maxsize);QCar->n=n+1;if(flag!=0) printf("n修改成功!n");elseprintf("n错误!车站车辆已经超过此数!如要再输,请再按功能5n");getch();carmenu();void carmenu(void)/车站管理系统主菜单char c; system("cls"); /*运行前清屏*/ printf("*n"); printf("-<<欢迎您使用停车场管理系统-n"); printf("*nn");printf(" * 【1】车辆成批入站 * n"); printf(" * 【2】单个车辆入站 * n"); printf(" * 【3】车辆出站 * n"); printf(" * 【4】车站内信息实时显示 * n"); printf(" * 【5】相关功能设定 * n"); printf(" * 【0】退出本系统 * n"); printf("*n"); printf("请你选择操作(0-5):n"); c=getch(); /*读入选择*/ switch(c-0)case 0:exit(0);break;case 1:InitCarpark();break;case 2:InsertCar();break;case 3:ExitCar();break;case 4:ShowCar();break;case 5:SetCar();break;default:ShowCar(); int main(void)if(SCar=(Stack *)malloc(sizeof(Stack)=NULL) printf("Failed!"); exit(1);if(QCar=(Queue *)malloc(sizeof(Queue)=NULL) printf("Failed!"); exit(1);InitStack(SCar);InitQueue(QCar);carmenu();exit(0);.

注意事项

本文(停车场管理系统课程设计)为本站会员(1777****777)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!