基于Java语言实现全国交通咨询模拟

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. 运行结果及分析

9. 参考文献

梁勇著,戴开宇译,《Java 语言程序设计与数据结构》(进阶篇)(原书第 11 版),机械工业出版社,2018

猜你喜欢

转载自blog.csdn.net/newlw/article/details/124925851