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

女生的网名这么多〃 提交于 2019-12-01 09:13:58

一.类的分析

  我共使用了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的格式如下:

  

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

 

 

   

 

   

 

 

 三.实际测试

  ①单独运行

  

  ②读取线路

  

  ③同一线路上的两个站点

  

 

 

   

  

  

  ④需要转线

  

 

   

 

 

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

  

  ⑥参数输入错误报错

  

 

 四.总结

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!