c++停车场管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据结构课程实践报告项目名称:停车场管理系统所在班级:14级计算机科学与技术1班小组成员:尤攀陆、董金明、付增现、王耀权、曲涛任课教师:刘国英起止时间:2015.11.20-2015.12.30安阳师范学院·数据结构课程实践·项目基本信息项目名称停车管理系统项目简介设停车场是一个可以停放n辆汽车的南北方向的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和它在停车场内停留的时间。小组成员尤攀陆董金明付增现王耀权曲涛任务分工尤攀陆:停车模块董金明:车辆离开模块付增现:堆栈与队列的定义及基本操作王耀权:主函数模块曲涛:列表显示模块安阳师范学院·数据结构课程实践·课程实践评定成绩记录指导教师意见系统完成情况:优良中差报告完成情况:优良中差答辩评定成绩团队整体成绩:成员成绩尤攀陆140901002董金明140901019付增现140901022王耀权140901058曲涛140901040综合成绩一、问题描述及分析于停车场只有一个大门,当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,先进停车场的后退出,后进车场的先退出,符合栈的“后进先出,先进后出”的操作特点,因此,可以用一个栈来模拟停车场。而当停车场满后,继续来到的其它车辆只能停在便道上,根据便道停车的特点,先排队的车辆先离开便道进入停车场,符合队列的“先进先出,后进后出”的操作特点,因此,可以用一个队列来模拟便道。排在停车场中间的车辆可以提出离开停车场,并且停车场内在要离开的车辆之后到达的车辆都必须先离开停车场为它让路,然后这些车辆依原来到达停车场的次序进入停车场,因此在前面已设的一个栈和一个队列的基础上,还需要有一个地方保存为了让路离开停车场的车辆,由于先退出停车场的后进入停车场,所以很显然保存让路车辆的场地也应该用一个栈来模拟。因此,本题求解过程中需用到两个栈和一个队列。栈以顺序结构实现,队列以链表结构实现。(1)根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费。(2)当有车辆从停车场离开时,等待的车辆按顺序进入停车场停放。实现停车场的调度功能。(3)用顺序栈来表示停车场,链队表示停车场外的便道。(4)显示停车场信息和便道信息。安阳师范学院·数据结构课程实践·(5)程序执行的命令为:1车辆进入停车场2车辆离开停车场3显示停车场的信息二、功能模块及数据结构描述程序分为三个模块:车辆到达模块、车辆离开模块、车辆信息显示模块;车辆到达模块:voidArrival(SqStack&Enter,LinkQueue&W){//车辆到达ElemTypep;printf(请输入车牌号(如陕A1234):);fflush(stdin);gets(p.num);if(Enter.topMAXSIZE-1){//停车场不满printf(请输入到达时间(**:**):);scanf(%d:%d,&p.reach.hour,&p.reach.min);Push(Enter,p);//进入停车场}else{printf(该车需在便道等待!\n);EnQueue(W,p);//进入便道}}车辆离开模块:voidPrint(ElemTypep){intA1,A2,B1,B2;printf(请输入离开的时间(**:**):);scanf(%d:%d,&p.leave.hour,&p.leave.min);printf(离开车辆的车牌号为:);puts(p.num);printf(其到达时间为:%d:%d\n,p.reach.hour,p.reach.min);printf(其离开时间为:%d:%d\n,p.leave.hour,p.leave.min);A1=p.reach.hour;A2=p.reach.min;B1=p.leave.hour;B2=p.leave.min;printf(应交费用为:%2.1f元.\n,((B1-A1)*60+(B2-A2))*price);}车辆显示模块:voidList1(SqStackS){//列表显示停车场信息inti;if(S.top0){//判断停车场是否有车printf(停车场\n);printf(位置到达时间车牌号\n);for(i=1;i=S.top;i++){安阳师范学院·数据结构课程实践·printf(%-8d,i);printf(%-2d:%-9d,S.data[i].reach.hour,S.data[i].reach.min);puts(S.data[i].num);}}elseprintf(停车场内没车!\n);}停车场的管理流程如下:①当车辆要进入停车场时,检查停车场是否已满,如果未满则车辆进入停车场;如果停车场已满,则车辆进入便道等候。②当车辆要求出栈时,先让在它之后进入停车场的车辆退出停车场为它让路,再让该车退出停车场,让路的所有车辆再按其原来进入停车场的次序进入停车场。之后,再检查在便道上是否有车等候,有车则让最先等待的那辆车进入停车场。③列表1显示停车场信息,判断停车场是否有车,如果有车,就显示车辆到达的位置,到达时间及其车牌号。如果停车场内没有车,就会显示停车场没有车。列表2显示便道的信息,判断便道是否有车,如果有车,就显示车辆的号牌,否则显示便道没车。三、主要算法流程描述及部分核心算法算法流程图描述流程图按块来分析,共分成整体系统,汽车到达系统,汽车离去系统,汽车显示系统。如图1。(1)、汽车整体系统图1停车场管理系统车辆到达车辆离开车辆显示安阳师范学院·数据结构课程实践·(2)以模块为单位分析算法1、“到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停车场;满时,到便道等待。如图2。车辆到达停车场是否满结束进入停车场进入便道是否图22.“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。如图3。车辆离开停车场是否空结束车辆离开提示没有车是否否便道是否有车是车进入车场图33.“显示”模块:显示模块有两个显示选项,即:车场与便道。如图4。安阳师范学院·数据结构课程实践·列表显示判断输入值结束显示车场列表显示便道列表S2.便道S1.车场图4核心算法:时间节点typedefstructtime{inthour;intmin;}Time;车辆信息节点typedefstructnode{charnum[10];Timereach;Timeleave;}ElemType;////顺序栈的定义与基本操作typedefstruct{ElemTypedata[MAXSIZE];安阳师范学院·数据结构课程实践·inttop;}SqStack;便道队列节点:typedefstructQNode{ElemTypedata;structQNode*next;}Qnode,*QueuePtr;便道队列:typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;顺序栈的初始化voidInitStack(SqStack&s){s.top=0;}入堆栈出堆栈voidPush(SqStack&s,ElemTypee){s.top++;s.data[s.top]=e;}voidPop(SqStack&s,ElemType&e){e=s.data[s.top];s.top--;}队列初始化:voidInitQueue(LinkQueue&Q){Q.front=Q.rear=newQnode;Q.front-next=NULL;}安阳师范学院·数据结构课程实践·入队操作:voidEnQueue(LinkQueue&Q,ElemTypee){Qnode*p;p=newQnode;p-data=e;p-next=NULL;Q.rear-next=p;Q.rear=p;}出队操作:voidDeQueue(LinkQueue&Q,ElemType&e){Qnode*p;p=Q.front-next;e=p-data;Q.front-next=p-next;if(Q.rear==p)Q.rear=Q.front;deletep;}四、系统使用说明进入主界面:安阳师范学院·数据结构课程实践·车辆到达:停车场满时车在便道上排队:列表显示:安阳师范学院·数据结构课程实践·车辆离开:当输入不合法时:五、问题及解决办法1、在开始输入车牌号的字符串时总是出错,便不能再执行。解决途径:通过上网查资料知道,输入字符时习惯性的会加Enter键然后再输下一个,这样相当于Enter也作为一个字符读入,在输入前加上fflush(stdin)函数,用于清除输入的所有缓冲区即可。2、在输入停车信息时,若输入不合法,程序便会中断结束,无法继续运行下去。后来利用whihe(1)永真循环结构,但输入不合法时,重复输入循环。只有当输入合法时,才会跳出循环,执行下一步操作。3、刚开始时,程序比较混乱,函数顺序都不是很正确,不能一眼看出来某一个定义是干嘛用六、课程实践总结虽然说这次数据结构课程设计是以小组形式进行,但还是有压力的。在课堂上和课余时间我们互相帮助,互相学习。这次课程设计通过参考c语言程序设计,c++课程设计与程序设计,数据结构及网上资料完成。看到自己把所出现的错误一个个地改出来,心里真的是很欣慰。我们体会到了自己完成一次作业的成就感,更重要的是我体会到了认真对待一件事并好好完成的愉悦,这将对我以后产生很大帮助,安阳师范学院·数据结构课程实践·理论离不开实践,只有多动手,多动脑,勤动手才能取得成功,活的充实。通过这一次课程设计,我们学到的东西比以前上课学到的还要多,这让我们明白,理论永远是理论,要是没有实践,理论永远是一纸空文。我们要从实践中才能学到更多的东西。而实践又要以理论为基础,要是数据结构知识不扎实,做出的程序也是漏洞百出。所以,我们要将理论和实践结合起来,把我们在课堂上学到的东西运用在实际中,这样才能提高我们自身的能力。在接到任务时,其实心里有点恐惧,感觉自己没有能力做出来,就想着反正可以上网去搜,也就不怎么着急。后来想到如果总是依赖互联网,而不去努力,自己永远不可能有提高,于是开始自己试着写。当序终于可以运行时,那一刻感觉好自豪,感觉自己所有的努力都没有白费。更让我重新理解了那就名言“当你只有一个目标时,整个世界都会给你让路”。在学习c语言程序设计与c++课程设计与程序设计的时候,老师就一直强调,学习需要细心和耐心,特别是设计较长的程序时,而在真正设计的时候还是会粗心。程序设计的过程中,还有很多是由于粗心而导致的错误,也有很多是对以前的知识遗忘了,这就告诫自己以后做什么事都要认真仔细,不要大大咧咧。即使再有能力,不认真,不付出努力,所谓的能力也终究只能是空有一身本领。在实践中发现自我,挑战自我,最终完善自我。在此我非常要感谢的是我们的指导老师刘国英老师,感谢老师的细心认真的辅导,让我对数据结构这门课程掌握得更好,懂得更多,他教我怎么分析问题,应该要注意些什么,最后还指出我存在的问题。

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功