




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安徽建筑工业学院 课课 程程 设设 计计 报报 告告 课程名称 数据结构与算法课程设计数据结构与算法课程设计 题 目 停车场管理停车场管理 院 系 数理系数理系 专 业 信息与计算数学信息与计算数学 班 级 07 信息信息 2 班班 学 号 07207010223 姓 名 赵双祥赵双祥 时 间 数据结构课程设计报告 停车场管理 1 目 录 一一 需求分析 需求分析 2 1 问题描述 问题描述 2 2 基本要求基本要求 2 二 二 概要设计概要设计 2 1 数据结构数据结构 2 2 程序模块程序模块 2 3 算法设计算法设计 6 三 详细设计三 详细设计 8 1 数据类型定义数据类型定义 8 2 函数实现代码函数实现代码 8 3 函数之间的调用关系函数之间的调用关系 9 四 调试分析四 调试分析 9 五 用户手册五 用户手册 9 六 测试结果六 测试结果 10 七 参考文献七 参考文献 12 八 附录八 附录 12 数据结构课程设计报告 停车场管理 2 停车场管理题目停车场管理题目 使用栈和队列相关知识设计一个停车场管理系统 一一 需求分析 需求分析 1 问题描述 问题描述 停车场是一个可停放 n 辆汽车的狭长通道 且只有一个大门可供汽车进出 汽车在停车场内 按车辆到达时间的先后顺序依次排列 若场内已停满 n 辆车 则后来的汽车只能在门外的便道上 等候 一旦有车开走 则排在便道上的第一辆车即可开入 当停车场内某辆车要离开时 在它之 后进入的车辆必须退出车场为它让路 待该车开出大门外 其他车辆再按原次序进入车场 每辆 停放在车场的车在它离开车场时必须按它停留的时间长短交纳费用 车停在便道上不收费 试为 停车场编制按上述要求进行管理的模拟程序 2 基本要求基本要求 1 以栈模拟停车场 以队列模拟场外的车道 按照从终端读入的输入数据序列进行模拟管理 2 每一组输入数据包括三个数据项 汽车到达或离去的信息 汽车牌照号码以及到达或离去的时 刻 对每一组输入数据进行操作后的输出信息为 若车辆到达 则输出汽车在停车场的内或便道 上的位置 若车辆离去 则输出汽车在停车场内停留的时间和应交纳的费用 3 测试数据 设 n 2 输入数据为 A 1 5 A 2 10 D 1 15 A 3 20 A 4 25 D 2 35 D 4 40 E 0 0 其中 A 表示到 达 D 表示离开 E 表示输入结束 二 二 概要设计概要设计 1 数据结构数据结构 栈 stack 是限定仅在表尾进行插入或删除操作的线性表 因此 对栈来说 表尾端有特殊 含义 称为栈顶 top 相应的 表头端称为栈底 bottom 不含元素的空表称为空栈 队列 queue 是一种先进先出的线性表 它只允许在表的一端进行插入 而在另一端删除 元素 停车场主要处理车辆进站和出站的操作 由于车场是一个很窄的 一边开口的车道 先进后 出 类似数据结构中的栈结构 故车场用栈这种数据结构来描述 外面的狭长的通道 先进后出 故可用队列结构来描述 还设置了一个临时栈存放车辆出站时其他车辆 防止出现假上溢现象 采用循环队列 2 程序模块程序模块 栈的顺序存储表示 define StackSize 100 假定预分配的栈空间最多为 100 个元素 typedef char DataType 假定栈元素的数据类型为字符 typedef struct DataType data StackSize 数据结构课程设计报告 停车场管理 3 int top SeqStack 基本操作的算法描述 1 初始化栈 void InitStack SeqStackCar s int i s top 0 for i 0 istack s top NULL 2 初始化便道 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 3 打印出站车的信息 void PRINT CarNode p int room int A1 A2 B1 B2 printf n 请输入离开的时间 scanf d printf n 离开车辆的车牌号为 puts p num printf n 其到达时间为 d p reach hour printf 离开时间为 d p leave hour T1 p reach hour T2 p leave hour printf n 应交费用为 2 1f 元 T2 T1 60 price free p 4 车辆到达 int Arrival SeqStackCar Enter LinkQueueCar W CarNode p QueueNode t p CarNode malloc sizeof CarNode 数据结构课程设计报告 停车场管理 4 flushall printf n 请输入车牌号 例 1 2 3 gets p num if Enter toptop printf n 车辆在车场第 d 位置 Enter top printf n 请输入到达时间 scanf d Enter stack Enter top p return 1 else 车场已满 车进便道 printf n 该车须在便道等待 t QueueNode malloc sizeof QueueNode t data p t next NULL W rear next t W rear t return 1 5 车辆离开 void Leave SeqStackCar Enter SeqStackCar Temp LinkQueueCar W int i room CarNode p t QueueNode q 判断车场内是否有车 if Enter top 0 有车 while 1 输入离开车辆的信息 printf n 请输入车在车场的位置 1 d Enter top scanf d if room 1 while Enter top room 车辆离开 Temp top Temp stack Temp top Enter stack Enter top Enter stack Enter top NULL 数据结构课程设计报告 停车场管理 5 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 t q data Enter top printf n 便道的 s 号车进入车场第 d 位置 t num Enter top printf n 请输入现在的时间 scanf d W head next q next if q W rear W rear W head Enter stack Enter top t free q else printf n 便道里没有车 n else printf n 车场里没有车 没车 3 算法设计算法设计 1 车辆到达算法可简单描述如下 typedef struct NODE CarNode stack n 1 int top SeqStackCar 模拟车站 typedef struct Node QueueNode head 数据结构课程设计报告 停车场管理 6 QueueNode rear LinkQueueCar 模拟通道 int Arrival SeqStackCar Enter LinkQueueCar W 车辆到达 CarNode p 车辆信息结点指针 QueueNode t p CarNode malloc sizeof CarNode 为存放车辆信息结点申请一片空间 flushall 清除所有缓冲区 printf n 请输入车牌号 例 1 2 3 gets p num 记录车牌号 if Enter toptop 模拟车站栈顶指针加 1 printf n 车辆在车场第 d 位置 Enter top printf n 请输入到达时间 scanf d 记录到达时间 Enter stack Enter top p return 1 else 否则车场已满 车需进入便道 printf n 该车须在便道等待 t QueueNode malloc sizeof QueueNode 为存放便道车辆信息申请一片空间 t data p 车辆信息 p 赋给 t t next NULL 下一结点赋空 W rear next t W rear t 便道尾指针指向 t return 1 2 车辆离开算法可简单描述如下 void Leave SeqStackCar Enter SeqStackCar Temp LinkQueueCar W int i room CarNode p t QueueNode q 如下判断车场内是否有车 若有执行车辆离开操作 若没有 进行提示 if Enter top 0 若模拟车站栈顶指针大于 0 则有车 while 1 printf n 请输入车在车场的位置 1 d Enter top 数据结构课程设计报告 停车场管理 7 scanf d 输入离开车辆的信息 if room 1 判断输入的车场位置是否在允许范围内 若不在 继续输入 若在 跳出循环 while Enter top room 离开车辆不在模拟车站栈顶 最后 启用让路栈进行让路 Temp top 让路栈栈顶指针加 1 Temp stack Temp top Enter stack Enter top 将让路车辆信息赋给让路栈指针 Enter stack Enter top NULL 将原让路车辆所在结点赋值为空 Enter top 模拟车站栈顶减 1 p Enter stack Enter top 获取离开车辆的信息 Enter stack Enter top NULL 将离开车辆所在结点赋值为空 Enter top 模拟车站栈顶指针减 1 while Temp top 1 让路栈不空说明让路栈内有车 需将车移 到模拟车站栈内 Enter top 模拟车站栈顶加 1 Enter stack Enter top Temp stack Temp top 将让路栈内车辆信息赋回模拟车站 Temp stack Temp top NULL 让路栈赋空 Temp top 让路栈栈顶减 1 PRINT p room 打印离开车辆的所有信息 以下判断通道上是否有车及车站是否已满 if W head W rear 获取便道车辆信息 t q data Enter top 模拟车站栈顶加 1 printf n 便道的 s 号车进入车场第 d 位置 t num Enter top 输出移动信息 printf n 请输入现在的时间 输入进站时间 scanf d W head next q next 删除进站车辆结点 便道车辆前移 if q W rear W rear W head 将便道栈赋空 Enter stack Enter top t 将便道车辆信息赋给模拟车站 free q 释放临时指针 p else printf n 便道里没有车 n else printf n 车场里没有车 没车 数据结构课程设计报告 停车场管理 8 三 详细设计三 详细设计 1 数据类型定义数据类型定义 typedef struct time int hour Time 时间结点 typedef struct node char num 10 Time reach Time leave CarNode 车辆进出车站信息结点 typedef struct NODE CarNode stack n 1 int top SeqStackCar 模拟车站 typedef struct car CarNode data struct car next QueueNode 车辆位置信息结点 typedef struct Node QueueNode head QueueNode rear LinkQueueCar 模拟便道 2 函数实现代码函数实现代码 初始化栈 车站和便道 void InitStack SeqStackCar int InitQueue LinkQueueCar 车辆到达 int Arrival SeqStackCar LinkQueueCar 车辆离开 数据结构课程设计报告 停车场管理 9 void Leave SeqStackCar SeqStackCar LinkQueueCar 显示存车信息 void List SeqStackCar LinkQueueCar 3 函数之间的调用关系函数之间的调用关系 进入主程序 main 内后 由 switch ch 引导调用函数 若车辆到达 ch A 或 a 调用 Arrival SeqStackCar LinkQueueCar 函数 车辆离开 ch D 或 d 调用 Leave SeqStackCar SeqStackCar LinkQueueCar 函数 在 Leave 函数内有输出离开车辆信息的操作 因此会接着 调用 PRINT 函数 列表显示车场 包含便道 信息 ch L 或 l 会调用 List SeqStackCar LinkQueueCar 函数 在 List 内可有选择的显示车场和便道信息 选车场会接着调 用 List1 SeqStackCar S 选便道则会调用 List2 LinkQueueCar W 退出系统 ch E 或 e 则会调用 exit 0 函数 四 调试分析四 调试分析 经过对程序的编制 调试和运行 使我更好的掌握了栈和队列基本性质和有关停车场问题 的解决方法 熟悉了各种调用的数据类型 在调试和运行过程中使我更加的了解和熟悉程序运行 的环境 提高了我对程序调试分析的能力和对错误的纠正能力 五 用户手册五 用户手册 1 运行环境 执行文件 1 编制 调试和运行程序总是依赖所使用的语言环境 当然也令支持语言的系统程序的基础环 境即操作系统环境的影响 此课程设计以 V C 6 0 为依据 因其界面支持显示汉字 同时又能兼 容 C 语言 故将其作为运行环境 2 用户界面 VC 6 0 数据结构课程设计报告 停车场管理 10 3 操作过程 点击 VC 6 0 的快捷图标 进入 VC 6 0 的开发环境 进入 文件 子菜单 选取 新建 开始输入一个新文件 编写新的程序 判断改错之后 按存盘 对文件进行编译和链接 在程序编写后 需要将其编译成可执行文件 需要用 编译 中的 Ctrl F7 进行编译和链接 然后看文件中是否存在错误 存在错误改正 直到没有错误 运行 采用相关功能 编译 菜单 运行已形成好的可执行文件 如果源程序文件尚未编译或链接 选择此项目时系统也会进行编译和链接 如果程序中没有错误 再进行处理后的可执行文件 与 此功能对应的快捷键为 F5 六 测试结果六 测试结果 测试数据 设 n 2 输入数据为 A 1 5 A 2 10 D 1 15 A 3 20 A 4 25 D 2 35 D 4 40 E 0 0 其中 A 表示到 达 D 表示离开 E 表示输入结束 运行结果如下图所示 数据结构课程设计报告 停车场管理 11 上图为 A 1 5 A 2 10 D 1 15 输入数据 上图为 A 1 5 A 2 10 D 1 15 输入数据的运行结果 即第一辆入站 车辆到出站时的全部信息和应付费用 上图为输入 A 3 20 A 4 25 后的界面 可见停车场已满 车辆须在便道等待 数据结构课程设计报告 停车场管理 12 上图为输入 D 2 35 后的界面 由界面可知 2 号车离站 同时停留在便道内 4 号车进站 系统因此提示输入进站时间 上图为输入 D 4 40 后界面 即 4 号车离站 系统打印离站信息 接下来输入 E 0 0 成功退出系统 七 参考文献七 参考文献 1 严蔚敏 吴伟民 数据结构 第二版 北京 清华大学出版社 1992 2 数据结构 C 语言版 李云清 杨庆红 揭安全 编著 人民邮电出版社 3 C 语言程序设计 第二版 谭浩强 著 清华大学出版社 4 数据结构课程设计 苏仕华 等编著 机械工业出版社 八 附录八 附录 原程序文件名清单 include include 数据结构课程设计报告 停车场管理 13 include define n 2 define price 0 1 typedef struct time int hour Time typedef struct node char num 10 Time reach Time leave CarNode typedef struct NODE CarNode stack n 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 main SeqStackCar Enter Temp LinkQueueCar Wait char ch InitStack InitStack InitQueue while 1 printf nA 车辆到达 数据结构课程设计报告 停车场管理 14 printf D 车辆离开 printf L 列表显示 printf E 退出系统 不区分大小写 n while 1 scanf c if ch A ch a ch D ch d ch L ch l ch E ch e break else printf n 请选择 A D L E switch ch case A Arrival break case a Arrival break case D Leave break case d Leave break case L List Enter Wait break case l List Enter Wait break case E exit 0 case e exit 0 default break void InitStack SeqStackCar s int i s top 0 for i 0 istack s top NULL int InitQueue LinkQueueCar Q Q head QueueNode malloc sizeof QueueNode if Q head NULL 数据结构课程设计报告 停车场管理 15 Q head next NULL Q rear Q head return 1 else return 1 void PRINT CarNode p int room int T1 T2 printf n 请输入离开的时间 scanf d getchar printf n 离开车辆的车牌号为 puts p num printf n 其到达时间为 d p reach hour printf n 离开时间为 d p leave hour T1 p reach hour T2 p leave hour printf n 应交费用为 2 1f 元 T2 T1 60 price free p int Arrival SeqStackCar Enter LinkQueueCar W CarNode p QueueNode t p CarNode malloc sizeof CarNode flushall printf n 请输入车牌号 例 1 2 3 gets p num if Enter toptop printf n 车辆在车场第 d 位置 Enter top printf n 请输入到达时间 scanf d getchar Enter stack Enter top p return 1 else printf n 该车须在便道等待 t QueueNode malloc sizeof QueueNode 数据结构课程设计报告 停车场管理 16 t 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 t QueueNode q if Enter top 0 while 1 printf n 请输入车在车场的位置 1 d Enter top scanf d getchar 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 wh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民法课件讲解
- 民法学课件内容
- 并条工考试题库及答案
- 新质生产力形成的必要条件
- 安全小故事合集讲解
- 新质生产力的“四新”核心要素
- 民族课件内容
- 民族节日课件
- 《统计学-SPSS和Excel实现》(第9版)课件 第4章 概率分布
- 幼儿园的工作方案汇报
- 2025年环保知识竞赛考试题库200题(附答案)
- TCTBA 001-2019 非招标方式采购代理服务规范
- 《挠曲电理论及应用》笔记
- 薄弱科目的攻克策略
- 2024年山东省国家安全主题知识竞赛备考试题库(含答案)
- 建筑电气与智能化专业大学生职业生涯发展
- 小学生倾听课件
- 【MOOC】《中国马克思主义与当代》(北京科技大学)中国大学MOOC慕课答案
- 《城市轨道交通车辆段(停车场)物业服务标准》
- 初级招标采购从业人员《招标采购法律法规》近年考试真题试题库(含答案)
- 教学评一体化理念
评论
0/150
提交评论