基于Java实现(界面)全国交通咨询模拟系统【100010606】
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
相关文章
- Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring
- 『 高达 购物车案例 』jQuery + Java Script 全功能实现【超详细 代码分析】
- Java mongoDB实现layIM版web即时通讯系统
- [转]java利用AES实现URL的参数加密
- java实现QQ、微信等第三方账号登陆
- 【Java】java的内存浅析
- 基于Java+MySQL实现(Web)医院门诊信息管理系统【100010554】
- 基于Java(Spring Boot)+MySQL实现电商网站【100010419】
- 基于 Java SSM(Spring+SpingMVC+Mybatis)+MySQL 实现(Web)软件测试用例在线评判系统【100010402】
- 基于Java实现飞机大战【100010398】
- 基于Java+Vue+MySQL实现(Web)电影院会员管理系统【100010345】
- 基于Java+SQL Server实现(窗体)清朝名人数据库系统【100010307】
- 基于Java实现(图形界面)进程存储管理系统【100010281】
- 基于Java(Struts2 框架)+Mysql实现(Web)学生成绩管理系统【100010053】
- 基于Java(Jsp+Sevlet)+MySql 实现的(Web)成绩管理系统【100010041】
- 基于Java+Mysql实现的PC端图书管理系统软件【100010031】
- 基于Java+SQL Server2000实现(界面)学生选课管理系统【100010025】
- 关于Java中常用加密/解密方法的实现
- IOS 基于APNS消息推送原理与实现(JAVA后台)
- java cache过期策略两种实现,一个基于list轮询一个基于timer定时
- 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】
- java中接口的定义与实现
- Java实现自定义注解