资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目 录一 课题分析3二 逻辑分析32。1 数据结构的描述和每个基本操作的功能说明32.1 给出本程序包含的模块及模块之间的调用关系图42。3 写出重要部分的伪码算法4三 详细设计53.1 数据结构的定义,及其基本操作的实现53.2主函数和其他函数的实现或伪码算法63.3 程序的层次结构的函数调用关系图83.4 详细设计8四 程序源代码9五 程序调试与测试175.1 主界面175。2 具体操作185.2。1进站时间与车牌号185。2。2 车站已满,请进入临时车道195.2.3 出站与收费205。2。4 结束205。3 相关操作20六 程序中遇到的问题与解决方法216.1 写提纲216.2 在程序调试过程,遇到的相关问题21七 总结25八 参考文献26一 课题分析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 数据结构的描述和每个基本操作的功能说明ADT stack数据对象:D=ai ai CharSet,i=1,2,,n,n0数据关系:R1=| ai1, ai D,i=2,n基本操作:initstack()操作结果:构造一个空栈,并返回地址.gettop(S)初使条件:栈S已存在.操作结果:栈S不为空,输出顶元素.stop(&S,e)初始条件:栈S已存在。操作结果:要栈S中栈顶插入新的栈顶元素e.ADT queue数据对象:D=ai | ai ElemSet,i=1,2,n,n0数据关系:R1=ai1,ai ai1, ai D,i=2,n约定其中ai端为队列的头,an端为队列的尾initqueue(&Q)操作结果:构造一个空栈,并返回地址。gethead(&S)初使条件:栈S已存在。操作结果:栈S不为空,输出顶元素.enqueue(&S,e)初始条件:栈S已存在。操作结果:要栈S中栈顶插入新的栈顶元素e2.1 给出本程序包含的模块及模块之间的调用关系图本程序包含三个模块:1)主程序模块:Void main()初始化;do接受命令;处理命令;while(命令!=“退出”)2)栈模块实现栈抽象数据类型3)队列模块-实现队列抽象数据类型2.3 写出重要部分的伪码算法 车辆到达或者离开的伪码算法:do 输出菜单选项; 如果选择A,即车辆到达, 则若栈不满,车辆进栈,停到停车场; 否则,车入队,车停在便道上; 如果选择D,即车辆离开,则 如果队不空并且栈不满,被选的车辆离开,队列上的车出队入栈;被选的车辆离开;计算时间及其所需费用; 如果选择E,退出程序;while(输入的菜单选项不正确)三 详细设计3.1 数据结构的定义,及其基本操作的实现typedef struct timeint hour;int min;Time;typedef struct/车信息char label10;float time;Car,Car2;typedef struct/车库信息Car *top;Car *base;int stacksize;SqStack;typedef struct/临时车道Car2 top2;Car2 *base2;int stacksize2;SqStack2;typedef struct QNode/车道信息Car data;struct QNode *next;QNode,QueuePtr;typedef structQueuePtr front;QueuePtr rear;LinkQueue;3.2主函数和其他函数的实现或伪码算法void main()SqStack S;SqStack2 S2;InitStack(&S);InitStack2(&S2);InitQueue(&Q);/初始化while(ch=1)do printf(”nttttA车辆到达 nttttD-车辆离开 nttttE-退出nttttA/D/E ?b);scanf(%c”,status);getchar();while(status!=A&status!=a&status!=Dstatus!=dstatus!=E&status!=e);if(status=Astatus=a)/当车到达输入车号;输入车到达时间;if(!StackFull(S))/栈不满车入栈;printf(”ntttt继续请输入1ntttt放弃请输入 0 ?b);scanf(%d,ch);getchar();/ifelse 车入队;printf(ntttt继续请输入1ntttt放弃请输入 0 ?b);scanf(”d,&ch);getchar();/else /if当车到达 else if(status=D|status=d)/*当车离开*/ do输入车号;输入车离开时间;doPop(&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.timecar_I.time;if(timebase=(Car )malloc(STACK_INIT_SIZEsizeof(Car);if(!(Sbase) return ERROR;S-top=S-base;Sstacksize=STACK_INIT_SIZE;return OK;int StackEmpty(SqStack S)/栈空if(S。top=S。base)return OK;elsereturn ERROR;int StackFull(SqStack S)/栈满if(S.topS.
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号