停车场模拟管理程序设计报告讲解_第1页
停车场模拟管理程序设计报告讲解_第2页
停车场模拟管理程序设计报告讲解_第3页
停车场模拟管理程序设计报告讲解_第4页
停车场模拟管理程序设计报告讲解_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、停车场模拟管理程序的设计与实现一、简介1. 设计目的:理解线性表的逻辑结构和存储结构,进一步提高 使用理论知识指导解决实际问题的能力。2. 问题的描述:设停车场只有一个可停放几辆汽车的狭长通道,只 有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依 次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道 上等候,一旦停车场内有车辆开走,则排在便道上的第一辆汽车即可 进入;当停车场内某辆汽车要开走时,由于停车场是狭长的通道,在 它之后开入的车辆必须先推出车场为他让路, 待车辆开出大门,为他 让路的车辆再按原次序进入车场。试设计这样一个停车场模拟管理程 序。二、数据结构的设计:(1

2、) 为了便于区分每辆汽车并了解每辆车当前所处的位置,需要 记录汽车的牌照号码和汽车当前的状态。(2) 为了便于停车场的管理,要为每个车位分配一个固定的编号。(3) 当停车场的停车位上都已停满了汽车, 又有新的汽车到来时 要把它调度到便道上,便道上的车辆要按照进入便道的先后顺序顺次 序放在便道上,为便道上的每个位置分配一个固定的编号。 当有车从停车位上离开后,便道上的第一辆汽车就立即进入停车位上的某个车 位。(4)当某辆车离开停车场的时候,比他后进停车位的车要为他让 路,而且当他开走之后让路的车还要按照原来的停放次序再次进入停 车位的某个车位上,为完成这项功能,定义一个结构体。三、功能(函数)设

3、计:本程序从总体上分为四个功能模块,分别为:(1)程序功能介绍和操作提示模块(2)汽车进入停车位的管理模块(3)汽车离开停车位的管理模块(4)查看停车场状态的查询模块四、界面设计:本程序界面本着易于操作简单整洁而不失美观的理念,采用数字 对应功能选项,结合详细的操作提示,使得操作方便快捷,界面清晰 明朗。R青按任意铸继续入对应的数字选择您需要的功能:1_丰辆到达 久至無离开一3 查询信息* 越退岀 索统*五、程序设计:1车辆进入停车场模块:执行语句实现 进入便道执行语句实现 进入车站-Arrive 函数:有车进入停车厂;-Enter-toptoproom,车辆出站。-W-head!=W-rea

