# ![](Resources/img/main.png) **校园导游系统 Qt5 图形界面版本 **
## **设计流程**
### **问题描述**
* 随着现代旅游业的快速发展,图文声像导游方式和实地口语导游方式都已经不能满足现阶段旅游者的需求,信息化的飞速发展造就了地理信息系统(GIS)和全球定位系统(GPS),促使消费者更多的选择自助游和自驾游等方式出行。而近年来高等院校的发展使得高校也成为了一个景点。如何让游客以最短的时间到达旅游目的地就是我的课程设计所寻求解决的问题。我打算通过最短路径算法结合图像化的表示方法,并结合实际情况以高等院校为例采集所需要的数据,在开发环境下模拟设计**导游咨询系统**,理论上使得游客可以轻松的寻找到最适合自己的旅游线路,并以此为依据合理安排自己的行程。
* 用**无向网**表示校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。
### **设计目标**
* 查询任意景点的相关信息。
* 查询图中任意两个景点间的最短路径。
* 查询图中任意两个景点间的所有路径。
* 增加、删除、更新有关景点和道路的信息。
* 求多个景点的最佳(最短)游览路径。
* 实现通过图形用户界面进行人机交互。
* 实现C++语言对于文件的读写操作。
* 实现其他额外的附加功能。
### **Qt简介**
![](Resources/img/Qt.png)
> Qt 是一个著名的 C++ 应用程序框架。你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件。使用 Qt,在一定程度上你获得的是一个“**一站式**”的解决方案:不再需要研究 STL,不再需要 C++ 的<string>,不再需要到处去找解析 XML、连接数据库、访问网络的各种第三方库,因为 Qt 自己内置了这些技术。
> Qt 和 wxWidgets 一样,也是一个标准的 C++ 库。但是它的语法类似于 Java 的 Swing,十分清晰,而且使用信号槽(signal/slot)机制,让程序看起来很明白——这也是很多人优先选择 Qt 的一个很重要的原因。不过,所谓“成也萧何,败也萧何”。这种机制虽然很清楚,但是它所带来的后果是你需要使用 Qt 的 moc 对程序进行预处理,才能够再使用标准的 make 或者 nmake 进行正常的编译,并且信号槽的调用要比普通的函数调用慢大约一个数量级(Qt 4 文档中说明该数据,但 Qt 5 尚未有官方说明)。Qt 的界面也不是原生风格的,尽管 Qt 使用 style 机制十分巧妙地模拟了原生界面。另外值得一提的是,Qt 不仅仅能够运行在桌面环境中,还可以运行在**嵌入式平台以及手机平台**。
### **算法介绍**
* **迪杰斯特拉算法**
> 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
![](Resources/img/Dijkstra.png)
* **弗洛伊德算法**
> 在计算机科学中,Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。虽然它不返回路径本身的细节,但是可以通过对算法的简单修改来重建路径。该算法的版本也可用于查找关系R的传递闭包,或(与Schulze投票系统相关)在加权图中所有顶点对之间的最宽路径。
![](Resources/img/Floyd.png)
### **流程分析**
* 首先,启动程序,可以有左侧提供了信息录入,信息查询,路径查询以及多景点之间路径查询的功能入口。其中信息录入用来录入景点数据,信息查询用来查询景点的信息,路径查询可以帮助查询两个景点之间最佳的游览路径以及所有路径,多经典查询将这种最佳路径扩展到了多个景点之间。
* 然后,根据不同的功能选项可有不同的进度,本程序提供相对完善的功能来实现这些操作。
![](Resources/img/Progress.png)
### **概要设计**
* **存储景点信息**
* 使用结构体来存储景点信息,每个景点作为一个单独的景点类对象,含有景点编号(也就是唯一标识符),景点名称和景点简介的信息。同时应该使用文件读写操作确保景点信息能够保存在本地并且可供查询。
* 此外,还可以录入景点之间的路径的数据,方便计算最短路径的问题。
* **维护景点信息**
通过一个特定的函数读取存储景点信息的文件,并且可以写入新的信息以及修改信息。
* **单源最短路径**
使用迪杰斯特拉算法可以求单源最短路径问题(不过边的权重需要为正数)。
* **两点之间最短路径**
使用弗洛伊德算法或者迪杰斯特拉算法都可以解决这个问题,具体实现时会有具体的分析。
* **任意两点之间最短路径**
弗洛伊德算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。
* **多景点之间最佳路径**
对于多个景点求最佳路径的问题,可以转化为先到第一个景点,再到第二个景点,最后到最后一个景点的问题,如果途中经过需要经过的某个节点,就将其标记为已访问,最后可以得到一条路径,本质上是对弗洛伊德算法进行改进。
* **图形界面**
使用Qt设计师进行图形界面的开发,同时加入信号与槽可以方便使用C++函数进行调用与对接。
### **编译方式**
* 使用**qmake -project**命令来生成pro工程文件,这时可以看到Qt工程目录中已经生成了*.pro文件,此文件与项目文件夹同名。
![](Resources/img/build1.png)
* 在有些版本的Qt中,需要添加widgets模块。因为源文件中使用到的类都包含在这个模块中,例如:main函数中用到的QApplication类。如果你的Qt版本是Qt4,包含这个模块可能会出错,所以为了保证与Qt4的兼容性,需要添加代码。
![](Resources/img/build2.png)
* 在命令行输入**qmake -工程名.pro**,会自动生成makefile文件以及.stash文件,后续只需要一条命令就可以编译完成。
![](Resources/img/build3.png)
* 命令行输入**make**,g++编译器就会自动完成编译生成最终的二进制文件,然后输入 **./工程名** 就可以在Linux下运行编译好的Qt程序。
### **控制台版本示例**
* **范例地图**
以山东大学软件园校区地图为例,进行简单的校园导游系统测试。
![](Resources/img/map.png)
* **主界面**
![](Resources/img/console.png)
* **查询景点信息**
* 要想录入信息,只需要按照控制台程序提示的操作编号,输入1,再依次输入景点的编号名称以及简介信息即可录入景点信息。例如录入编号为2的教学楼的景点信息,只需要进行图示操作。
* 查询正门景点的景点信息,输入编号1,就可以看到信息。
![](Resources/img/demo1.png)
* **查询路径**
* 以正门景点为例,可以看到在景点1正门与景点2教学楼之间存在一条长度为9的路径,按照提示输入编号3,然后依次输入1 2 9,即可将这条路径录入。
* 在景点1正门与景点2教学楼之间存在多条路径,其中从1->2这条路径是最短的,可以通过查询最短路径的操作来查看�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:设计报告word+项目源码 通过最短路径算法结合图像化的表示方法,并结合实际情况以高等院校为例采集所需要的数据,在开发环境下模拟设计导游咨询系统,理论上使得游客可以轻松的寻找到最适合自己的旅游线路,并以此为依据合理安排自己的行程。 用无向网表示校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。要求能够回答有关景点介绍、游览路径等问题。 详细介绍参考:https://biyezuopin.blog.csdn.net/article/details/123134435?spm=1001.2014.3001.5502
资源推荐
资源详情
资源评论
收起资源包目录
基于QT5的校园导游系统设计与实现.zip (38个子文件)
campus-guide-system
GuideWindow.cpp 40KB
main.cpp 257B
README.md 9KB
Resources
findroad.png 6KB
map.png 866KB
about.png 2KB
searchinfo.png 6KB
auth.jpg 86KB
writeinfo.png 6KB
allroad.png 6KB
img
build2.png 76KB
Progress.png 50KB
gui.png 124KB
demo5.png 123KB
map.png 467KB
Dijkstra.png 13KB
console.png 76KB
demo3.png 129KB
Qt.png 8KB
main.png 2KB
demo1.png 194KB
Floyd.png 71KB
build3.png 11KB
demo4.png 124KB
demo2.png 193KB
build1.png 41KB
multiplaces.png 4KB
main.png 5KB
sdu.png 65KB
map2.png 830KB
main_console.cpp 3KB
Graph.cpp 9KB
LICENSE 34KB
设计报告.docx 1.69MB
Headers
Paint.h 2KB
GuideWindow.h 3KB
Graph.h 2KB
GuideWindow.ui 42KB
共 38 条
- 1
shejizuopin
- 粉丝: 1w+
- 资源: 1300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页