C++实现的简易校园导览系统

本文介绍了一个C++编写的校园导览系统,使用Dijkstra算法查找最短路径,支持地点和路径的管理。系统提供地点显示、最短路径查询、地点及路径的增删改功能,以及管理员与用户界面,适用于校园导航需求。
摘要由CSDN通过智能技术生成

在校园中找到从一点到另一点的最短路径对于许多学生和访客来说是一个常见的需求。本文介绍了一个使用C++编写的简易校园导览系统,该系统能够提供地点信息、查询最短路径,并允许管理员对地点和路径信息进行管理。

系统概述

该系统的核心功能包括:

  • 显示所有地点:展示校园内所有可导航的地点及其描述。
  • 查询最短路径:使用Dijkstra算法计算并显示两地点之间的最短路径。
  • 地点管理:允许管理员添加、删除或修改地点信息。
  • 路径管理:允许管理员添加、删除或修改路径信息。

关键数据结构

系统使用了几个关键的数据结构:

  • 地点(Place):包含地点的ID、名称和描述。
  • 边(Edge):表示两个地点之间的路径,包含起始地点、目的地点和路径长度。
  • 节点(Node):用于Dijkstra算法中,包含地点名称、到该点的当前最短距离和前一个节点的名称。

功能实现

1. 地点和路径的存储

系统通过读取data.txtmap.txt文件来加载地点和路径信息。这些信息分别存储在verticesedges映射中,其中vertices映射将地点ID映射到地点信息,edges映射将地点名称映射到一系列边。

2. 最短路径查询

使用Dijkstra算法来寻找最短路径。该算法从起始点开始,逐步扩展到达其他所有点的最短路径。算法使用优先队列来保持未访问节点的顺序,以确保每次都处理当前距离最短的节点。

3. 地点和路径的管理

系统提供了一系列函数来管理地点和路径,包括添加、删除和修改地点(addPlacedeletePlacemodifyPlace)和路径(addEdgedeleteEdgemodifyEdge)。修改操作后,可以通过调用savePlacesToFilesaveEdgesToFile函数将更新后的信息保存回文件。

管理员和用户界面

系统通过在主函数中调用chooseRole函数来区分管理员和普通用户。管理员有权访问地点和路径管理功能,而普通用户只能查询地点和最短路径。系统通过简单的文本菜单来提供交互界面。

安全性考虑

为了简化,系统中的管理员密码直接硬编码在chooseRole函数中。在实际应用中,这种做法可能存在安全风险,应使用更安全的认证机制。

结论

该简易校园导览系统展示了如何在C++中实现地点管理、路径查询和数据持久化的基本功能。通过优化和扩展,该系统可以成为校园导航和信息服务的有力工具。

#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <vector>
#include <queue>
#include <climits>
#include <stack>

using namespace std;

// 地点结构体,包含地点的ID、名称和描述
struct Place {
    int id;
    string name;
    string description;
};
// 边的结构体,包含起始地点、目的地点和路径长度
struct Edge {
    string from;
    string to;
    int weight;
};
// 节点结构体,用于Dijkstra算法
struct Node {
    string name;
    int dist;
    string prev;
    bool operator<(const Node& other) const { 
        return dist > other.dist; 
    }
};

map<int, Place> vertices; // 保存所有地点的映射
map<string, vector<Edge>> edges; // 保存所有边的映射
// 从data.txt文件中加载所有地点
void loadPlaces() {
    ifstream file("data.txt");
    if(!file) {
        cout << "无法打开文件!&
【摘要】西南科技大学抓住西部大开发和绵阳科技城建设的历史机遇,践行“厚德、博学、笃行、创新”校训,建设出一座美丽的校园。为此通过对《数据结构》这一课程的应用,用图的模型对学校景点抽象。用邻接矩阵存储方法和狄克斯特拉算法及图的遍历实现校园导游系统的模拟。此系统七个功能:浏览学校景点、查看单个景点信息、查看校园地图、导游推荐、查两景点最短路线、查两景点所有景点、退出系统。 目 录 一、问题描述及设计思路..............................................3 二、详细设计过程....................................................3 2.1设计校园平面图...............................................3 2.1.1景点分析.......................................................4 2.1.2平面图.........................................................4 2.2实现景点信息查询.............................................4 2.2.1景点存储.......................................................5 2.2.2景点信息查询功能实现...........................................5 2.3图实现路径查询...............................................5 2.3.1图的建立.......................................................5 2.3.2最短路径实现...................................................6 2.3.3两点间所有路径.................................................8 2.3.4路径查找设计结果...............................................8 三、结论体会.......................................................11 四、附录...........................................................12 4.1.1Mai.cpp.......................................................124.1.3Sight.h.......................................................13 4.1.2G.h...........................................................15 五、参考文献.......................................................20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值