停车场管理问题系统课程设计报告_第1页
停车场管理问题系统课程设计报告_第2页
停车场管理问题系统课程设计报告_第3页
停车场管理问题系统课程设计报告_第4页
停车场管理问题系统课程设计报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录数据结构课程设计目 录第1章 概述- 1 -1.1 停车场管理问题系统简介- 1 -1.2 本课程设计任务及目的- 1 -1.3 本课程设计意义- 1 -第2章 需求分析- 2 -2.1 问题描述- 2 -2.2 基本要求- 2 -2.3 实现思路- 3 -2.4 拓展分析- 3 -第3章 设计思路- 5 -3.1 设计思想- 5 -3.2 概要设计- 5 -3.2.1 栈的抽象数据类型- 5 -3.2.2 链式队列的抽象数据类型- 7 -3.2.3 程序流程图- 8 -3.2.4 程序框图- 10 -第4章 模块划分- 10 -4.1 主要模块- 10 -4.1.1 主程序模块- 10

2、 -4.1.2 栈模块- 10 -4.1.3 列模块- 10 -4.2 模块调用关系- 11 -第5章 调试分析- 13 -第6章 课题概述- 13 -6.1 校园导游咨询系统课题来源- 13 -6.2 程序简介- 13 -第7章 程序分析- 13 -7.1 程序基本要求- 13 -7.2 系统实现简要分析- 13 -7.3 程序内容- 13 -第8章 程序详细设计- 17 -8.1 程序模块- 17 -8.1.1 主函数模块- 17 -8.1.2 查找介绍函数模块- 17 -8.1.3 查找最短路径模块- 18 -8.1.4 退出函数模块- 18 -8.2 程序流程图- 19 -第9章 系统

3、结果图- 18 -第10章 咨询系统使用说明- 20 -第11章 心得体会- 21 -11.1 遇到的问题- 21 -11.2 心得- 21 -11.3 总结- 21 -参考文献- 23 -i第1章 概述第1章 概述1.1 停车场管理问题系统简介 停车场系统旨在建立一个方便停车、计费的系统。程序能输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和他在停车场停留的时间。1.2 本课程设计任务及目的 停车场是一个可停放 n 辆汽车的狭长通道,且只有一个大门可供汽车进出。停车场 内已停了 n 辆汽车,后来的汽车只能在门外的便道上等候,一旦有车开走,排在通道上的第一辆车

4、即可开入;当停车场内每辆车要离开时,在它之后进入的车辆必须先退出停 车场为其让路,待该辆车开出大门,其他车辆再按原次序进入停车场。为停车场编写按上述要求进行管理的模拟程序。1.3 本课程设计意义 课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让个人对所学的课 程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求个人在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程

5、序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 -1-第2章 需求分析第2章 需求分析2.1 问题描述 停车场是一条可以停放 n 辆车的狭窄通道,且只有一个大门汽车停放安到达时间的先后依次由北向南排列(大门在最南端,最先到达的第一辆车停在最北端)若停车场已经停满 n 辆车,后来的汽车在便道上等候,一旦有车开走,排在便道上的第一辆车可以开入;当停车场的某辆车要离开时,停在他后面的车要先后退为他让路,等它开出后其他车在按照原次序开入车场,每两停在车场的车要安时间长短缴费。要求:以栈模拟停车场,以队列车场外的便道,按照从终端输入的数据序列进行模拟管理。每一组数据包括三个数据

6、项:汽车“到达”或“离去”信 息、汽车牌照号码、以及到达或离去的时刻。对每一组数据进行操作后的信息为:若是车辆到达,则输出汽车在停车场的内或便道上的位置:若是车辆离去则输出汽车在停车场内的停留时 间和应缴纳的费用(在便道上的停留时间不收费)。栈以顺序结构实现,队列以链表结构实现。2.2 基本要求 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项;汽车“到达”或“离去”信息、汽车牌照号码及到达或离去 的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内 或便道上的停车位置;若是车辆离去,则输出汽车在停车场

7、内停留的时间和应交纳的费用(在便道上停留的时间不收费) 。栈以顺序结构实现,队列以链表结构实现。测试数据: 设 n=2, 输入数据为: (a,1,5),(a,2,10),(d,1,15)(a,3,20),(a,4,25),(a,5,30),(d,2,35),(d,4,40),(e,0,0)。其 中:a表示到达(arrival);d表示离去(departure);e表示输出(end)。2.3 实现思路 需要另设一个栈,临时停放为离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。-3-第2章 需求分析2.4 拓展

