当前位置:网站首页>MFC实现交通图导航系统
MFC实现交通图导航系统
2022-08-01 10:00:00 【_程序设计_】
MFC实现交通图导航系统
以某真实地区为数据源(自己选择),模拟一个类似百度或者高德的交通图导航系统。
背景描述:
伴随人们的生活节奏加快,汽车的数量陡增,由此引发的交通拥挤问题也日益明显。为此,世界各国都开始投入人力物力对交通系统进行研究。面对拥堵的交通,一款智能的交通导航系统能在指导人们出行的同时,在一定程度上也能缓解当前拥挤的交通现状。为了深化同学们对图的学习,本系统通过对基于时间依赖的最短路径查询的研究,设计与实现高效的导航系统,为人们出行提供重要指导。
数据分析:
地图信息:保存在文件中,包括各个地区的基本信息,路线信息等;
交通工具信息:包括运行时间信息、交通工具信息,例如:起始时间、结束时间信息等;
需求分析:
导航系统的基本功能有:实现地图的模拟,向地图中添加、删除、修改、查找地点信息、路线信息,查找起点和终点之间的最优路径。
功能分析
界面设计
a. 界面要求可以进行交互,要求实现图形界面而不是简单的控制台应用,界面要求美观、布局合理,符合用户使用习惯。
b. 界面可以体现出与用户的交互过程。
c. 可视化系统(QT、MFC等),根据交通工具的选择可视化交通路线。
添加、删除、修改、查看地点或者路线信息,并在可视化部分同步显示出来。
选择不同的交通工具,查看起点和终点之间的最优路径,同步显示路径长度,并用特定的颜色把路径标识出来。(交通工具:公交、地铁、公交与地铁混合乘坐)
获取当前系统时间以及目标交通工具的运行时刻表。
实现鼠标选择功能,即用鼠标完成路线信息查看、起点和终点的选择等。
需求分析
语言:C++
框架:MFC(实现交通图的图形化展现)
交通图编辑功能
采用文件存储交通图信息,从易读性考虑,采用文本格式存储数据,数据含每个顶点的信息和每条边的权重信息,另外顶点信息中包含图显示时候的X,Y坐标位置。考虑到能可视化编辑交通图(添加删除顶点和边信息,以及调整顶点的位置,修改顶点和边的信息等),因此需要额外做一个交通图编辑界面,在此界面可以创建新的顶点,创建新的边,以及删除不要的顶点和边,最重要的是支持鼠标选择某个顶点,将该顶点安置到其他位置,所有信息编辑好后,选择编辑菜单的保存功能,会把修改后的交通图信息重新保存到文件。
交通图编辑功能展现

交通图查询功能
读取文件中的图信息,构建邻接矩阵,采用迪杰斯特拉算法计算单源最短路径。考虑到用户界面的友好化设计,因此设计了一个起点的下拉框列表和一个终点的下拉框列表,用户从下拉框列表中选择起点和终点后,再选择按路程或是耗时查询,即可将路径在交通图中高亮显示,同时为了进一步提升用户体验,支持鼠标点击起点,再点击终点,就能高亮显示起点和终点之间的路径。
交通图查询功能展现

源码下载
链接:https://pan.baidu.com/s/1xmkQRFLmCrwWc9EY9qM4Gg?pwd=1111
提取码:1111
边栏推荐
猜你喜欢

VS“无法查找或打开PDB文件”是怎么回事?如何解决

Visualization - Superset installation and deployment

Py之yellowbrick:yellowbrick的简介、安装、使用方法之详细攻略

mysql login in cmd and basic operations of database and table

Custom Types - Enums, Unions

redis

rpm和yum

Meeting OA (Upcoming Meetings & All Meetings)

How to Steal $100 Million from the Perfect Smart Contract

WTM:ASP.NET Core快速开发利器!
随机推荐
gc的意义和触发条件
CTFshow,命令执行:web31
微服务:事务管理
scrapy爬虫框架的使用
堆内存的介绍及应用(含例子)
Introduction and application of heap memory (including examples)
关于#SQL#的问题,如何解决?
世界第4疯狂的科学家,在103岁生日那天去世了
Custom Types - Enums, Unions
mysql login in cmd and basic operations of database and table
常见的API安全缺陷有哪些?
《时代》杂志:元宇宙时代将改变世界
Node's traditional and advanced practices for formatting time (moment)
C language game - minesweeper
2022年7月31日--使用C#迈出第一步--使用C#中的数组和foreach语句来存储和循环访问数据序列
如何从完美的智能合约中窃取 1 亿美元
解决new Thread().Start导致高并发CPU 100%的问题
7/31 训练日志
Go-Excelize API源码阅读(八)——GroupSheets(sheets []string)、UngroupSheets()
node 格式化时间的传统做法与高级做法(moment)