> # ♻️ 资源
> **大小:** 28.7MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010856**](https://www.yuque.com/sxbn/ks/100010856)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87453197**](https://download.csdn.net/download/s1t16/87453197)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 旅游线路规划
## 一、设计任务的描述
系统目标: 本软件旨在根据旅客的要求设计出行路线并输出,同时系统能模拟旅所在的地点 和状态,目标是为旅客提供能完美出行的计划。处于对不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途的时间尽可能短,出门旅游的游客则希望旅费尽可能省。编制一个全国城市间的交通咨询程序,为旅客提供最优决策的交通咨询。
## 二、功能需求说明及分析
功能需求: 设计最省钱和最少时间的算法及其需要信息的存储:最省钱和最少的算法利用迪 杰斯塔拉算法; 信息先是存储在一个文本文件中,程序可以从中读取并且存放在一个类中。 该程序所做的工作是模拟旅游交通查询,为旅客提供最有决策的交通查询。规定: 再输入城市名称时,直接输入城市的名称(汉字);输入时间时,需要输入一个 整型数据,选择功能时在界面上直接选择。程序的输出信息主要是:最快需要多 少时间才能到达,或者最少需要多少费用才能到达,以及在旅程途中临时改变目 的地时方案也相对发生变化和在规定时间内的最省钱方案。模拟旅游交通查询系 统,能实现现实生活中旅客的各种需求做出相应的程序,能实现选择功能。
1. 城市总数不少于 10 个,即不能过于简单
2. 建立汽车,火车,飞机的航班表 包含沿途到站、票价信息 并且要求两个城市之间不能只有一班车次
3. 旅客的需求包含:起点、中点、途经城市、在某个城市的停留时间、 旅行策略(旅客可以中途改变旅行方案)
4. 旅行策略包含:最少费用:不考虑时间,只需费用最少最少时间:不考虑费用,只需时间最短限时最少费用:在规定的时间内,让费用最少
5. 旅行查询系统以 10s :1h 的速度推进时间轴(非查询状态不计时)
6. 不考虑城市内换乘交通工具所需时间
7. 系统的时间精确到小时
8. 建立日志文件,对旅客状态变化和键入等信息进行记录
9. 旅客在旅途中可更改旅行计划,系统做出相应的操作
10. 用图形绘制地图,并在地图上反映出旅客的旅行过程
## 三、总体方案设计说明
### 开发环境:
版本库:Qt 5.12.2
IDE:Qt Creator 4.8.2
编译器:MinGW 64-bit
系统:Windows 10
### 概要设计:
本系统整体上分为存储系统,编辑列车城市信息以及求最小费用,最短时间,存 储系统运用到数组和类。存储系统分别存储火车,飞机,汽车列次,始发地和终 点站以及需要的费用。最短时间和最小费用使用迪杰斯塔拉算法编程。该算法主要分为三步:1,起始点(V0)与其相邻点的权值(即当前最短路径)。2,求出 当前最短路径中的最小值即是该起始点(V0)与另一点(Vi)的最短路径。3, V0 到 Vi 的距离加上 Vi 到 Vj 的距离小于 V0 到 Vj 则将 V0 到 Vi 的距离加上 Vi 到 Vj 的距离记为 V0 到 Vj 当前最短路径,循环第二,三步。如此得到 V0 到各点的最短路径,进而可以得到最想要的一条。时间复杂度为 O(n2),空间复杂度 O(n)。
### 总体结构:
软件结构包括软件模块和模块间的控制关系和模块组成关系。
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1716425683320-a0ec1c19-dbc4-43bf-b2cf-3289a945c4a5.png#averageHue=%23fffae5&from=url&id=CgPOw&originHeight=390&originWidth=606&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
| 编 号 | 模 块 名 称 | 模 块 标 识 | 模块功能 |
| --- | --- | --- | --- |
| 1 | 输入模块 | Widget | 图形界面输入操作 |
| 2 | 算法以及旅客信息模块 | Traveler | 计算最优规划 |
| 3 | 绘图模块 | Mapwidget | 图形化输出 |
| 4 | 航班表模块 | Schedule | 读入并存储航班表 |
| 5 | 日志模块 | Log | 生成日志文件 |
## 四、数据结构说明和数据字典
数据结构说明:
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1716425683435-45f68f7c-0a04-45c3-9bf4-e9288a8dc6f6.png#averageHue=%23fdfcf4&from=url&id=nMvBv&originHeight=272&originWidth=631&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
Attribute 类包含了一个车次(或者航班)信息,其中有公有成员:
int from: 出发城市
int to: 目的城市
int cost: 花费
int vehicle: 类型(飞机、火车、汽车)
QString num: 车次号(或航班号)
QTime begin: 出发时间
QTime end: 到达时间
一个 Attribute 类的对象就是一个车次(或航班)信息
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1716425683500-3fb7db01-cdd8-4674-aebc-737096403b5e.png#averageHue=%23f1eee5&from=url&id=p4RVB&originHeight=290&originWidth=780&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
Schedule 类包含了一个 multimap 型的 存储城市之间交通工具时刻表的结构
multimap<int,Attribute> database: 所有城市之间交通工具时刻表
![](https://cdn.nlark.com/yuque/0/2024/png/2469055/1716425683601-a71db37c-163a-4d94-87af-caad6d7a65f1.png#averageHue=%23f2f1e9&from=url&id=EQ1tf&originHeight=566&originWidth=974&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
Traveler 类包含了一个旅客的全部信息 私有成员:
bool isChecked 是否途经城市 int id 旅客 id
int strategy 旅行策略 int origin 出发城市 int destination 目的城市
QDateTime start_time 出发时间
QDateTime deadline_time 截止时间(策略三使用) QDateTime used_time 已经过时间
QDateTime total_time 总用时间
std::vector throughCity 途经城市 std::vector get_plan() 得到旅行计划 QDateTime get_city_arrival_datetime(int) 到达城市时间 QDateTime get_city_departure_datetime(int)
离开城市时间
std::vector change_plan(……) 改变旅行计划
公有成员:
std::vector plan 记录最优路径 std::vector time 记录每个城市的到达时间 std::vector dijkstra(……) 迪杰斯特拉算法求策略 一、二的最优路径
void deep_first(……) 递归查找路径
void make_plan(……) 生成旅行计划 void update_adjacents(……) 更新相邻节点的值 QDateTime calculate_time(……) 计算时间 QDateTime total_datetime() 总用时
int min 最小花费 QDateTime mintime 最短时间
Ps:最后增加了对旅客信息保存功能,下次打开将自动显示
将旅客信息保存在 traveler.txt 文件中,不要删除此文件,否则下次启动程 序将无法打开文件。
实现方法:在关闭程序之前将旅客信息保存在 traveler.txt 中,再次打开程 序先读文件 traveler.txt,并将旅客信息显示在屏幕上。
## 五、各模块设计说明
### **1.** Schedule
实现功能:从文件中读入 并 存储 城市之间交通工具时间表 需要对文件中数据类型做处理(例如城市在文
神仙别闹
- 粉丝: 4267
- 资源: 7532
最新资源
- 三相桥式全控整流电路simulink仿真(阻性 阻感性负载) 2021版本
- 基于二阶锥规划的主动配电网最优潮流求解 参考文献:主动配电网多源协同运行优化研究-乔珊 摘要:最优潮流研究在配 电网规划运行 中不可或缺 , 且在大量分布式能源接入 的主动配 电网环境下尤 为重要
- 混合动力汽车性能分析与simulink建模,采用成熟软件架构,利用桌面应用程序接收用户配置,并自动控制MATLAB运行,并将结果返回桌面应用程序进行显示 以每个部件的模型、控制模型、初始化、前 后处
- 基于卷积神经网络CNN的数据回归预测 多输入单输出预测 代码含详细注释,不负责 数据存入Excel,替方便,指标计算有决定系数R2,平均绝对误差MAE,平均相对误差MBE
- 混合储能,simulink模型储能并网,混合储能能量管理 电池与超级电容混合储能并网matlab simulink仿真模型 (1)混合储能采用低通滤波器进行功率分配,可有效抑制系统功率波动,实现母
- STM32低成本MD500E永磁同步,单电阻采样,无感算法方案,高性价比变频器方案 md500e单电阻采样:精简移植了md500e的无感svc部分到f103中,值得研究学习,电子资料,出不 包括
- 多孔集流体模型模拟锌枝晶生长过程,仿真锌离子在电极表面吸附沉积的过程,通过三次电流分布接口,相场接口进行仿真,对比锌枝晶文献可以肉眼可见的清晰模拟出锌表面沉积过程
- 光伏板向蓄电池充电,恒流恒压法 根据网上频搭建的,可以跟着学,内有一些自己的理解注释 2018b
- 企业展示型百度小程序 智能小程序 小程序 模板 源代码下载
- 无电网电压传感器三相PWM整流器,采用磁链方法估算电网相位角度 模型控制器部分全部采用离散化处理,设置成单采样单更新模式,SVPWM调制模式,开关频率固定,使用的是矢量控制技术 该模型SVPWM模
- Matlab仿真:转速闭环转差频率控制异步电动机的矢量控制(付设计说明) 2021b及以上版本
- 永磁同步电机多物理场仿真案例,电磁-谐响应-噪声分析(NVH分析),该案例可以用于学习,具体参数见第一张图
- 自立袋产品品自动装盒并装箱sw22全套技术资料100%好用.zip
- 制作abaqus隧道CD法开挖,CD法开挖讲 解,CD法开挖模型,step by step,CRD法开挖模型,台阶法开挖,环形开挖预留核心土法开挖,模型,讲 解详细
- 考虑充电需求差异性的电动汽车协同充放电调度方法 关键词:充电需求差异性 电动汽车协同充放电 调度 仿真软件: matlab + yalmip +cplex 研究内容:代码提出了一种微电网中电动汽车的协
- FactoryIO自动分拣+堆垛机+入库仿真,PLC学习最佳模型 使用简单的梯形图与SCL语言编写,通俗易懂,写有详细注释,起到抛砖引玉的作用,比较适合有动手能力的入门初学者,和入门学习,程序可以无限
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