欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 基于QT(C++)+MySQL实现的旅行模拟器

基于QT(C++)+MySQL实现的旅行模拟器

2025/3/17 11:52:13 来源:https://blog.csdn.net/s1t16/article/details/144749750  浏览:    关键词:基于QT(C++)+MySQL实现的旅行模拟器

基于Qt实现的旅行模拟器

一、设计任务的描述

城市之间有三种交通工具(汽车、火车和飞机)相连,某旅客于某一时刻向系统提出旅行要求,系统根据该旅客的要求为其设计一条旅行线路并输出;系统能查询当前时刻旅客所处的地点和状态(停留城市/所在交通工具)。

二、功能需求说明及分析

  • 城市总数不少于10个(13个)
  • 建立汽车、火车和飞机的时刻表(航班表)
    • 有沿途到站及票价信息
    • 不能太简单(不能总只是1班车次相连)
  • 旅客的要求包括:起点、终点、途经某些城市和旅行策略
  • 旅行策略有:
    • 最少费用策略:无时间限制,费用最少即可
    • 最少时间策略:无费用限制,时间最少即可
    • 限时最少费用策略:在规定的时间内所需费用最省

三、总体方案设计说明

软件开发环境、总体结构和模块划分等。

Windows下开发,使用Qt Creator作为IDE,MySQL数据库进行时刻表调用,C++语言编程。

目前为单一窗口,如果需要显示地图,可以增加一个窗口。

模块:

  • Main:调用其他各个模块
  • Widget:主窗口,其上有输入信息和输出信息
  • Route:地图窗口,可以显示地图以及当前的位置,预计路径行程等
  • Passenger:储存输入的信息,当前状态,计算后的预计行程等
  • LogFile:记录日志
  • TimeTable:进行数据库的访问,将访问数据库封装成该类的方法

应该还有一个计时器来模拟时间流动。

四、数据结构说明和数据字典

struct Status//保存当前状态
{char transport;//当前交通工具QString curCity;//当前城市QString nextMove;//下一步
};class Passenger//当前乘客的信息
{
public:Passenger();enum POLICY{minTime,minCost,timeLimitCost};void setStart(QString s);QString getStart();void setEnd(QString e);QString getEnd();void setPolicy(int p);int getPolicy();void setLimitTime(double L);double getLimitTime();void setWayCities(QList<QPair<QString, double>> W);QList<QPair<QString, double>> getWayCities();void setSequence(bool checked);bool isSequence();private:QString start;//起点QString end;//终点int policy;//策略double limitTime;//限时最低价格的限制时间QList<QPair<QString, double>> wayCities;//途经城市bool sequence;//是否有顺序Status curStatus;//暂时打算用作储存当前状态
};
struct EdgeType {int cost = A_BIG_INT;
};//邻接矩阵
class Graph //
{
public:Graph();void CreateGraph_MinCost();//根据数据库建立最低价格的矩阵int Dijkstra(QString start_city, QString end_city, vector<QString> &out); //迪杰斯特拉求最短路径int LeastCost(QString start_city, QString end_city, vector<QString> &mid_city, int isOrdered, vector<QString> &rout); //求总路径private:vector<QString> vertex;//城市名表EdgeType arc_MinCost[100][100];//邻接矩阵,可看作边表int numVertex;//图中当前的顶点数int numEdge; //图中当前的边数
};struct Info//数据库中一条数据
{QString trainnumber;QString departcity;QString arrivecity;QTime departtime;QTime arrivetime;int price;int id;
};class TimeTable
{
public:TimeTable();~TimeTable();static int getMinPrice(QString start, QString goal); //根据起点终点从数据库中寻找最少价格static Info getInfo_MinCost(QString start, QString goal); //根据起点终点从数据库中提取最少价格的那一条数据
private:QSqlDatabase db;static QMap<QString,QString> full2Short; //全名映射到简称
};

五、各模块设计说明

在widget窗口中输入,即时设定好passenger的成员变量,点击开始后,执行算法。

最少费用:价格作为有向网的权值,利用迪杰斯特拉算法设计出路线。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词