(出行系统数据结构课程设计)出行系统 最优路径、最优费用选择、迪杰特斯拉Dijkstra
源代码
链接:https://pan.baidu.com/s/1EQax2J6dlQ9oR0MuFY-76g
提取码:1234
1.系统功能
维护功能:对站点信息的增加与修改,站点与站点之间路径,费用,时间的修改;
查询功能:显示所有的站点信息,可查询两站点之间的最优路径,最优费用,最优时间,其中一个站点到其它任意一个站点的最优路径,最优费用,最优时间
2.需求分析
2.1为什么需要这个系统?
①在快节奏的当代生活中,有时人们出行需要快速准确地获取出行方案,可是面对不熟悉的城市以及错综复杂的交通系统,人们往往耗费大量时间计算最优的出行方案。②当人们处在陌生的环境中时,对道路交通的不熟悉会增加人们生活的烦恼:当人们着急赶时间时,却不知道哪条路线是最省时间的;当人们想节俭路费时,又不知道哪一条路线是最省钱的。③设计城市之间的交通线路时,传统的纸质版地图不便于观察,给设计增加难度。
2.2希望该系统能完成哪些功能?
①保存已有的城市交通线路系统②更新保存现实中更改的交通线路(新建线路、增加站点等)③计算最优出行方案(路程最短,时间最短,费用最低)
2.3系统为用户带来什么好处?
①系统可以帮助人们出行快速准确地获取出行方案,通过程序计算从各个角度(出行路线,出行路费,出行时间等)计算得出最优方案,有效提高出行效率。②当人们处在陌生的环境中,红顺系统可以帮助给出高效的出行方案,防止潜在危险的发生。③当规划城市之间的交通线路时,系统可以保存已有的线路,并且可以根据现实情况更新保存的交通线路,还可以依据不同的要求给出已有的交通线路方案供参考。
3.数据的设计
4.图结构
5.流程图
6.运行截图(部分截图展示)
7.部分代码
//将图信息保存到文件
void saveFile(pGraph graph, const char* filename) {
FILE* file = fopen(filename, "w");
if (file) {
int index;
int from, to, count = 0;
pVertexList vertexes = &graph->vertexes;
//计算边数
for (from = 0; from < vertexes->len; ++from) {
for (to = 0; to < vertexes->len; ++to) {
if (from < to) {
WEIGHT weight = getEdgeWeight(graph, from, to);
if (weight != INFINITELY_GREAT && weight > 0) {
++count;
}
weight = getEdgeWeight(graph, to, from);
if (weight != INFINITELY_GREAT && weight