加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

北京地铁线路查询

发布时间:2020-12-15 07:18:42 所属栏目:Java 来源:网络整理
导读:北京地铁线路查询 一、gethub链接: https://github.com/standandby/BJsubway 二、基本需求 ????1.获取所以的站点信息 输入格式为?java?-map?subway.txt ????2.获取北京地铁单条线路上的所以站点 输入为?java?-a?线路名称?-map?subway.txt?-o?line.txt? ????

北京地铁线路查询

一、gethub链接:

https://github.com/standandby/BJsubway
二、基本需求
????1.获取所以的站点信息
输入格式为?java?-map?subway.txt
????2.获取北京地铁单条线路上的所以站点
输入为?java?-a?线路名称?-map?subway.txt?-o?line.txt?
????3.获取两个站点之间的最短路线
输入为?java?-b?站点名?站点名?-map?subway.txt-o?station.txt

三、文件导入

附一张北京地铁的线路图:


??subway.txt的内容样例如下所示:

导入代码如下

public static void readFile() {   //读取地铁线路图信息
        File file = new File(readFile);
        BufferedReader reader = null;

        try {
            InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file),"UTF-8");
            reader = new BufferedReader(inputStreamReader);
            String line = null;
            String linename = "1";
            while ((line = reader.readLine()) != null) {
                if (line.trim().startsWith("*")) {
                    String[] lineInfo = line.substring(1).split("-");
                    lineSet.add(getLine(lineInfo[1].trim(),lineInfo[0].trim()));
                }
            }
        } catch (IOException e) {e.printStackTrace();} 
finally {} }

?

导入完成后是将指定位置的subway.txt导入到程序文件中


四、主要函数
这里的主要函数就是求最短路径的具体函数,本来是想用Dijkstra算法,参考了网上的代码,但都不怎么合适,最后还是改用了广度优先算法来写,勉强算满足要求,具体代码如下:

private void BFS(Graph g,Station gg) {
//查找最短路径 Queue
<Station> queue = new LinkedList<>(); visitedV.add(gg);//设置起始站点,即输入的站点 queue.add(gg);//将站点入栈 while (false == queue.isEmpty()) { Station ver = queue.poll(); List<Station> toBeVisitedV = g.getV_edgeList_map().get(ver); for (Station v : toBeVisitedV) { if (false == visitedV.contains(v)) { visitedV.add(v); path.put(v,ver); queue.add(v); } } } }

?



五、测试样例

1.存在的线路输出
java?-a?1号线?-map?subway.txt?-o?station.txt
输出结果:


2.邻接站点之间的最短距离
java?-b?苹果园?古城?-map?subway.txt?-o?line.txt
输出为:



3.较远站点之间(含转线)的最短距离
java?-b?站点名?站点名?-map?subway.txt -o line.txt

输出结果:






六、异常处理
1.输入的线路不存在,输出“线路不存在”
2.输入的站点不存在,输出“站点不存在”
3.输入的站点相同,输出“站点相同”
4.输入命令格式或名称错误,输出“格式/名称错误”

总结本次实验的难点主要就是最短路径的计算,因为我基础比较差,所以花了很多时间去学习,导致花在工程上的时间不够多,质量有待提高,以后要更好的去规划时间。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读