课程设计-交通咨询系统

1. 问题描述

在交通网络非常发达的今天,人们出差、旅游或其他出行时,对于里程和时间等问题比较感兴趣。对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,建立一个交通咨询系统。图终顶点表示城市,边表示城市之间的交通关系。设计一个交通咨询系统,能让旅客咨询从任一个城市到达另外一个城市的最短路径问题。
要求完成以下功能:
(1)以图中顶点表示某一个省(例如湖北省)各市(至少包括10个以上的城市),存放城市的编号、名称、简介等信息;以边表示路径,存放路径长度信息,建立交通网络图的存储结构。
(2)为用户提供图中任何城市有关信息的查询。
(3)为用户提供指定城市的交通查询,即查询指定城市到其他城市之间的最短距离。
(4)为用户提供任意城市的交通查询,即查询任意两个城市之间的一条最短路径。
(5)如果网络公司省内铺设电缆连通所有的城市,请推荐一个成本最低的设计方案。

2.设计要求

程序设计要求:
(1)必须使用C++语言和数据结构知识完成系统设计。
(2)图的存储采用邻接矩阵,类的方式实现。
(3)查询指定城市到其他城市之间的最短距离即单源最短路径使用Dijkstra算法;任意两个城市之间的最短路径采用Floyd算法;电缆设计方案采用Prim最小生成树算法;全部采用成员函数实现。
(4)请大家灵活设计不同的城市,不能出现完全一样的,至少10以上城市,各城市之间的距离估算即可。

代码框架:

#include <iostream>
#include <vector>
#include <string>
#include <climits>
#include <unordered_map>

const int MAX_CITIES = 15;  // 城市数量上限

class TrafficNetwork {
private:
    int cityCount;
    std::vector<std::string> cityNames;
    std::vector<std::vector<int>> adjacencyMatrix;
    std::unordered_map<int, std::string> commentMap;

public:
    TrafficNetwork() {
        cityCount = 0;
        adjacencyMatrix.resize(MAX_CITIES, std::vector<int>(MAX_CITIES, INT_MAX));
    }

    void addCity(std::string cityName, std::string comment) {
        // 添加城市
    }

    void addConnection(int from, int to, int distance) {
        // 添加连接
    }

    void displayCityInfo(int cityIndex) {
        // 显示城市信息
    }

    void dijkstraShortestPath(int source) {
        // 计算Dijkstra最短路径
    }

    void floydShortestPaths() {
        // 计算Floyd最短路径
    }

    void primMinimumSpanningTree() {
        // 计算Prim最小生成树
    }
};

int main() {
    TrafficNetwork network;

    // 添加城市和连接

    int choice;
    int sourceCity;

    do {
        // 交互菜单

        switch (choice) {
        case 1:
            // 显示城市信息
            break;
        case 2:
            // 计算Dijkstra最短路径
            break;
        case 3:
            // 计算Floyd最短路径
            break;
        case 4:
            // 计算Prim最小生成树
            break;
        case 0:
            // 退出
            break;
        default:
            // 无效选择
        }
    } while (choice != 0);

    return 0;
}

3. 测试数据

在这里插入图片描述

4. 运行截图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浔汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值