校园导游系统_C语言实现_Dijkstra(迪杰斯特拉算法)_数据结构
西京学院导游系统
摘要
要完成对整个导游图系统的功能实现,需要对每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现和需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行,有以下设计思路:
(1)结合本校的实际情况,选出17个景点;
(2)人为手工为选出17个景点赋上相关信息(名称、代号、简介信息、以及路径等等);
(3)根据选出来的17个景点用邻接矩阵存储西京校园图。
(4)依照景点的相关信息创建西京校园图。
(5)把纸质上的内容,利用Devcpp编程语言编写查找景点相关信息的程序。
(6)根据人为赋值的路径,利用迪杰斯特拉算法计算任意两点之间的最短路径。
(7)综上所述,用一个主函数把这些末班合成,生产一个菜单界面呈现在用户面前。
关键字:图,最短路径,增删改,迪杰斯特拉算法。
目录
1 详细设计
1.1 图的初始化
辅助数组dist[n]:元素dist[i]表示当前找到的从源点到终点vi的最短路径的长度。
1.2 求最短路径
基于本程序中图的存储是邻接矩阵结构存储的图结构,因而采用适合该存储结构的迪杰斯特拉算法用于解决最短路径的问题。
迪杰斯特拉提出了一个按路径长度递增的持续产生最短路径的算法、其基本思想是:设置一个集合S存放已找到最短路径的顶点,S的初始状态只包含源点v,对于vi∈V-S,假设从源点v到vi的有向边为最短路径。以后每求得一条最短路径v,……vk,就将vk加入集合S中,并将路径v,……vk,vi,与原来的假设相比较,取路径长度较小者为最短路径。重复上述过程,直到集合V中全部顶点加入到集合S中。
1.3 迪杰斯特拉算法在课题中的应用
1.4 总体函数实现设计模块图
用此图表示我们组对西京学院导游图的准备流程图设计过程,我们前期建立一些基本函数,后期再进行所有简单函数的整合,从而使得整个系统的建立成功。
2 设计结果及分析
2.1 设计系统功能
1.输出所有经典及其介绍
2.查询某一景点及其介绍
3.增加一个景点
4.删除一个景点
5.更新一个景点
6.增加一条路
7.删除一条路
8.更新一条路
9.查询某一景点到其他所有景点的最短路径
10.查询某两个景点之间的最短路径
11.查看所有景点及其介绍
2.2 调试结果
2.3 两景点之间最短路径测试
本功能模块要求按照在景点信息列表中提示的信息用户输入起点编号和终点编号后输出最短路径,经测试后该功能能够实现,没有任何错误。测试结果如下图所示:
3 收获与体会
通过6天30课时的数据结构课程设计实训,我们小组学习到了好多东西。期间的学习准备以及这一段时间对课程设计的学习开发,校园导游系统已经基本完成,能够实现系统所要求的基本功能。完成后的系统能够根据用户的输入实现一系列查询功能,根据管理人员的输入完成添加、删除、修改等功能。俗话说“万事开头难”,我们小组在程序设计过程中遇到了很多的困难,但我们不惧艰难,依然一路向前的克服了困难。
我们在制作校园导游系统的过程中遇到了许多的问题,例如:
1.在绘制校园地图中,我们无法在VC++中得到直线以及圆形图案。
2.增加一个景点会导致图中的路线改变,无法得到理想地图。
3.删除一个景点同样会导致图中的路线改变,无法得到理想地图。
但经过我们小组的不懈努力,参考不同的文献,查阅不同的资料。我们成功的想出了解决这些问题的办法。
1.当我们无法在VC++中绘制直线和圆形图案时,我们忽略了图形库的安装,安装图形库后,顺利的解决了这一问题。
2.当增加或删除一个景点导致图中的路线改变时,应采用再次遍历,得到增加或删除后的地图。
心得:数据结构是一门实践和理论很强的学科,我们不能忽略一些微小的知识点,不能眼高手低,必须在掌握理论的同时加强上机实验操作。
以上是我们小组对于本次实验课程设计中遇到的问题以及解决办法,最终从中获得了一些心得。
组长靳文杰带领大家了所有头文件的书写和大量子函数的书写,运行中最短路径函数调试出现了一部分问题,回到宿舍后,小组在群聊中相互讨论,最终通过组长靳文杰的不懈努力和小组成员的互相协作,最终最短路径调试成功。
体会:实验课程不仅仅是一门课程,他更考验团队合作能力和动手能力,以及理论知识的发挥,不是一个人可以完成的,需要通过大家的努力去完成,在本次实验中我们小组增强了团队凝聚力,始终信服,只要大家一起努力,没有克服不了的困难。上机实习是对学生全面综合素质进行训练的一种最基本的方法,是与课堂听讲、自学和练习相辅相成的、必不可少的一个教学环节。上机实习一方面能使书本上的知识变“活”,起到深化理解和灵活掌握教学内容的目的;另一方面,上机实习是对学生软件设计的综合能力的训练,包括问题分析,总体结构设计,程序设计基本技能和技巧的训练。还有更重要的一点是:机器是比任何教师更严厉的检查者。因此,在“数据结构”的学习过程中,必须严格按照老师的要求,主动地、积极地、认真地做好每一个实验,以不断提高自己的编程能力与专业素质。
4 参考文献
严蔚敏,吴伟民,数据结构(c语言版),北京:清华大学出版社,1997
李云清,杨庆红 揭安全数据结构(c语言版)(课本)