• 基于C++实现旅行线路设计


    1. 实验内容和实验环境描述

    1.1 实验内容

    城市之间有各种交通工具(汽车、火车和飞机)相连,有些城市之间无法直达,需要途径中转城市。某旅客于某一时刻向系统提出旅行要求。考虑在当前 COVID-19 疫情环境下,各个城市的风险程度不一样,分为低风险、中风险和高风险三种。系统根据风险评估,为该旅客设计一条符合旅行策略的旅行线路并输出;系统能查询当前时刻旅客所处的地点和状态(停留城市/所在交通工具)。

    1.2 环境描述

    • Windows 10 环境 PC 机;
    • Microsoft Visual Studio 2019 集成化开发环境;
    • Qt Creator 4.11.1(Based on Qt 5.14.1) 集成化开发环境;
    • Qt 运行库(Qt 5.14.2 MinGW 32-bit)

    2. 软件设计

    2.1 数据结构

    City 类(city.h):

    class City : public QObject
    {
    public:
        City(string name = "", int number = 0, double risk = 0);
        string name; //城市名
        int number; //城市序号
        QPoint pos; //城市在地图上的位置
        double risk; //城市风险值
        void add_route(); //为该城市添加时刻表(未使用)
        vector everyday_table; //每日时刻表
    
    signals:
    
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Tourist 类(tourist.h):

    class Tourist
    {
    public:
        Tourist(City* A = nullptr, City* B = nullptr, int limit = 0, int number = 0);
        bool enabled; //是否启用
        int number; //旅客序号
        int status; //旅客状态
        int stlimit; //最早出发时间
        int limit; //最晚到达时间
        void plan_route(int time); //为旅客规划路线
        void update_status(int time); //更新旅客信息
        City* start; //出发点
        City* destination; //目的地
        City* nowat; //当前位置
        Route plan; //当前规划路径
        double risk; //当前旅客所承受的风险值
        void dfs(City* at, Route rut, int time); //当前所在位置 路线 当前时间 时间限制
    
    signals:
    
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    Transport 类(transport.h):

    class Transport
    {
    public:
        Transport(class City* A = nullptr, class City* B = nullptr, int st = 0, double risk = 0, int cost = 0);
        int transportKind; //载具种类
        class City* start; //首发站
        class City* destination; //终点站
        int start_time; //出发时间
        double risk; //风险
        int time_cost; //所需时间
    
    signals:
    
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    Route 类(route.h):

    class Route
    {
    public:
        Route();
        vector via;
        vector mid_arrive_time;
        vector mid_again_time;
        int transportKind;
        double risk;
        int start_time; //出发时间
        int time_cost; //下一步到达的时间
    
    signals:
    
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.2 模块结构

    旅行线路设计模块city.h城市类。保存有基本信息和以此城市为起点的时刻表。用于向旅客类提供统一的处理城市信息的结构。
    旅行线路设计模块tourist.h旅客类。保存有基本信息、更新方法和路径规划的算法。
    旅行线路设计模块transport.h时刻表类。保存有基本信息。用于向城市类提供统一的保存时刻表信息的结构。
    旅行线路设计模块route.h路径类。保存有基本信息和沿途所经城市。用于向旅客类提供统一的保存路径信息的结构。
    状态动态查询显示模块mymap.h地图类。用于实现图形化,保存有通过当前信息绘制城市、旅客、交通工具的方法。用于向主窗口提供统一的更新图形化信息的结构。
    主模块和输入输出模块mainwindow.h主窗口。保存有时间推进、处理输入信息、调用旅客更新、调用地图绘制、显示状态信息的方法。

    3. 实验结果分析

    范例中共计 12 个城市,64 项时刻表。路线规划均准确无误,响应迅速,没有遇到算法实现上明显的问题。具体的测试内容另附。

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    C语言入门,用什么编译器比较好?
    ECRS工时分析软件:全面提升生产效率和产能管理的利器
    带头的循环双向链表的简单介绍
    Java接口自动化测试框架系列(一)自动化测试框架
    【C++学习】多态
    计算机网络核心知识之Internet应用服务(超细致)
    无涯教程-JavaScript - IMLOG2函数
    SpringBoot SpringBoot 运维实用篇 2 配置高级 2.3 配置文件4级分类
    自适应AI chatGPT智能聊天创作官网html源码/最新AI创作系统/ChatGPT商业版网站源码
    RocketMQ高性能核心原理与源码架构剖析
  • 原文地址:https://blog.csdn.net/newlw/article/details/126315386