基于栈和队列的停车场管理系统设计与实现 课程设计论文.doc_第1页
基于栈和队列的停车场管理系统设计与实现 课程设计论文.doc_第2页
基于栈和队列的停车场管理系统设计与实现 课程设计论文.doc_第3页
基于栈和队列的停车场管理系统设计与实现 课程设计论文.doc_第4页
基于栈和队列的停车场管理系统设计与实现 课程设计论文.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

长春建筑学院 数据结构 课程设计 论文 基于栈和队列的停车场管理系统设计与实现基于栈和队列的停车场管理系统设计与实现 Stack and queue based parking management system design and Implementation 年 级 学 号 姓 名 专 业 指导老师 二零一三年十二月 长春建筑学院 数据结构 课程设计 论文 I 摘 要 计算机科学技术的发展 不仅极大地促进了整个科学技术的发展 而且明显地加 快了经济信息化和社会信息化的进程 因此 计算机教育在全国备受重视 计算机 知识与能力已成为 21 世纪人才素质的基本要素之一 如今 高等教育的计算机教育发展十分迅速 十多年前 只有部分理工科专业 开设计算机课程 今天 几乎所有高校的所有专业都开设了程度不同的计算机课程 人们已经认识到 计算机知识已成为当代知识分子知识结构中不可缺少的重要组成 部分 而除了掌握计算机的基础知识和操作的基本能力外 掌握一门高级编程语言 并可以熟练运用它 已成为当代大学生综合能力必要组成 计算机技术发展如此迅猛 计算机应用如此广泛 需要学习的东西愈来愈多 而我们的总学时是有限的 一般来说 计算机课程学习可以分为两部分 一部分是 理论课程学习 一部分是上机应用实习 根据我们专业的性质和要求 则应侧重于 上机操作运用 关键字 计算机 上机应用实习 长春建筑学院 数据结构 课程设计 论文 II Abstract Development of computer science and technology not only greatly promoted the development of the science and technology but also significantly accelerate the economic and social informatization process of information Therefore the country has attracted increasing attention in computer education computer knowledge and ability has become one of the basic elements of the 21st century the quality of talent Today the computer is very fast development of higher education Ten years ago only a part of the creation of computer science and engineering courses Today almost all professional colleges and universities have set up all the different levels of computer courses It has been recognized computer knowledge has become the contemporary intellectuals important part of the knowledge structure indispensable And in addition to master the basics of computer operation and basic ability to master a high level programming language and can skillfully use it has become an essential component of contemporary college students comprehensive ability Computer technology is growing so fast computer application so extensive more and more things to learn and our total hours are limited Generally computer learning courses can be divided into two parts one is the theoretical courses practical application part of the machine According to the nature and requirements of our professional you should focus on the use of machine operation Keywords comptuer Computer application practice 长春建筑学院 数据结构 课程设计 论文 目 录 摘 要 I ABSTRACT II 第 1 章 绪 论 1 1 1 设计目的 1 1 2 设计内容 1 1 3 设计要求 2 1 4 设计思想 2 第 2 章 概要设计 3 2 1 抽象数据类型定义 3 2 2 模块划分 5 第 3 章 详细设计 7 3 1 数据类型的定义 7 3 2 主要模块的算法描述 8 第 4 章 系统测试 12 第 4 章 系统测试 13 4 1 调试分析 13 第 5 章 测试结果 14 5 1 测试数据及结果 14 5 2 结果分析 17 第 6 章 课程设计总结 18 长春建筑学院 数据结构 课程设计 论文 1 第 1 章 绪 论 引言 引言 课程设计是实践性教学中的一个重要环节 它以某一课程为基础 可以涉及和 课程相关的各个方面 是一门独立于课程之外的特殊课程 课程设计是让同学们对 所学的课程更全面的学习和应用 理解和掌握课程的相关知识 数据结构 是一门 重要的专业基础课 是计算机理论和应用的核心基础课程 数据结构课程设计 要求学生在数据结构的逻辑特性和物理表示 数据结构的 选择和应用 算法的设计及其实现等方面 加深对课程基本内容的理解 同时 在 程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练 1 1 设计目的 1 掌握栈和队列的建立 2 掌握栈和队列的基本操作 3 深入了解栈和队列的特性 以便在解决实际问题中灵活运用它们 4 加深对栈和队列的理解和认识 1 2 设计内容 停车场是一个可停放n辆汽车的狭长通道 且只有一个大门可供汽车进出 停车 场内已停了n辆汽车 后来的汽车只能在门外的便道上等候 一旦有车开走 排在通 道上的第一辆车即可开入 当停车场内每辆车要离开时 在它之后进入的车辆必须 先退出停车场为其让路 待该辆车开出大门 其他车辆再按原次序进入停车场 为 停车场编写按上述要求进行管理的模拟程序 长春建筑学院 数据结构 课程设计 论文 2 1 3 设计要求 1 根据车辆到达停车场到车辆离开停车场时所停留的时间进行计时收费 2 当有车辆从停车场离开时 等待的车辆按顺序进入停车场停放 实现停车 场的调度功能 3 用顺序栈来表示停车场 链队表示停车场外的便道 4 显示停车场信息和便道信息 5 程序执行的命令为 车辆进入停车场 车辆离开停车场 显示停车场 1 2 3 的信息 1 1 4 设计思想 1 当车辆要进入停车场时 检查停车场是否已满 如果未满则车辆进入停车场 如 果停车场已满 则车辆进入便道等候 2 当车辆要求出栈时 先让在它之后进入停车场的车辆退出停车场为它让路 再让 该车退出停车场 让路的所有车辆再按其原来进入停车场的次序进入停车场 之后 再检查在便道上是否有车 等候 有车则让最先等待的那辆车进入停车场 3 用顺序结构实现栈 用链表实现队列 长春建筑学院 数据结构 课程设计 论文 3 第 2 章 概要设计 2 1 抽象数据类型定义 1 栈的抽象数据类型定义 AST Stack 数据对象 D ai ai ElemSet i 1 2 n n 0 数据关系 R1 ai 1 ai D i 2 n 约定 an 端为栈顶 a1 端为栈底 基本操作 InitStack 定义一个全局变量用来存储车库最大容量 float price 定义一个全局变量用来存储每车每小时的费用 typedef struct time int hour int min Time 时间结点 typedef struct node char num 10 Time reach Time leave Car 车辆信息结点 typedef struct NODE Car stack 100 int top SqStack 停车站 typedef struct car Car data struct car next QNode typedef struct Node 长春建筑学院 数据结构 课程设计 论文 8 QNode head QNode rear LinkQueue 通道 3 2 主要模块的算法描述 本程序主要分为四部分 1 主函数及程序框架 2 车辆到达模块 3 车辆离开模块 4 显示车辆信息模块 由梁伟明 段庆龙 丁磊和我合作编写 我主要负责leave 车辆离开 函数部分 1 主函数 void main SqStack In Out LinkQueue Wait int ch InitStack 初始化停车站 InitStack 初始化让路的临时栈 InitQueue 初始化通道 while 1 printf 欢迎使用停车场管理系统 n printf t本系统由5011工作室开发 作者 邓春国 段庆龙 梁伟明 丁磊 n n printf 请输入停车场的容量 scanf d printf 请输入停车场的收费标准 元 小时 scanf f printf 您输入的停车场容量为 d位 费用为 2 1f元 小时 n MAX price 长春建筑学院 数据结构 课程设计 论文 9 printf n 1 车辆到达 n 2 车辆离开 n 3 停车场信息 n 4 退出系统 n请 选择 n while 1 ch getch switch ch case 49 arrive break 车辆到达 case 50 leave break 车辆离开 case 51 info In Wait break 输出车站信息 case 52 printf 谢谢使用 exit 0 退出主程序 default printf n按键无效 请重新按键选择 49 52分别表示 1 4 这四个按键的键值 system CLS printf 欢迎使用停车场管理系统 n printf t本系统由CG工作室开发 作者 邓春国 段庆龙 梁伟明 丁磊 n n n printf 您输入的停车场容量为 d位 费用为 2 1f元 小时 n MAX price printf n 1 车辆到达 n 2 车辆离开 n 3 停车场信息 n 4 退出系统 n请选择 n 2 车辆离开模块 算法分析 1 void leave SqStack In SqStack Out LinkQueue W 车辆离开 长春建筑学院 数据结构 课程设计 论文 10 int room Car p t QNode q 开始定义一个整型变量room 用来记录要离开的车辆在停车场的位置 定 义车辆结点指针p和t和队列结点指针q if In top 0 有车 while 1 printf n请输入车在停车场的位置 1 d In top scanf d if room 1 判断停车场内是否有车 如果有车 就输入要离开的车辆在停车场的位置 否则就提示停车场没车 这里用了while循环语句 如果输入的车辆位置超出范围 就要重新输入 while In top room 车辆离开 Out top Out stack Out top In stack In top In stack In top NULL In top 如果栈顶位置In top大于要离开的车位置room 即要离开的车不在停车 场的门口 的话 在要离开的车辆前面的车就要先离开 开到临时停车场 即临时 栈中 因此Out所表示的临时栈的栈顶top加1 用来表示临时停车场增加1辆车 接着把该车的信息拷贝到栈Out中 然后删除栈In的栈顶 即这辆车开走 p In stack In top In stack In top NULL In top while Out top 1 长春建筑学院 数据结构 课程设计 论文 11 In top In stack In top Out stack Out top Out stack Out top NULL Out top 直到要离开的车辆前面的车都开到临时停车场之后 该车才离开 离开之后 该车的信息结点In stack In top 置空 然后栈顶In top减1 之后就判断临 时停车场是否有车 有车就一辆一辆的开回停车场里面 因此停车场的栈顶In top 加1 然后就把临时停车场的车结点的信息拷贝到停车场的车结点上 接着删 除临时停车场车的结点 即Out stack Out top NULL Out top PRINT p room if W head W rear t q data In top printf n便道的 s号车进入车场第 d号停车位 t num In top printf n请输入现在的时间 格式 scanf d d W head next q next if q W rear W rear W head In stack In top t free q 判断 W head W rear 没车 printf 请按任意键返回 getch leave 函数流程图如图3 1所示 2 图 3 1 leave 函数流程图 定义必要的变量 判断停车场是否有 车 输出停车场里没有车 前面的车先进入临时停车场 车辆离开 否 是 输入离开车辆的信息 判断前面是否有其 他车且停车场未满 是 否 判断便道否有车 否 便道的车先进入停车场 车临时停车场的车回到停车场 是 开始 结束 长春建筑学院 数据结构 课程设计 论文 13 第 4 章 系统测试 4 1 调试分析 调试过程中的主要问题由于此停车场管理系统是分模块设计的 而且在程序的实 现过程中又使用了清屏函数 所以 运行时用户选择任务并且执行完任务后 又会 回到供用户选择功能的主界面 因此整个程序从整体上来讲结构清晰 使用方便 本程序的调试运行 总体上情况良好 但中间也出现了一些小问题 其中比较有代 表性的主要问题有 1 当停车场已经达到最大容量 但仍有车辆进入停车场的时候 运行界面上 没有出现或者说出现了但又跳掉了 车站已满 车辆已经入通道 的提示信息 在 查阅了多种资料后 在那一个 printf 语句后加了一个 getch 此时 程序运行结 果就符合要求了 看起来也比较清晰了 2 使用 getch 语句必须使用头文件 include 刚开始因为没有使用这个头文件 所以会出现 getch 这个无法辨别 图 5 1 错误报告 1 3 在对字符型的数据进行赋值的时候 要用 strcpy 而不能直接用 pcar num pnum 这样的赋值形式 这样子会产生如下的错误 图 5 2 错误报告 2 正确的形式应该是这样的 strcpy pcar num pnum 长春建筑学院 数据结构 课程设计 论文 14 第 5 章 测试结果 5 1 测试数据及结果 输入停车场的容量4 收费5元 小时 接着查看停车场的信息 如图5 1所示 接着输入 4 辆车的信息 然后查看停车场信息 如图 5 2 所示 图 5 1 停车场系统初始化示意图 图 5 2 车辆进入停车场示意图 长春建筑学院 数据结构 课程设计 论文 15 再输入 1 辆车的信息 然后查看停车场信息 如图5 3 a 和图5 3 b 所示 图 5 3 a 车辆进入便道示意图 图 5 3 b 车辆进入便道示意图 长春建筑学院 数据结构 课程设计 论文 16 最后选择车辆离开 输入第2辆车离开 再查看停车场信息 如图5 4 a 和图 5 4 b 所示 图 5 4 a 车辆离开示意图 图 5 4 b 车辆离开示意图 长春建筑学院 数据结构 课程设计 论文 17 5 2 结果分析 通过这次数据结构课程设计 我认识到从课本上学到的知识是远远不够的 本次设计使我深入的了解了栈与队列的建立 插入 删除和在实际问题下灵活运用 它们 另一方面使我对栈和队列的抽象数据类型有了进一步的认识 虽然经过努力终于把该系统完成 可是该系统还是不完善 程序中的一些算法还 不是很清楚 只不过把简单的功能实现了出来 这些缺憾归根结底都是因为我的 C 语言和数据结构的水平还不是很高 还需要经过不懈的努力才能做出比较完善 的系统 这次课程设计让我明白要真正的掌握一门编程语言需要的不仅仅是课本上 的东西 还要在实际的编程过程中慢慢的掌握其中的奥妙 同时我明白了 要成为 一名优秀的编程人员所要具备的各种条件 坚实的编程语言基础 熟练的调试程序 的技能 重要的是要有耐心 同时细心也是不可缺少的 所以为了自己的梦想 在 以后的学习过程中 我要不断的充实自己 努力的学习 通过这次课程设计 对数 据结构的特点以及存储表示方式的认识有了明显的提高 同时还对在具体应用中选 择合适的数据结构和存储结构的能力有了进一步的提升 熟悉了软件开发的基本过 程 初步掌握了软件开发过程的问题分析 系统设计 程序编码 测试等阶段的基 本任务和技能方法 培养了我的算法设计和算法分析的能力 提高了综合运用所学 的理论知识和方法以及独立分析和解

温馨提示

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

评论

0/150

提交评论