zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于Java实现(界面)全国交通咨询模拟系统【100010606】

JAVA 实现 基于 界面 全国 交通 咨询
2023-09-11 14:17:49 时间

1. 实验内容

全国交通咨询模拟

使用语言:Java语言

编译环境:openJDk-1.8

2. 问题描述

处于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能地短,出门旅游的游客期望旅费尽可能省,而老年旅客则要求中转次数最少。本题目要求编制一个全国城市的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。具体要求如下:

  • 提供对城市信息进行编辑(如:添加或删除)的功能。

  • 城市之间的交通工具是火车。提供对列车时刻表的管理功能(增加,删除,查询,修改)。

  • 提供两种最优决策:最快到达和最省钱到达。

  • 旅途中耗费的总时间应该包括中转站的等候时间。

  • 咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。

3. 需求分析

经过分析,本系统需完成的主要功能如下:

  • 设计城市地图的类
  • 设计站点(有向边)的类
  • 设计实现弗洛伊德算法解决多源最短路径问题
  • 通过文件读取写入修改站点城市班次等信息
  • 设计工具类方法完成时间的计算
  • 设计可视化界面进行交互操作

4. 概要设计

-=ADT=-
{
boolean setURL(String newURL);  //设置操作文件路径
ArrayList<String> getPermulation(int[] arr);	//获取全排列的所有可能
BufferedReader getBr(String vehicle);	//获取对应的BufferedReader
boolean addInfo(String vehicle,String info);	//添加指定信息到指定文件中
boolean deleteInfo(String vehicle,String start,String end);	//删除文件中的信息
String transformTime(int costTime);	//将分钟(整形)转化为x小时x分钟的字符串形式
StringBuilder getPathInfo(String path,String vehicle,String bestChoice,int costInfo);   //获取路径的具体信息,从文件中读取挑选并存入StringBuilder中,并返回StringBuilder
MGraph readInfo(String vehicle);	//从指定文件中读取数据,生成一个MGraph对象并返回
void FinishPath(MGraph mg);	//完成路径
int addWaitTime(MGraph mg,int v,int u,int w);	//添加中转站的等待时间
int getCostTime(String date1,String date2);	//传入两个字符类型的时间,计算出两个时间的差值
}

5. 存储结构

使用邻接矩阵的形式存储图

6. 算法流程图

设置顶点 vi 到顶点 vk 的最短路径已知为 Lik,顶点 vk 到 vj 的最短路径已知为 lkj,顶点 vi 到 vj 的路径为 li,则 vi 到 vj 的最 短路径为: min(Lk+Lkj),Lij), vk 的取值为图中所有顶点,则可获得 vi 到 vj 的最短路径。

至于 vi 到 vk 的最短路径 Lik 或者 vk 到 vj 的最短路径 Lkj,是以同样的方式获得。

7. 算法时间复杂度分析

使用弗洛伊德算法时间复杂度为 O(n3)

8. 调试分析

在有向图的重新构建的时候易出现空指针异常,由于弗洛伊德算法循环量较大,调试时出现问题时需要多点定位寻找错误点,在判断齐之后又出现了以下问题:

【问题一】

现象:时间输出出现错误。

原因:加入额外的时间解析类。例如在 12:00 11:00 中间的时间应该为 23 个小时而非-1 小时或 1 小时,当前后时间差为负数时应 +24 小时而进行计算。并在优化体验中计算的单位为小时和分钟,应注意分钟为 60 进制。

【问题二】

现象:ImageView 组件图片无法加载。

原因:路径文件夹应加载在 out 文件夹下。Fxml 的路径设置和 Java 默认的路径设置不尽相同,Java 中的相对路径默认实现是从工程文件的根目录开始寻址,而 JavaFx 是从当前文件夹通过相对路径寻址。

9. 运行结果及分析

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

在这里插入图片描述

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

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

♻️ 资源

在这里插入图片描述

大小: 802KB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87415705