8、分析 (1)用户到来时,选择停车,并输入车牌号和当前时间,程序实现:计算并输出停车位置 (2)用户离开时,选择离开,同样输入车牌号和当前时间,程序实现:计算所要付的费用,若便道上有车,将第一位置的车辆停在车位上 (3)在此过程中,不断 保存记录,通过重载运算符实现,为程序下次运行提供必要的数据 (4)在程序开始运行时,首先读取文件中的记录,为程序运行提供必要的历史数据记录。-3-第2章 需求分析 (5)程序中还提供退出操作:图21 停车场俯瞰图第3章 设计思路第3章 设计思路3.1 设计思想 由于停车场是一个狭窄通道,而且只有一个大门可供汽车进出,问题要求汽车停车场内按车辆到达时间的先后顺序,

9、依次由北向南排列。由此很容易联想到数据结构中的堆栈模型,因此可首先设计一个堆栈,以堆栈来模拟停车场,我设计用顺序存储结构来存储停车场内的车辆信息,并给车辆按进栈顺序编号,当停车场内某辆车要离开时,在他之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入停车场。这是个一退一进的过程,而且让道的汽车必须保持原有的先后顺序,因此可再设计一个堆栈,以之来暂时存放为出站汽车暂时让道的汽车。当停车场满后,继续进来的汽车需要停放在停车场旁边的便道上等候,若停车场有汽车开走,则按排队的先后顺序依次进站,最先进入便道的汽车将会最先进入停车场,这完全是一个先进先出模型,因此可设计一个队

10、列来模拟便道,队列中的数据元素设计成汽车的车牌号,并以链表的形式存储。另外,停车场根据汽车在停车场内停放的总时长来收费的,在便道上的时间不计费,因此必须记录车辆进入停车场时的时间和车辆离开停车场时的时间,然后计算、显示费用情况。 3.2 概要设计3.2.1 栈的抽象数据类型adt stack 数据对象:d=aiaicharset,i=1,2,,n,n=0 数据关系:r1=ai-1,aiai-1,aid,i=2,n 基本操作: initstack(&s) 操作结果:构造一个空栈 s。destroystack(&s) 初始条件:栈 s 已经存在。 操作结果:操作结果:销毁栈 s。 claersta

11、ck(&s) 初始条件:栈 s 已经存在。 操作结果:将 s 清空为空栈。 stacklength(&s) 初始条件:栈 s 已经存在。 操作结果:返回栈 s 的长度。 -5-经济管理学院本科课程设计论文stackempty(&s) 初始条件:栈 s 已经存在。 操作结果:若 s 为空栈,则返 回 ture,否则返回 false。gettop(s,&e) 初始条件:栈 s 已经存在。 操作结果:若栈 s 不空,则以 e 返回栈顶元素。 push(&s,e) 初始条件:栈 s 已经存在。 操作结果:在栈 s 的栈顶插入新的栈顶元素 e。 pop(&s,&e) 初始条件:栈 s 已经存在。 操作结

