还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据结构》课程设计停车场管理系统班级:指导教师:****|cJ\・4t JK.1^KJX少姓名:***学宜***********小组成员:51c*{c*Jc51c*jc5|c完成日期3月6日成绩:__________________请选怪1!2!3车场1•.便道
2.返回31车场位置到达时间车牌号128264请选择1:2!3车场1•便道2•.返回3
⑤车辆信息(便道)D:\范雯姣〜l\myfi le.exe位置到达时间车牌号.便道
2.返3回等待车辆的号码为2请选择1S2S3工.车场.便道
2.返3回
五、用户手册这个程序用来实现对停车场内车辆的管理,整个操作界面为中文,更加符合人性化的标准,使得用户使用方便,而且每一个操作都有提示,使得初次接触该程序的用户也能很快适应程序的操作这个程序操作简单,对于车牌号,只需输入车牌号上的数字就行,而且对于进出停车场的时间,也简化了操作,只需输入当时的时刻就行,没有具体到小时和分钟,但可能这也是该程序不足之处所在而且该程序也给用户提供了选择的机会,当点击运行该程序后,如果想退出程序,能够输入n或N退出该运行程序至于使用过程中的更具体的问题,能够参照该报告书中调试分析那一项的屏幕截图,整个程序的运行界面大致就如上述屏幕截图的内容
六、附录
1、源程序代码#include stdio.h#include stdlib.h#include string.h#include conio.h intMAX;/*定义一个全局变量用来存储车库最大容量*/float price;/*每车每小时的费用*/typedef structtimeint hour;int min;}Time;/*时间结点*/typedef structnodechar num
[10];Time reach;Time leave;}Car;/*车辆信息结点*/typedef structNODECar*stack
[100];int top;}SqStack;/*亭车站*/typedef struct carCar*data;structcar*next;}QNode;typedef structNodeQNode*head;QNode*rear;}LinkQueue;/*通道*/void InitStackSqStack*;/*初始化栈*/int InitQueueLinkQueue*;/*初始化便道*/int arriveSqStack*,LinkQueue*;/*车辆至U达*/void leaveSqStack*,SqStack*,LinkQueue*;/*车辆离开*/void infoSqStack,LinkQueue;/*显示停车场信息*/void PRINTCar*p,int room;void InitStackSqStack*s/*初始化栈*/int i;s-top=0;fori=0;i=MAX;i++s-stack[s-top]=NULL;int InitQueueLinkQueue*Q/*初始化便道*/Q-head=QNode*mallocsizeofQNode;ifQ-head!=NULLQ-head-next=NULL;Q-rear=Q-head;returnl;else return-l;void mainSqStackIn,Out;LinkQueue Wait;int ch;InitStackIn;/*初始化停车站*/InitStackOut;/*初始化让路的临时栈*/InitQueueWait;/*初始化通道*/whilelprintf---------------------欢迎使用停车场管理系统;--------------------\nprintf”\t本系统由5011工作室开发,作者:邓春国、段庆龙、梁伟明、丁磊\n\n;printf请输入停车场的容量;scanf%d,MAX;printf”请输入停车场的收费标准阮/小时:;scanf%f,price;%%printf您输入的停车场容量为d位,费用为
2.1f元/小时\n,MAX,price;⑷printf\nl车辆到达\n2车辆离开\n3停车场信息3退出系统\n;请选择\n”whilelch=getch;switchchcase49:arriveIn,Wait;break;/*车辆到达*/case50:leaveIn,Out,Wait;break;/*车辆离开*/case51:infoIn,Wait;break;/*输出车站信息*/case52:{printf谢谢使用!;exitO;}/*退出主程序*/default:printf\n按键无效,请重新按键选择!;}/*49-52分别表示这四个按键的键值*/systemCLS;printfn--------------------欢迎使用停车场管理系统;--------------------\n”printf本系统由CG工作室开发,作者:邓春国、段庆龙、梁伟明、丁磊\n\n\n;%%printf您输入的停车场容量为d位,费用为
2.If元/小时\nn,MAX,price;printf”\n⑴车辆到达\n2车辆离开\n3停车场信息\n4退出系;统\n请选择\n”int arriveSqStack*In,LinkQueue*W/*车辆到达*/Car*p;QNode*t;p=Car*mallocsizeofCar;flushall;%printf”\n停车场还有d停车位若停车位为0,车可先进入便道等待”,MAX-In-top;;printf”\n请输入车牌号码例:湘D0734:getsp-num;ifIn-topMAX/*停车场未满,车进车场*/In-top++;%printf\n停车的位置:d号停车位\In-top;printf”\ir请输入车到达的时间格式”**:**”:;scanfn%d:%dn,p-reach.hour,p-reach.min;In-stack[In-top]=p;printf请按任意键返回getch;retuml;else/*停车场已满,车进便道*/printf”\n停车位已满,该车须在便道等待!”;t=QNode*mallocsizeofQNode;t-data=p;t-next=NULL;W-rear-next=t;W-rear=t;printf请按任意键返回getch;retuml;void leaveSqStack*In,SqStack*Out,LinkQueue*W{/*车辆离开*/int room;CarQNode*q;/*判断车场内是否有车*/ifln-top0/*有车*/whilel/*输入离开车辆的信息*/printf\n请输入车在停车场的位置1-%d:,In-top;scanfn%dn,room;ifroom=1room=In-top break;whileIn-toproom/*车辆离开*/Out-top++;Out-stack[Out-top]=In-stack[In-top];In-stack[In-top]=NULL;In-top;p=In-stack[In-top];In-stack[In-top]=NULL;In-top-;whileOut-top=1In-top++;In-stack[In-top]=Out-stack[Out-top];Out-stack[Out-top]=NULL;Out-top;PRINTp room;9/*判断通道上是否有车及车站是否已满*/ifW-head!=W-rearIn,topMAX/*便道的车辆进入停车场*/q=W-head-next;t=q-data;In-top++;%printf\n便道的s号车进入车场第%1号停车位H,t-numjn-top;printf”\n请输入现在的时间格式”**:**”:”;scanfn%d:%d,\t-reach.hour,t-reach.min;W-head-next=q-next;-设计目的
1、经过课程设计,加深对《数据结构》这一课程所学内容的进一步理解与巩固ifq==W-rear W-rear=W-head;In-stack[In-top]=t;freeq;else printf”\n停车场里没有车\n;/*没车*/printf请按任意键返回”;getch;void infolSqStack*S/*列表输出车场信息*/int i;ifS-top0/*判断停车场内是否有车*/;printf”\n车场:;printf\n位置到达时间车牌号\n”fori=l;i=S-top;i++printf%d\t,i;printfn%d:%dn,S-stack[i]-reach.hour,S-stack[i]-reach.min;putsS-stack[i]-num;else printf”\n停车场里没有车void info2LinkQueue*W/*显示便道信息*/QNode*p;p=W-head-next;ifW-head!=W-rear/*判断通道上是否有车*/;printf”\n便道中车辆的号码为:\n”whilep!=NULLputsp-data-num;p=p-next;;else printf\n便道里没有车\nprintf请按任意键返回”;getch;void infoSqStackS,LinkQueue WinfolS;/*显示停车场信息*/info2W;/*显示停便道信息*/void PRINTCar*p,int room/*输出停车站车的信息*/int A1,A2,B1,B2;printf”\n请输入车离开的时间格式scanf%d:%d,p-leave.hour,p-leave.min;printf”\n车牌号码:;putsp-num;printf\n车到达的时间是:%d:%d,p-reach.hour,p-reach.min;printf车离开的时间是:%d:%d,p-leave.hour,p-leave.min;A1=p-reach.hour;A2=p-reach.min;B1=p-leave.hour;B2=p-leave.min;%printf”\n费用为:
2.1f元”,B1-A1+B2-A2/
60.0*price;freep;
2、设计体会经过这一周的课程设计,加深了我对《数据结构》这门课程所学内容的进一步的理解与掌握;同时,经过对停车场管理系统的开发,使得我将计算机课程所学知识与实际问题很好地相联接在了一起在这次课程设计中,不但培养了我开发一个中小型程序的能力,而且也培养了我的团队合作能力在这次对停车场管理系统的开发过程中,我们小组成员互相合作,互相帮助,其中有程序功能成功实现时的欣喜,也有遇到问题、解决问题时的执着以及迷茫在这次课程设计中,使得我很好地了解了在开发程序过程中合作的重要性在这周课程设计中,我们小组所开发的停车场管理系统,基本上能够完成每一项功能汽车进入停车场的信息、离开停车场的信息以及通道上的信息都能够在程序上一一实现可是,该程序也有不足的地方主要表现在车辆的车牌号上,现实中的车牌号是一串字符,可是,在这个程序中,为了简便起见,我们就车牌号定义为了整型,这个与现实是有些不符的还有一个能够改进的地方就是记录车辆进入停车场以及离开停车场的时间,应该精确到小时以及分钟的,可是在程序中,为了简便起见,我们只是设置成了一个时刻,因此,在这方面还是有待改进的改进的程序中,还应该增加时间的判断功能,即停车场内有可能有车辆停放的时间超过一天
2、经过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构
3、经过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序
4、经过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调经过
5、经过课程设计,开发一个中小型系统,掌握系统研发全过程
6、通话课程设计,培养分析问题、解决实际问题的能力
二、课程设计内容
①问题描述设有一个能够停放n辆汽车的狭长停车场,它只有一个大门能够供车辆进出车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排以便道上的第一辆车就进入停车场停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费如果停留在便道上的车未进停车场时,允许其离去,不收停车费,而且依然保持在便道上等待的车辆的次序编制一程序模拟该停车场的管理
②基本要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场应交纳的费用和它在停车场内停留的时间
③实现提示汽车的模拟输入信息格式能够是(到达/离去,汽车牌照号码,到(,)达/离去的时刻)例如,01,5表示1号牌照车在5这个时刻到达,)而(D,5,20表示5号牌照车在20这个时刻离去整个程序能够在输,)入信息为(E,0,0时结束本题可用栈和队列来实现
三、概要设计
1、设计思想此停车场管理系统是在一个狭长的通道上的,而且只有一个大门能够供车辆进出,而且要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些辆再依原来的次序进场的功能,就能够设计两个堆栈,其中一个堆栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开时,原来停车场内为其让路的车辆至于当停车场已满时,需要停放车辆的通道能够用一个链队列来实现当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变通道上车辆结点的连接方式就能够了,使通道上第一辆车进入停车场这个堆栈,而且使通道上原来的第二辆车成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来的第二辆车上就能够了
2、实现方法对于此停车场管理系统的实现,就是用两个堆栈来分别模拟停车场以及停车场内车辆为其它车辆让路时退出停车的临时停放地点至于通道上车辆的停放则用一个链队列来实现,此时,通道上车辆的离开或者进入停车场只需改变此链队列上的结点而已对于要对停车场内的车辆根据其停放时间收取相应的停车费用,能够记录下车辆进入以及离开停车场的时间,再用时间差乘以相应的单价而且打印出最后的费用就能够实现了
3、主要模块
①此停车场管理系统,主要分为以下若干模块首先定义用来模拟停车场的堆栈以及用来模拟通道的链队列为全局变量,然后编写主函数,在此主国数中实现对其它各个模块的调用在主函数中首先调用option函数,出现欢迎用户使用的主界面,然后提示用户进入此停车场管理系统后,再出现一个供用户选择的界面,在用户的选择过程中,程序又分别调用车辆的到达、车辆的离开、停车场内停放车辆的信息以及退出程序这四个画数模块其中,在车辆的离开那个模块函数中又调用了打印离开车辆信息的函数,在停车场内停放车辆信息的那个模块函数中,又分别调用了显示停车场上车辆信息的函数以及显示便道上车辆信息的园数最后,从调鼐的这四个函数中回到主函数结束整个程序的运行
②在以上各个模块中,出现的调用的国数为void InitStackSeqStackCar*s;int InitQueueLinkQueueCar*Q;option;int ArrivalSeqStackCarEnter,LinkQueueCar*W;void LeaveSeqStackCar*Enter,SeqStackCar*Temp,LinkQueueCar*W;void PRINTCarNode*p;void ListSeqStackCarS,LinkQueueCar W;void ListlSeqStackCar*S;void List2LinkQueueCar*W;
4、模块间关系
四、调试分析1调试过程中的主要问题由于此停车场管理系统是分模块设计的,而且在程序的实现过程中又使用了清屏函数,因此,运行时用户选择任务而且执行完任务后,又会回到供用户选择功能的主界面,因此整个程序从整体上来讲结构清晰,使用方便本程序的调试运行,总体上情况良好,但中间也出现了一些小问题其中比较有代表性的主要问题有当停车场已经达到最大容量,但仍有车辆进入停车场的时候,运行界面上没有出现或者说出现了但又跳掉了“停车场已满,该车辆需在便道上等待!”的提示信息我们小组成员经过重复商量讨论,而且在查阅了多种资料后,在那一个printf语句后加了一个getch,此时,程序运行结果就符合要求了对于在WIN-TC下不能显示中文的问题,我们经过在第一个printf语句前加了一句systemgraftabl936;就很好地解决了这个问题,使得整个程序的运行都出现了中文提示,而且是在中文的环境下操作,设计更加合理,更加人性化,更加方面用户使用,同时也提高了用户的操作效率2测试结果的分析与讨论
①欢迎界面HS D:\范雯姣~l\myfile.exe1口!回————J♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦A停车场管理系统小组成员:范霎姣李月敏丁飞飞班级:信息0701车辆到达一车辆离开一车辆信息一退出程序一i-
12.
23.
34.4是否进入该系统(y/n)
②车辆到达l\myfile.exe车辆到达请选怪
1.1车辆离开请选怪2-2车辆信息请选择
3.3退出程序请选怪现在请选怪以上信息=请输入到达车辆车牌
4.41号该车辆在停车场的位置早请输入该车辆到达的时间812
③车辆离开D:\范^l\myfile.exe车辆离开请选择车辆信息2-23・请选择3退出程序请选择现在请选择
4.4以上信息=停车场里停放的车2辆总数请输入要离开车辆的2位置:请输入离开时间离开26车辆的车牌号离开车辆到达6时间离开车辆离开时间停46车场管理察用6便道的号车进入车场第位42置.请输入现在的时间6
④车辆信息(车场)。
个人认证
优秀文档
获得点赞 0