数据结构课程设计-停车场管理系统

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

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

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

资源描述

目录一课题分析......................................2二逻辑分析......................................22.1数据结构的描述和每个基本操作的功能说明......................22.1给出本程序包含的模块及模块之间的调用关系图..................32.3写出重要部分的伪码算法......................................3三详细设计......................................43.1数据结构的定义,及其基本操作的实现..........................43.2主函数和其他函数的实现或伪码算法.............................53.3程序的层次结构的函数调用关系图..............................73.4详细设计....................................................7四程序源代码....................................8五程序调试与测试...............................165.1主界面.....................................................165.2具体操作...................................................175.2.1进站时间与车牌号................................................................................................175.2.2车站已满,请进入临时车道...............................................................................185.2.3出站与收费...........................................................................................................195.2.4结束.......................................................................................................................195.3相关操作...................................................19六程序中遇到的问题与解决方法...................206.1写提纲.....................................................206.2在程序调试过程,遇到的相关问题.............................20七总结.........................................24八参考文献.....................................25一课题分析a)该程序主要利用栈和队列来实现车的到达及其离开功能,其中主要有对各种情况的处理,要求如下:1、要求以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的数据序列进行模拟管理2、要求处理的数据元素包括三个数据项:汽车“到达”或“离去”信息,汽车牌照号码及到达或离去的时间3、该系统完成以下功能:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是离去,则输出汽车在停车场内停留的时间和应缴纳的费用(在便道上停留的时间不收费)4、要求栈以顺序结构实现;b)程序的输入,程序功能选择,字符型,A为到达,D离开,E退出系统;车的编号是整型,输入数字即可;时间是float类型,可精确到分钟c)程序的输出,当车到达,程序输出车的编号及到达时间,若栈满则提示停到便道上;车离开时,输出车的编号及其所需费用。d)测试数据,(A,1,5),(A,2,10),(D,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),E以及a)中的要求。其中‘A’表示到达,D表示离开,E表示结束。二逻辑分析2.1数据结构的描述和每个基本操作的功能说明ADTstack{数据对象:D={ai|ai∈CharSet,i=1,2,…,n,n≥0}数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…,n}基本操作:initstack()操作结果:构造一个空栈,并返回地址。gettop(&S)初使条件:栈S已存在。操作结果:栈S不为空,输出顶元素。stop(&S,e)初始条件:栈S已存在。操作结果:要栈S中栈顶插入新的栈顶元素e。ADTqueue{数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={ai-1,ai|ai-1,ai∈D,i=2,…,n}约定其中ai端为队列的头,an端为队列的尾}initqueue(&Q)操作结果:构造一个空栈,并返回地址。gethead(&S)初使条件:栈S已存在。操作结果:栈S不为空,输出顶元素。enqueue(&S,e)初始条件:栈S已存在。操作结果:要栈S中栈顶插入新的栈顶元素e2.1给出本程序包含的模块及模块之间的调用关系图本程序包含三个模块:1)主程序模块:Voidmain(){初始化;do{接受命令;处理命令;}while(命令!=“退出”)}2)栈模块——实现栈抽象数据类型3)队列模块——实现队列抽象数据类型2.3写出重要部分的伪码算法车辆到达或者离开的伪码算法:do{输出菜单选项;如果选择A,即车辆到达,则{若栈不满,车辆进栈,停到停车场;否则,车入队,车停在便道上;}如果选择D,即车辆离开,则{如果队不空并且栈不满,被选的车辆离开,队列上的车出队入栈;被选的车辆离开;计算时间及其所需费用;}如果选择E,退出程序;}while(输入的菜单选项不正确)三详细设计3.1数据结构的定义,及其基本操作的实现typedefstructtime{inthour;intmin;}Time;typedefstruct//车信息{charlabel[10];floattime;}Car,Car2;typedefstruct//车库信息{Car*top;Car*base;intstacksize;}SqStack;typedefstruct//临时车道{Car2*top2;Car2*base2;intstacksize2;}SqStack2;typedefstructQNode//车道信息{Cardata;structQNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;3.2主函数和其他函数的实现或伪码算法voidmain(){SqStackS;SqStack2S2;InitStack(&S);InitStack2(&S2);InitQueue(&Q);//初始化while(ch==1){do{printf(\n\t\t\t\tA-车辆到达\n\t\t\t\tD-车辆离开\n\t\t\t\tE-退出\n\t\t\t\tA/D/E?\b);scanf(%c,&status);getchar();}while(status!='A'&&status!='a'&&status!='D'&&status!='d'&&status!='E'&&status!='e');if(status=='A'||status=='a')//当车到达{输入车号;输入车到达时间;if(!StackFull(S))//栈不满{车入栈;printf(\n\t\t\t\t继续请输入1\n\t\t\t\t放弃请输入0?\b);scanf(%d,&ch);getchar();}//ifelse{车入队;printf(\n\t\t\t\t继续请输入1\n\t\t\t\t放弃请输入0?\b);scanf(%d,&ch);getchar();}//else}//if当车到达elseif(status=='D'||status=='d')/*当车离开*/{do{输入车号;输入车离开时间;do{Pop(&S,&car_M);if(car_D.label!=car_M.label)Push2(&S2,car_M);elsecar_I.time=car_M.time;}while(car_D.label!=car_M.label);position_s--;while(!StackEmpty2(S2))//栈2不空{Pop2(&S2,&car_M);Push(&S,car_M);}//whilewhile(!QueueEmpty(Q)&&!StackFull(S)){if(!StackFull(S)){栈不满的话,临时车道上的车进栈}//if}//whiletime=car_D.time-car_I.time;if(time0.00){printf(\n\t\t\t\tSorry!Youinputawrongtime!\n\t\t\t\tPleasecheckandtypeagain.\n);}//ifelse{计算停车时间;计算所需费用;}//elseprintf(\n\t\t\t\tWelcometoback!Doyouwanttocontinue\n\t\t\t\t1-contine/0-quit?\b);scanf(%d,&ch);getchar();}while(!mistime);}//elseifelseexit(0);//退出程序}//第一个while}//main3.3程序的层次结构的函数调用关系图3.4详细设计根据老师的要求,在这里我主要分析程序设计中停车场管理系统的进站模块:该模块涉及多个函数,过程依次有初始化,选择进站输入A,车牌号,时间。若站满,则车进入临时车道,分别记录时间和车牌号以及临时车道上的位置,站不满时临时车道上的车进站。该程序流程图如下:StackFull()Main()initqueue()Initstack2()DeQueue()initstack()QueueEmpty()EnQueue()车进站流程图四程序源代码#includestdio.h#includestdlib.h#includestring.hMain()选择A开始进站结束进入临时车道临时车道车进入车站继续进站#defineNULL0#defineERROR0#defineOK1#defineOVERFLOW-1#defineSTACK_INIT_SIZE2//车库容量typedefstructtime{inthour;intmin;}Time;//时间结点typedefstruct//车信息{charlabel[10];floattime;}Car,Car2;typedefstruct//车库信息{Car*top;Car*base;intstacksize;}SqStack;intInitStack(SqStack*S)//栈的初始化{S-base=(Car*)malloc(STACK_INIT_SIZE*sizeof(Car));if(!(S-base))returnERROR;S-top=S-base;S-stacksize=STACK_INIT_SIZE;returnOK;}intStackEmpty(SqStackS)//栈空{if(S.top==S.base)returnOK;elsereturnERROR;}

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

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

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

×
保存成功