12、果:删除 s 的栈顶元素,并以 e 返回其值。 stacktraverse(s,visit() 初始条件:栈 s 已经存在。 操作结果:从栈底到栈顶依次对 s 中的每个元素调用函数 visit( )。 adt stack -6-第3章 设计思路3.2.2 链式队列的抽象数据类型typedef struct qnode qelemtype data; struct qnode next; qnode,queueptr; typedef struct queueptr front; 队头指针 queueptr rear; 队尾指针 adt queue 数据对象:d=aiaielemset,i=1,

13、2,n,n=0 数据关系:r1=ai-1,aiai-1,aid,i=2,n 约定中端为队列头,后端为队列尾。 基本操作: initqueue(&q) 操作结果:构造一个空队列 q。 destroyqueue(&q) 初始条件:队列 q 已经存在。 操作结果:队列 q 被销毁,不再存在。 clearqueue(&q) 初始条件:队列 q 已经存在。 操作结果:将 q 清为空队列。 queueempty(q) 初始条件:队列 q 已经存在。 操作结果:若 q 为空队列,则返回 true,否则 false。 queuelength(q) 初始条件:队列 q 已经存在。 操作结果:返回 q 的元素个数

14、,即队列的长度。 gethead(q,&e) 初始条件:q 为非空队列。 操作结果:用 e 返回的 e 队头元素。 -7-经济管理学院本科课程设计论文enqueue(&q,e) 初始条件:队列 q 已经存在。 操作结果:插入元素 e 为 q 的新的队尾元素。 dequeue(&q,&e) 初始条件:q 为非空队列。 操作结果:删除 q 的队头元素,并用 e 返回其值。 queuetraverse(q,visit() 初始条件:q 已经存在且非空。 操作结果:从队头到队尾,依次对 q 的每个数据元素调用函数 visit()。一旦 visit()失败, 则操作失败。 adt queue 3.2.3

15、 程序流程图图31 程序流程图-8-第3章 设计思路3.2.4 程序框图图32 程序流程-9-第4章 模块划分第4章 模块划分第4章 模块划分第4章 模块划分4.1 主要模块4.1.1 主程序模块 main() 初始化 while(重复条件) 接受命令; switch(调用条件) case 调用条件a 到达处理;break; case 调用条件d 离开处理;break; case 调用条件e 退出处理; 4.1.2 栈模块2 个栈模块-实现栈抽象数据类型4.1.3 列模块 队列模块-实现队列抽象数据类型 4.2 模块调用关系图41 模块调用关系栈模块 1-模拟停车场 栈模块 2-模拟倒车场 队

16、列模块-模拟车道-11-经济管理学院本科课程设计论文第5章 调试分析图51 主窗口界面图52 停车界面-12-第5章 调试分析图53 出车界面图54 退出程序界面以上为系统运行结果图,主要包括:主窗口界面、停车界面、出车界面、退出程序界面。个界面显示的均为正确的结果图。-13-经济管理学院本科课程设计论文第6章 课题概述6.1 校园导游咨询系统课题来源 校园导游咨询系统,为来访的客人提供各种信息服务。同时现代快节奏的生活使得都市人越来越渴望亲近自然,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径就成了一个很重要的问题。所以,该系统旨在解决这一

17、问题。6.2 程序简介 本设计基于图的结构,创建一个无向图,针对游客的实际需求,将学校景点编号、名称、介绍等信息放入到图的顶点当中并保存在景点文本文件当中,将两个景点的编号和它们之间的距离当作权值也保存到权值文本文件当中,利用迪克斯特拉算法来求从一个景点到另一个景点的最短距离,利用 strcmp();函数来查找景点,并显示出它的信息,从而解决了要查找景点信息和景点之间的最短路径的问题,最后按照显示屏上的提示进行相关的操作。-14-第7章 程序分析第7章 程序分析7.1 程序基本要求 (1)设计你的学校的校园平面图,所含景点不少于10个。以图中顶点内表示学校各景点,存放景点名称、代号、简介等信息

18、;以边表示路径,存容放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。7.2 系统实现简要分析 实现提示:一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。顶点和边均含有相关信息。7.3 程序内容 依据课程设计的要求,利用一个无向图的结构,将景点当作图的顶点,将景点之间的距离当作权值来储存,然后根据游客自己的需求,按照显示屏上的提示来进行查找景点介绍,查找两个景点之间的最短距离,退出程序等基本操作。-15-经济管理学院本科课程设计论文第8章 程序详细设计8.1 程序模块

19、8.1.1 主函数模块 主函数是一个程序的主体,当我们要进行我们所需要的操作的时候我们就要根据主函数中的显示信息和它给我们的相关的提示信息来进行所需要的操作,因此在这次的程序实现的过程当中,利用一个 for();循环语句。设置主函数为了便于其在后面的操作过程当中能够快速方便的找到其需要查找的景点的名称。而后就是一个switch();的选择函数,提供查找景点信息,查找两个景点之间的最短距离和退出的相关的选择操作而后进入到每一个操作界面当中,从而实现所需要的功能。循环语句:for(int k = 0; k g.vexnum; k+) if(k - 5 = 0) coutendl; couttg.v

20、; else couttg.; 将景点的名称打印在显示屏上,最后是一个switch();的选择语句,提示游客根据选择来进入到相关的操作界面实现程序的基本功能。8.1.2 查找介绍函数模块 当游客选择了要查找景点的信息的介绍这一项功能的时候,程序就会调用disintroduction(g);函数进入到查找景点的介绍的界面,当游客输入了需要查找的景点的名称的时候,程序利用 for();循环语句来查找是否有这个景点 for(int i=0;ig.vexnum;i+) int m = strcmp(g.,n1); if(m=0) v1=i; c

21、ount1=count1+1; 8.1.3 查找最短路径模块 当游客选择了要查找两个景点之间的最短距离这一项功能的时候,程序就会调dispath(g);函数进入到查找两个景点之间的最短距离的操作界面当中,当游客输入了两个景点的名称过后,程序会调用 strcmp();函数查看是否有这两个景点,如果有则返回他们各自的编号,并调用shortpath_dij(g,v1,v2);函数进入到查找最短路径问题的程序当中。 (1)假设用带权的邻接矩阵 arcs 来表示带权的有向图,arcsij表示(vi,vj)上的权值。若(vi,vj)不存在,则置 arcsij为无穷大。s为已找到从v 出发的最短路径的终点集

22、合,它的初始状态为空集。那么,从v出发到图上其余各个定点vi可能到达的最短路径长度的初始值为:di = arcsvi; (2)选择 vj,使得 dj = mindi | vi v svj 就是当前求得的一条从v出发的最短路径的终点。令 s = s j;(3)修改从v出发到集合 v s 上任意顶点vk可到达的最短路径的长度。如果dj + arcsjk dk则修改dk为 dk = dj+arcsjk; (4)重复操作(2)、(3)共 n 1 次,由此求得从v到图上其余各个顶点的最短路径是依路径长度递增的序列。从而求得了从一个景点到另一个景点的最短路径的问题。 8.1.4 退出函数模块 对于退出函数

23、,当游客选择了退出这一个操作的时候,程序就会调用 exit(); 函数从而进入到退出函数的界面void exit() /退出 cout欢迎下次继续使用!endl; exit(0); 程序会提示游客感谢使用,欢迎下次继续使用的提示语,然后调用exit(0);函数实现退出主函数的功能。8.2 程序流程图图81 程序流程图-16-第9章 系统结果图第9章 系统结果图图91 菜单图92 查找景点信息图93 查找两个景点之间最短的距离-19-经济管理学院本科课程设计论文图94 退出界面以上图片为系统运行的正确结果图,从图片中可知查找的景点相关信息、任意两景点间的最短距离和最短路径。-20-第10章 咨询

24、系统使用说明第10章 咨询系统使用说明对于第一次使用软件的游客来说,要让他们在第一次用的时候就能够快速轻松的掌握软件的用法,因此在程序一开始运行的时候,我们要进行如下的操作: (1) 首先我会给游客提供一个可视化的菜单操作界面,在显示屏上提示用户其可以进行的操作和他能够查询的景点的名称。 (2) 用户输入了“i”后,进入到查询景点简介的界面,当用户输入了想要查找的景点的名称过后就会显示出这个景点的介绍来。 (3) 当用户输入了“p”后,进入到查询最短路径的界面,然后依据提示用 户依次输入两个景点的名称,程序就会将这两个景点的最短路径给我们表示出来 并显示出最短路径是多少。 (4) 当用户输入了

25、“q”后,进入到退出界面,这是系统就会提示用户程序 将要运行结束,欢迎下次继续使用的提示语,最后按下任意键程序结束。经济管理学院本科课程设计论文第11章 心得体会11.1 遇到的问题(1) 由于是第一次接触这种形式的课程设计,设计之初却是费了不少功夫,尤其是在编写源代码及其更改和调试上,使程序调试时要花费不少时间。 (2) 有的程序可能有些代码重复出现,显得程序的有些代码看起来很杂乱。但其中最主要的问题是逻辑错误导致程序死循环或不循环或循环一小部分,但是编译时却没有错误,就是没有正确的输出答案。类似的还有出现死循环的问题,经细心改正后才把调试工作做完。 (3) 由于我编写创建校园图的程序时,不

26、会编写打开一个文本的程序,所以创建校园图的运行结果显示的是“打开文本错误”。经过修改之后,才最终显示出正确的界面。 11.2 心得 经过几天的准备我了解数据结构在编写比较复杂的程序的重要作用,对数据结构中定义无向图和创建无向图的理解更加深刻,完全理解了迪克斯特拉算法的原理,但对于其算法的程序编写 还是不太明白,学会了在编写几百行程序时如何查找错误,如何更改出现的错误。经过这段时间的课设准备,感觉自己编程水平有了较大的提高,同时我也发现自己在做比较综合型的程序时,经常受阻,经常出现一些低级失误。我感觉主要原因是自己平时动手写程序太少。以后要加紧练习,继续深入地去学习各种算法,不断提高自己的水平。这次的课程设计,加深了我对数据结构、c 语言和 c+语言的理解,这也是我第一次面对实际问题

温馨提示

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

评论

0/150

提交评论