1、 课课 程程 设设 计计 教教 学学 院院 计算机 课程名称课程名称 数据结构与算法 题题 目目 用栈实现停车场管理 专专 业业 软件工程 班班 级级 姓姓 名名 同组人员同组人员 指导教师指导教师 2014 年 6 月 29 日 (完成时间) 1 目目 录录 一概述. 2 二总体方案设计 2 三详细设计 . 3 四程序的调试与运行结果说明 . 7 五课程设计总结 .20 参考文献21 2 一一 概述概述 1.课程设计的目的课程设计的目的 对学生数据结构知识的全面综合训练,把书上学到的知识用于解决实际问 题、培养今后软件开发工作所需的动手实践能力,包括问题分析、总体结构设 计,用户界面的设计、
2、程序设计时的基本技能和技巧,以及一整套软件工作规 范的训练和团体协作精神的培养。 2.课程设计的要求课程设计的要求 (1)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计 能力; (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基 本方法和技能; (3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力; (4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作 者所应具备的科学的工作方法和作风 3 二二 总体方案设计总体方案设计 一、问题描述一、问题描述 设停车场是一个可停放 n辆车的狭长通道, 且只有一个大门可供汽车进出。 在停车场内, 汽车按到
3、达的先后次序, 由北向南依次排列 (假设大门在最南端) 。 若停车场内已停满 n 辆车,则后来的汽车需在门外的便道上等候,当有车开走 时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入 的车辆必须先退出停车场为它让路,待该辆车开出大门后,其他车辆再按原次 序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停 留的时间不收费) 。 设计要求: 1模拟上述管理过程。要求以顺序栈模拟停车场,以链队列模拟便道。 2从终端读入汽车到达或离去的数据,每组数据包括三项: (1)是“到达”还是“离开” ; (2)汽车牌照号码; (3) “到达”或“离开”的时刻。 3与每组输入
4、信息相应的输出信息为:如果是到达的车辆,则输出其在停 车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间 和应交的费用。 4遇到的难题,当进入 4 辆车,假如需要出车的序列为 2,就必须按照栈 出栈序列出车,先出 4,3,2 然后 3,4 又入桟,这里的程序相对比较麻烦,通过和 组员交流终于做出来了。 二二.各自分工各自分工 我负责的是编写部分代码,如车辆的进入函数,运用了栈的知识 4 三三 详细设计详细设计 算法说明算法说明 1数据结构说明 (1)用到两个堆栈:一个为车场栈;另一个为临时栈 temp typedef struct NODE CarNode *stackMAX
5、+1; int top; SeqStackCar; /*模拟车场*/ (2)一个队列结构,存储便道车辆信息: typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar; /*模拟便道*/ 2算法说明 (1) 功能模块说明:停车场管理系统含有三个模块,即:车辆到达、离开、 列表显示 停车场系统 车辆到达车辆离开列表显示 3 2 1 图 1 (2)以模块为单位分析算法 1、 “到达”模块:到达时有两种情况,即车场是否满,未满则直接进入停 车场;满时,到便道等待。 如图 2。 5 车辆到达 停车场是否满 结束 进入停车场进入
6、便道 是 否 2.“离开”模块:离开时,当车库为空时,提示没有车,结束;否则车辆离开。 如图 3。 车辆离开 停车场是否空 结束 车辆离开提示没有车 是 否 否 便道是否有车是 车进入车场 图 3 1. “显示”模块:显示模块有两个显示选项,即:车场与便道。如图 4。 6 列表显示 判断输入值 结束 显示车场列表显示便道列表 2.便道 1.车场 7 四四.程序的调试与运行结果说明程序的调试与运行结果说明 (一)测试用例(说明:测试用例要合理并且足够,既要有正确用例,也 要有错误用例,同时检验程序的正确性和强壮性) 1第一组测试用例 (1)测试输入:停车场的车辆离开,如下表: 服务选择 车牌号/车位 到达/离开时间 1 QH058 15:25 1 AB123 18:45 1 EA642 23:15 2 2 0:30 2 1 0:65(错误) (2)测试目的:测试离开方法时间格式控制以及费用计算是否正确。 (3)正确输出:第一次离开的是 AB123,应交费 3.45 元。第二次时,当 在输入 65 时,应该提