4、r)&Enter-toptop0:判断车站内有没有车,如果 Y,用for循环打印出站内 的车位和车牌号的信息;如果 N,则输入车场没有车,返回 List函 数。-List2函数:查询便道信息。 w-head!二w-rear :判断便道内有没有车,如果 Y,用while循环打印出便道上车的信息;如果N,则输出便道内没有车,返回List函数。六、运行与测试:1、测试的数据及其结果:(1) 前五辆车到达进入停车位:请输入车牌号例= DS888:CF081车辆停入车场第丄隹置-溝输入车牌号 例:DS888?::F003车辆停入车场第d位置.请输入车牌号(例:DS88S =CF002车辆停入车场第2位置

5、.1请输入车牌号 例= DS8885:CF004车辆停入车场笫4位置.请输入车牌号 例= DS888 =CF005车辆停入车场第5位置.(2) 后来的两辆车在便道等候:请输入车牌号例= DS888:CF90Sk不起,车场己满,该卒须在便道尊待? 库进入丄号便道请输入车牌号 :CF007满该车须在便道等待!(3) 牌照为CF003的车离开,CF004, CF005需要让道,CF006进入5号车位:牌号为CF005的车需要让道牌号为CF胸4的车需要让道离开车辆的车牌号为:CF003便道的CFA加号车逬入车场第5位置.(4) 查询车场和便道里的信息1辔1车牌号1CF0012CF0023CF0044C

6、F0055CF0062等持车辆的号码为:CF007(5) 退出程序:谢谢您的便用,再见IPress an_y key to continue2、运行与测试期间遇到的问题及其解决办法问题1:在车辆离开时不能显示车辆让道的信息;解决办法:在离开函数中一个while循环中增加一个printf语句,通过循环可以显示全部需要让道的车辆。问题2:在进行进场出场信息的输入时,只能进行一次;解决办法:设置一个标志量flag和while循环,在每一次操作后返回到操作步骤问题3:运行显示程序简介后,继续输入时没有清屏操作,导致运行结果不方便观察:解决办法:增加getch(); system(cls);语句,实现按

7、任意键 继续,并清屏。七、结论:本停车场管理系统,可以进行车辆进入停车场和退出停车场以及 停车厂内部车位和便道上的停车信息的显示三个步骤的操作。在车辆进入停车场进入模块中,如果进入停车场的车辆大于 5,即车位里停 放的车辆已满,后面的车自动进入便道等候;在车辆离开停车场模块 中,在查找车辆过程中如果没有对应车辆能够显示出“对不起,输入 有误,请重新输入! ”,并有辅助栈保证从车位上出来的车不会改变顺 序;车位出现空位时,便道上的车能自动进入车位,同时,便道上的 车也可以直接离开停车场;信息查询模块,能够显示停车场车位和便 道上等待车的信息。并有错误操作的信息提示。同样此程序存在一些不足之处。在

8、显示模块,没有显示出开出停 车场车辆的信息,在进一步修改补充时,可以添加车辆开出停车场的 显示模块;车辆的信息过于简单,只有一个车牌,可以添加更加详细 的车辆信息以及添加收费操作等功能。八、设计后的思考:此次课程设计,付出了很多的时间和经历,编程过程中,我看 到了自己许多不足,例如程序编写的有点杂乱,造成编译时错误不好 找到,没有足够的耐心,有点急功近利,修改编译错误时不能做到系 统的分析,造成程序越改越乱,影响了情绪,丢掉了信心。同时,我 也深切感受到了程序员的艰辛,明白了作为一个程序员应该尽可能的 为用户考虑,缜密的思维,让程序不断地人性化,可操作性强,界面 尽可能的友好,把完美作为自己的

9、目标。对于程序本身,我看到了良 好的程序编写风格对于程序员的重要性,函数之间调用的便利与简 洁,以及循环套用的魅力之所在。总之,不管简单还是复杂的程序设 计,都要求扎实的基础知识,因为各种程序都是由简单的一块块的函 数结构组成的,并加强实践,从程序的编写中进一步加强对书本知识 的掌握。而且,需要耐心,做程序的编写时比较枯燥的,会出现许多 错误,需要我们细心并耐心的进行修改。回顾编程的过程,我也学到了许多程序之外的东西, 编程的过程对一 个人的耐心和毅力是一种极大地考验,不停地编译,不停地改错,不 停地被打击,信心被一点点的消磨,如果放弃,将前功尽弃。所以我 选择了停一停稍作休息然后坚持下去,

10、终于在完成的那一瞬间,内心 充满了自豪和成就感。这次任务完成的过程给我上了生动而难忘的一 课,面对一次次的挫折与打击,我会选择咬牙坚持;为了远方的目标, 我会不懈的努力,一点点的去接近。参考文献:1 谭浩强,C语言设计(第三版).北京:清华大学出版社,20052 严蔚敏 吴伟民,数据结构(C语言版)北京:清华大学出版社,2007附:源代碼#in clude#in elude vconi o.h#in clude#i ncludevstri ng.h#define MAX 5/* 车库容量 */typedef struct nodechar num10;CarNode;/*车辆信息结点*/typ

11、edef struct NODECarNode *stackMAX+1;int top;SeqStackCar; /* 模拟车站 */typedef struct carCarNode *data;struct car *n ext;QueueNode;typedef struct NodeQueueNode *head;QueueNode *rear;LinkQueueCar; /*模拟通道 */初始化栈*/void In itStack(SeqStackCar *); /*int InitQueue(LinkQueueCar *); /*初始化便道 */int Arrival(SeqSta

12、ckCar *,LinkQueueCar *); /*车辆到达 */void Leave(SeqStackCar *,SeqStackCar *,L in kQueueCar *); /* 车辆离开*/void List(SeqStackCar,LinkQueueCar); /*显示存车信息 */in t j=0;void mai n()SeqStackCar En ter,Temp;Lin kQueueCar Wait;int ch;i nt j=0;printf(|*|n);In itStack(&En ter); /*初始化车站*/In itStack(&Temp); /*初始化让路的临

13、时栈*/Ini tQueue(&Wait); /*初始化通道*/printf(|*|n);printf (|*|、n)printf (|*欢迎进入停车场管理系统*|n);printf (|*|、n)printf(|*|n);printf(|*|n);prin tf(|注:本程序操作容易,请注意跟随操作提示|n);n);printf(printf(”请按任意键继续);getch();system(cls);while(1)printf(”请输入对应的数字选择您需要的功能:n);prin tf(n*n);printf(*1.车辆到达*n);printf(*2.车辆离开*n);printf(*3.查

14、询信息*n);printf(*4.退出系统*n);n);谢谢您的使用,再见! n);printf( while(1)sca nf(%d, &ch);if(ch=4) printf(”elseif(ch=1 &chtop=0;for(i=0;iv二MAX;i+)s-stacks-top二NULL;int InitQueue(LinkQueueCar *Q) /*初始化便道 */Q-head=(QueueNode *)malloc(sizeof(QueueNode); if(Q-head!二NULL)Q-head- next二NULL;Q-rear=Q-head;return(1);else re

15、turn(-1);void PRINT(CarNode *p) /*打印出站车的信息*/printf(n 离开车辆的车牌号为:);puts(p- nu m);车辆到达int Arrival(SeqStackCar *En ter,Li nkQueueCar *W) /*/ CarNode *p;QueueNode *t;p=(CarNode *)malloc(sizeof(CarNode);flushall();printf(n请输入车牌号(例:DS888):n);gets(p- nu m);if(Enter-toptop+;printf(n车辆停入车场第 d位置.nn”,Enter-top)

16、;En ter-stackE nter-top=p;return(1);else /*车场已满,车进便道*/!n); pri ntf(n对不起,车场已满,该车须在便道等待t=(QueueNode *)malloc(sizeof(QueueNode); j+;t-data=p;t- next二NULL;W-rear- n ext=t;W-rear=t;printf(”车进入 d号便道 nn,j);return(1);voidLeave(SeqStackCar*En ter,SeqStackCar*Temp,LinkQueueCar *W)/* 车辆离开 */int i, room;CarNode

17、 *p,*t;QueueNode *q;/*判断车场内是否有车*/if(En ter-top0) /*有车 */ while(1) /*输入离开车辆的信息*/printf(n请输入车在车场的位置 /1-%d/ :,Enter-top);sca nf(%d,&room);if(room=1 &roo mtop) break;while(Enter-toproom) /*车辆离开 */prin tf(n牌号 为 %s 的 车 需要 让道n,E nter-stackE nter-top);Temp-top+;Temp-stackTemp-top=E nter-stackE nter-top;En t

18、er-stackE nter-top二NULL;En ter-top-;p=E nter-stackE nter-top;En ter-stackE nter-top二NULL;En ter-top-;while(Temp-top=1)En ter-top+;En ter-stackE nter-top二Temp-stackTemp-top;Temp-stackTemp-top二NULL;Temp-top-;PRINT(p);/*判断通道上是否有车及车站是否已满*/if(W-head!=W-rear )&En ter-tophead-n ext;t=q-data;En ter-top+;prin tf(n 便道的 %s号车进入车场第 %d位置.n,t- nu m,E nter-top);W-head-n ext=q-n ext;if(q=W-rear) W-rear=W-head;En ter-stackE nter-top=t;free(q);else prin tf(n对不起,车场里没有车); /* 没车*/ void List1(SeqStackCar *S) /*列表显示车场信息*/int i;if(S-top0) /*判断车站内是否有

温馨提示

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

评论

0/150

提交评论