1、专业班级计科 2011-01,02,03,04地点计算机基础自主学习中心起止时间2012.6.25-2012.7.6设计内容及要求假设停车场是一个可以停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满 n 辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开时必须按它停留的时间长短交纳费用
2、(在便道上停车不收费)。试为停车场编制按上述要求进行管理的模拟程序。要求:以栈模拟停车场,以队列模拟便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码、到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置(停车位从北向南依次编号);若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。程序退出时,应将停车场的当前情况保存在磁盘上,以便下次运行程序时能恢复到上次退出时的状态。设计参数测试数据要求:停车费用单价为每小时 3 元,不足一小时部分四舍五入,例如 4.6 小时按 5 小时收费。程序运行时,n 由键盘
3、输入(6n20)。进度要求2012.6.25完成任务的讲解、并接受课程设计任务,选定课程设计的题目2012.6.26了解任务的算法、并画出算法的程序流程图,对任务的关键技术进行验证、并确定解决办法2012.6.27-2012.6.29 程序设计及编码,上机调试2012.7.02对程序进行调试,设计测试用例进行测试2012.7.03整理课程设计的过程、并进行总结,完善程序功能2012.7.04编写课程设计报告初稿2012.7.05完善课程设计报告、并准备答辨2012.7.06提交课程设计报告和程序,进行答辨参考资料1. 严蔚敏 吴伟民, 数据结构,清华大学出版社,2007.32. 程杰 ,大话数
4、据结构,清华大学出版社,2011.63(美)Stephen Prata, C Primer Plus 中文版(第五版),人民邮电出版社,2005.2其它说明1.本表应在每次实施前一周由负责教师填写二份,学院审批后交学院教务办备案,一份 由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。II系主任:雷亮指导教师:黄永文/王双明/熊茜/彭军/王成敏2012 年 6 月 20 日摘要在这个科技发达的时代,汽车对于我们来说越来越普遍,而人们对停车场的管理也更加信息化。本系统主要是对仅有一个门的停车场的简单管理的设计。对汽车进入停车场,若停车场
5、满,进入便道等候,车场中有车离开后,便道上的车依次进入停车场有一定的管理。而且停车场也有合理的收费标准。该系统主要运用的是 C 语言和数据结构的相关知识,用栈(后进先出)来模拟停车场,队列(先进先出)来模拟便道实现对汽车进入和离开的管理,用简单的数据计算对汽车进行收费标准。使车主更清楚了解停车场的信息,车主可以根据系统的提示进行每一项的操作。关键词:停车场管理C 语言数据结构栈队列IV目 录1 设计内容和要求11.1 设计内容11.2 设计要求12 概要设计22.1 栈的抽象数据类型定义22.2 模块的划分43 详细设计53.1 数据类型的定义53.2 主要模块的算法流程图53.3 主要模块的
6、算法描述74 软件的测试135 总结16参考文献17致谢18附录191 设计内容和要求1.1 设计内容当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路, 待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开时必须按它停留的时间长短交纳费用(在便道上停车不收费)。1.2 设计要求汽车“到达” 或“离去”信息、汽车牌照号码、到达或离去的时刻。对每一组输入数据进行操作 后的输出信息为:若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。222 概要设计2.1 栈的抽象数据类型定义(1)栈的抽象数据类型定义AST Stack数据对象:D=ai|aiEle
7、mSet,i=1,2,.,n, n0 数据关系:R1=|ai-1,aiD,i=2,.,n 约定 an 端为栈顶,a1 端为栈底。基本操作:InitStack(&S)操作结果:构造一个空栈 S。DestroyStack(&初始条件:栈 S 已存在。栈 S 被销毁。ClearStack(&将栈 S 清为空栈。StackEmpty(S)若栈 S 为空栈,则返回 TRUE,否则 FALSE。StackLength(s)初始条件:返回 S 的元素个数,既栈的长度。GetTop(S,&e)栈 S 已存在且非空。用 e 返回 S 的栈顶元素。Push(&S,e)插入元素 e 为新的栈顶元素。Pop(&S,&
8、删除 S 的栈顶元素,并用 e 返回其值。StackTraverse(S,visit()从栈底到栈顶依次对 S 的每个数据元素调用函数 visit()。一旦visit()失败,则操作失效。ADT Stack(2)队列的抽象数据类型定义ADT QueueD=ai|aiElemSet,i=1,2,.,n,n0 数据关系:|ai-1,aiD,i=2,.,n 约定其中 a1 端为队列头,an 为队列尾。InitQueue(&Q)构造一个空队列 Q。DestroyQueue(&队列 Q 已存在。队列 Q 被销毁,不再存在。ClearQueue(&将 Q 清为空队列。QueueEmpty(Q)若 Q 为空
9、队列,则返回 TRUE,否则 FALSE。QueueLength(Q)返回 Q 的元素个数,即队列的长度。GetHead(Q,&Q 为非空队列。用 e 返回的队头元素。EnQueue(&Q,e)插入元素 e 为 Q 的新的队尾元素。DeQueue(&Q,&删除 Q 的队头元素,并用 e 返回其值。QueueTraverse(Q,visit()Q 已存在且非空。从队头到队尾,依次对 Q 的每个数据元素调用函数 visit()。visit() 失败,则操作失败。ADT Queue2.2 模块的划分该系统主要有 7 个模块,即:主函数模块、栈模块(模拟停车场)、队列模块(模拟便道)、汽车进入模块、汽
10、车离开模块、系统信息保存模块、系统输出显示模块。3 详细设计3.1 数据类型的定义typedef struct timeint hour; int min;Time; /时间结点typedef struct carnodechar num10;Time reach;Time leave;Car; /车辆信息结点typedef struct nodeCar *stack100; int top;SqStack; /定义栈表示车位typedef struct carint num;Car *data;struct car *next;QNode;typedef struct NodeQNode *
11、front;QNode *rear;LinkQueue; /用队列表示便道道3.2 主要模块的算法流程图输入停车场的最大容量菜单有显退车示出进离程入开场序信息图 4.1 界面显示有汽车进入停车场判断停车场是否有空车位汽车车进入系统结束进入便道进入停车场输入进入车辆的信息是否图 4.2 汽车进入有汽车离开判断它后面是否有车汽车离开并缴费后面的车进入临时停车场输入离开汽车的信息临时停车场的车回到停车场判断便道是否有车车场离开系统结束便道的车进入停车场图 4.3 汽车离开3.3 主要模块的算法描述(1) 汽车进入停车场:int arrive(SqStack *In,LinkQueue *W,int n) /车辆到达 (把元素要入栈中)Car *p;QNode *t;p=(Car *)malloc
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1