首页 > 其他 > 详细

北京地铁出行路线代码分析

时间:2019-10-15 01:11:56      阅读:142      评论:0      收藏:0      [点我收藏+]

github代码:https://github.com/udontno/subway

一.类的分析

  我共使用了5个类

技术分享图片

 

 

   ①Calculatioin类:该类主要进行对数据的计算,根据题意,需要求最短路径,所以我采用的是Dijkstra算法,我查阅相关资料得知,Dijkstra算法重要的有三个步骤

    1.首先找所有相邻点,在这个函数中,遍历所有的路线,生成一个邻居节点的列表

public static List<Station> getNeighbor(Station station){}

    2.然后计算最小权值,找出下一个要分析的节点,每次循环遍历距离最小的未被遍历过的节点

private static Station getNextStation() 

    3.最后利用已知条件调用迪杰斯特拉算法进行求解

public static ResultRoute calculate(Station startsta, Station endsta)

  ②ResultRoute类:该类用于进行对结果路线的操作,有如下几个域,同时对应的设置了get和set方法

private Station startsta;// 所求路线起始站
private Station endsta;// 所求路线终点站
private int step = 0;// 设置初始步长为0,然后每次加一个步长(由于题意不考虑距离,则以步数计算路程)
private List<Station> route = new ArrayList<>();// 所经站点的集合

  ③Rwfile类:该类用于进行文件的写入读出操作以及配合Dijkstra算法执行的相应函数

public static void readTXT(){}// 从文本文件中读取输入
public static String getLinename(String s) {}// 遍历subwayCode,找到与线路代码相对应的线路名
public static String getLinecode(String s) {}// 遍历subwayCode,找到与线路相对应的代码
public static ArrayList<Station> getStaline(String lineStr, String linename){}// 用线路名得到路线的站点
public static String writeLine(String linename){}// 将结果逐行写入文件

  ④Station类:该类主要实现对站点的操作,有如下几个域,同时对应的设置了get和set方法

private String staname;// 站点名称
private String staline;// 站点所在线路 
private List<Station> neighbor = new ArrayList<>();// 站点的邻居节点

  ⑤subway类:该类要实现对命令行输入的判断并跳转到相应操作

if (args[0].equals("-map"))
else if (args[0].equals("-a"))
else if (args[0].equals("-b"))
else

 

二.文本文档格式

  subway.txt的格式如下:

  技术分享图片

  ……此处省略部分路线……

 

 

  技术分享图片 

 

   技术分享图片

 

 

 三.实际测试

  ①单独运行

  技术分享图片

  ②读取线路

  技术分享图片

  ③同一线路上的两个站点

  技术分享图片

 

 

   技术分享图片

  技术分享图片

  

  ④需要转线

  技术分享图片

 

   技术分享图片

 

 

   ⑤起始站与终点站为同一站报错

  技术分享图片

  ⑥参数输入错误报错

  技术分享图片

 

 四.总结

  这次个人项目让我发现我需要学习的地方还有很多,就像迪杰斯特拉算法我还不是很熟悉,我将会在之后的学习中更加努力,查漏补缺,每天进步一点点。

 

北京地铁出行路线代码分析

原文:https://www.cnblogs.com/udontno/p/11675085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!