数据结构课程设计--停车场管理系统_第1页
数据结构课程设计--停车场管理系统_第2页
数据结构课程设计--停车场管理系统_第3页
数据结构课程设计--停车场管理系统_第4页
数据结构课程设计--停车场管理系统_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 实验二实验二 停车场管理停车场管理 班级 A0712 学号 12 姓名 冷清淼 成绩 指导教师签名 一 问题描述一 问题描述 设停车场是一个可停放 n 辆车的狭长通道 且只有一个大门可供汽车进出 在停车场内 汽车按到达的先后次序 由北向南依次排列 假设大门在最南端 若停车场内已停满 n 辆车 则后来的汽车需在门外的便道上等候 当有车开走 时 便道上的第一辆车即可开入 当停车场内某辆车要离开时 在它之后进入 的车辆必须先退出停车场为它让路 待该辆车开出大门后 其他车辆再按原次 序返回车场 每辆车离开停车场时 应按其停留时间的长短交费 在便道上停 留的时间不收费 设计要求 1 模拟上述管理过程 要求以顺序栈模拟停车场 以链队列模拟便道 2 从终端读入汽车到达或离去的数据 每组数据包括三项 1 是 到达 还是 离开 2 汽车牌照号码 3 到达 或 离开 的时刻 3 与每组输入信息相应的输出信息为 如果是到达的车辆 则输出其在停 车场中或便道上的位置 如果是离去的车辆 则输出其在停车场中停留的时间 和应交的费用 二 算法说明二 算法说明 1 数据结构说明 1 用到两个堆栈 一个为车场栈 另一个为临时栈 temp typedef struct NODE CarNode stack MAX 1 int top SeqStackCar 模拟车场 2 一个队列结构 存储便道车辆信息 2 typedef struct Node QueueNode head QueueNode rear LinkQueueCar 模拟便道 2 算法说明 1 功能模块说明 停车场管理系统含有三个模块 即 车辆到达 离开 列表显示 停车场系统 车辆到达车辆离开列表显示 3 2 1 图 1 2 以模块为单位分析算法 1 到达 模块 到达时有两种情况 即车场是否满 未满则直接进入停车场 满时 到便道等待 如图 2 车辆到达 停车场是否满 结束 进入停车场进入便道 是 否 图 2 3 2 离开 模块 离开时 当车库为空时 提示没有车 结束 否则车辆离开 如图 3 车辆离开 停车场是否空 结束 车辆离开提示没有车 是 否 否 便道是否有车是 车进入车场 图 3 3 显示 模块 显示模块有两个显示选项 即 车场与便道 如图 4 列表显示 判断输入值 结束 显示车场列表显示便道列表 2 便道 1 车场 图 4 4 三 测试结果三 测试结果 一 测试用例 说明 测试用例要合理并且足够 既要有正确用例 也要有错误用 例 同时检验程序的正确性和强壮性 1 第一组测试用例 1 测试输入 停车场的车辆离开 如下表 服务选择车牌号 车位到达 离开时间 1QH05815 25 1AB12318 45 1EA64223 15 220 30 210 65 错误 2 测试目的 测试离开方法时间格式控制以及费用计算是否正确 3 正确输出 第一次离开的是 AB123 应交费 3 45 元 第二次时 当在输入 65 时 应该提示输入错误 重输 4 实际输出 5 错误原因 第一个错误是在计算时 一个数字错了 第二个是没有对时间格式控 制 6 当前状态 已改正 2 第二组测试用例 5 1 测试输入 连续 6 辆车到达 如下表 服务选择 车牌号 到达时间 1A8828 7 56 1S22968 25 1WW6668 45 1HK45615 50 1GH99912 30 1DD55513 40 2 测试目的 测试到达方法与列表显示方法能否正确完成 3 正确输出 先到达的五辆车先进入停车场 最后到达的一辆在便道等候 4 实际输出 5 错误原因 没有作出时间先后的判断 而是先输入先进入 6 当前状态 待修改 3 第三组测试用例 1 测试输入 接上一步输入离开信息 下表 服务选择离开车位离开时间便道车进入时间 2313 3013 40 6 2 测试目的 测试离开方法功能是否成功以及便道进入车场是否正确 3 正确输出 输出 3 号车位的车辆离开信息清单 便道 1 号车进入停车场 4 实际输出 5 错误原因 没有错误 6 当前状态 通过 二 测试结果分析 此停车管理系统基本可能实现一个小的停车场的管理 其 到达 与 离开 方法 都相对比较完整 以及结算清单明了 尽管在时间先后上有出现混乱 但当其用到实际应 用时 那个时间先后就可以避免了 但在输入数据时 要按照严格的格式输入 否则有可 能出现死去或崩溃 若本系统能加上保存功能就更好了 因为一个系统在使用过程中总会 关机等 而此系统的缺点却是没有保存功能 关闭之后就要重新建立了 会慢慢完善 7 附录 源代码附录 源代码 系统说明 本系统适应于小型停车场 且停车时间在一天之内的短期停放停车场 在此系统中 车库容量设置为 5 便于测试 在实际使用中可以对容量大小按实际情况设 置 include include include include define MAX 5 车库容量 可以根据实际情况改变 define price 0 01 一辆车每分钟费用 可变 typedef struct time int hour int min Time 时间结点 typedef struct node char num 10 Time reach Time leave CarNode 车辆信息结点 typedef struct NODE CarNode stack MAX 1 int top SeqStackCar 模拟停车场 typedef struct car CarNode data struct car next QueueNode typedef struct Node QueueNode head QueueNode rear LinkQueueCar 模拟便道 方法声明 void InitStack SeqStackCar 初始化栈 int InitQueue LinkQueueCar 初始化便道 int Arrival SeqStackCar LinkQueueCar 车辆到达 void Leave SeqStackCar SeqStackCar LinkQueueCar 车辆离开 void List SeqStackCar LinkQueueCar 显示信息 void PRINT CarNode p int room 输出离开车辆的信息清单 8 void main system color F2 设置系统颜色 本系统为白底绿字 f2 SeqStackCar Enter Temp LinkQueueCar Wait int ch InitStack 初始化车站 InitStack 初始化让路的临时栈 InitQueue 初始化通道 while 1 cout 欢迎使用本停车管理系统 endl cout endl cout 1 车辆到达 endl cout 2 车辆离开 endl cout 3 列表显示 endl cout 4 退出系统 endl cout endl cout 说明 请注意正确输入时间 在输入 时 后 按 ENTER 或者 空格 再 输入 分 不要为非数字 endl cout 请选择所需要的服务 1 4 ch if ch 1 else cout 输入错误 请选择 1 4 top 0 for i 0 istack s top NULL int InitQueue LinkQueueCar Q 初始化便道 Q head QueueNode malloc sizeof QueueNode if Q head NULL Q head next NULL Q rear Q head return 1 else return 1 int Arrival SeqStackCar Enter LinkQueueCar W 车辆到达 CarNode p QueueNode t p CarNode malloc sizeof CarNode flushall cout 请输入车牌号 例 A1234 num if Enter toptop cout 车辆在车场第 top 位置 endl cout 请输入到达时间 小时 分钟 p reach hour while p reach hourreach hour 23 控制时间格式正确 cout 输入错误 endl cout 请重输入到达时间的时 0 23 p reach hour cin p reach min while p reach minreach min 59 控制分钟输入正确 cout 输入错误 endl cout 请重输入到达时间的分 0 59 p reach min Enter stack Enter top p return 1 10 else 车场已满 车进便道 cout 车场已满 请在便道等待 data p t next NULL W rear next t W rear t return 1 void Leave SeqStackCar Enter SeqStackCar Temp LinkQueueCar W 车辆离开 int room CarNode p QueueNode q 判断车场内是否有车 if Enter top 0 有车 while 1 输入离开车辆的信息 cout 请输入车在车场的位置 1 top room if room 1 while Enter top room 车辆离开 Temp top 临时通道栈顶指针 Temp stack Temp top Enter stack Enter top Enter stack Enter top NULL Enter top p Enter stack Enter top Enter stack Enter top NULL Enter top while Temp top 1 判断临时通道上是否有车 Enter top Enter stack Enter top Temp stack Temp top Temp stack Temp top NULL Temp top PRINT p room if W head W rear p q data p 指向链队头 Enter top cout 便道的 num 号车进入车场第 top 位置 endl cout 请输入现在的时间如 小时 分钟 p reach hour if p reach hourreach hour 23 cout 输入错误 endl cout 请重输入到达时间的时 0 23 p reach hour cin p reach min if p reach minreach min 59 cout 输入错误 endl cout 请重输入到达时间的分 0 59 p reach min Enter stack Enter top p W head next q next if q W rear W rear W head free q 释放 q 地址 else cout 便道里没有车 endl 便道没车 else cout 车场里没有车 endl 车场没车 void PRINT CarNode p int room 输出离开车辆的信息清单 int A1 A2 B1 B2 cout 请输入离开的时间 小时 分钟 p leave hour while p leave hourleave hour 23 cout 输入错误 endl cout 请重输入离开的时间的时 0 23 p leave hour B1 p leave hour 12 cin p leave min if p leave minleave min 59 cout 输入错误 endl cout 请重输入到达时间的分 0 59 p leave min cout endl 离开车辆的车牌号为 num cout 其到达时间为 reach hour reach min endl cout 离开时间为 leave hour leave min reach hour A2 p reach min B1 p leave hour B2 p leave min cout 应交费用为 B1 A1 60 B2 A2 1440 1440 price 元 endl free p void List1 SeqStackCar S 列表显示车场信息 cout 您选择的是车场停车情况 top 0 判断车站内是否有车 cout 位置 到达时间 车牌号 endl for i 1 itop i cout i stack i reach hour stack i reach min stack i num endl else cout 车场里没有车 endl void List2 LinkQueueCar W 列表显示便道信息 cout 您选择的是便道停车情况 head next if W head W rear 判断通道上是否有车 cout 等待车辆的车牌号码为 endl while p NULL 13 cout data num cout j data num next j 开始时显示不正确 没有按照正常输出 else cout 便道里没有车 void List S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论