基于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<class Transport*> everyday_table; //每日时刻表

signals:

};

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:

};

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:

};

Route 类(route.h):

class Route
{
public:
    Route();
    vector<City*> via;
    vector<int> mid_arrive_time;
    vector<int> mid_again_time;
    int transportKind;
    double risk;
    int start_time; //出发时间
    int time_cost; //下一步到达的时间

signals:

};

2.2 模块结构

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

3. 实验结果分析

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值