• 基于MFC和C++的校园导航系统


    基于MFC和C++的校园导航系统

    基于MFC和C++实现校园导航系统

    项目简介

    设计一款面向广大师生和外来办公或参观人员的校园导航系统,为校外人员来校办事提供便利。
    校园导航系统提供校园内场所信息和路径查询。系统有两类登陆账号,一类是游客,使用该系统进行场所信息功能查询和校内路线查询;一类是管理员,可以使用该系统查询校内路线,可对校园场所和路线编辑。

    学习目标

    一、主要内容:
    开发一个能够创建校园地图、查询校园地图,并能给出校园内两个地点之间的查路线的软件。设计并实现这样一个软件主要是锻炼学生通过数据结构课程设计,进行熟悉图的创建过程、最短路径的计算、字符串、排序等数据结构内容,提高编程能力,为后续课程学习打下坚实基础。
    二、基本要求:
    在这个软件中,要创建一个图,可以在图中增加、修改结点(即地点)和边(即道路),能够查询各个结点,并能够给出两个结点之间的导引路线。此外,地图信息应能存储到一个硬盘文件中,而且具有读取硬盘地图信息文件的功能。
    三、扩展要求:
    在掌握求解最短路径算法的基础上,学习图形化界面设计(例如MFC或者QT),将校园地图信息以图形化呈现,绘制各顶点、边、最短路径。

    需求

    面向游客
    (1)查找到相关场所的位置、信息和功能介绍;
    (2)查询两点之间的最短路径。

    面向管理员
    (1)查询校内路径;
    (2)对校园场所和道路编辑,包括添加和删除场所、道路;修改场所信息(加分项)。

    输入功能
    键盘输入;

    输出功能
    (1)输入两个点,输出最短距离及最短路径;
    (2)可视化地图最短路径显示(加分项)。

    实现思路描述及类之间关系图

    校园导航系统的思想是将地图抽象为一个数据类型“图”,利用最短路算法计算出两位置点的最短路径。
    图可以用邻接表、邻接矩阵存储,最短路算法可以使用Dijkstra算法,Floyd算法,A*算法等。
    数据采集与校园地图测绘;(给出校园地图的拓扑图;数据存储表等)

    语言框架

    语言:C++
    框架:MFC

    程序界面

    界面.png

    管理员功能

    管理员登录后,可以编辑校园地图信息,修改校园地图信息。地图信息采用文件存储,从易读性考虑,采用文本格式存储数据,数据含每个顶点的信息和每条边的权重信息,另外顶点信息中包含图显示时候的X,Y坐标位置。考虑到能可视化编辑交通图(添加删除顶点和边信息,以及调整顶点的位置,修改顶点和边的信息等),因此需要额外做一个校园导航地图编辑界面,在此界面可以创建新的顶点,创建新的边,以及删除不要的顶点和边,最重要的是支持鼠标选择某个顶点,将该顶点安置到其他位置,所有信息编辑好后,选择编辑菜单的保存功能,会把修改后的交通图信息重新保存到文件。

    编辑校园地图信息.gif

    游客功能

    游客登录后,程序自动读取文件中的图信息,构建邻接矩阵,采用迪杰斯特拉算法计算单源最短路径。考虑到用户界面的友好化设计,因此设计了一个起点的下拉框列表和一个终点的下拉框列表,用户从下拉框列表中选择起点和终点后,再选择按路程或是耗时查询,即可将路径在交通图中高亮显示,同时为了进一步提升用户体验,支持鼠标点击起点,再点击终点,就能高亮显示起点和终点之间的路径。

    查询导航地图.gif

    源码传送门

    传送门:https://pan.baidu.com/s/1fy7QBQydoZmJlrUS0pOLUw?pwd=1111

  • 相关阅读:
    玩转UE4/UE5动画系统:UE5的运行时(动态)重定向治好了我的精神内耗
    02 - matlab m_map地学绘图工具基础函数 - m_proj
    [MySQL]视图
    Java:Java 对机器学习和数据科学有好处吗?
    vim编辑器
    2023年地理信息系统与遥感专业就业前景与升学高校排名选择
    0000-0002 UVa227 Puzzles UVa232 Crossword Answers UVA1368 DNA Consensus String
    HBase-15-Phoenix
    【新版】系统架构设计师 - 案例分析 - 架构设计<Web架构>
    flask 插件 Flask-RESTful
  • 原文地址:https://blog.csdn.net/qq_35960743/article/details/126495822