结对编程作业

删除回忆录丶 提交于 2019-12-03 17:39:32

一、任务要求:实现一个能处理正确输入的命令行的计算地铁线路最短路径的程序

          1.读取 -map 参数来获得对应的自定义地铁文件(命名为 subway.txt)。

java subway -map subway.txt

  

     2.用户希望查询指定地铁线经过的站点。这样,在应用程序需要支持一个新的命令行参数 -a,它指定了用户希望查询的地铁线路。

java subway -a 1号线 -map subway.txt -o station.txt

 

     3.能查出两站的最短路径,并保存在 routine.txt中(路径中要包含换乘信息)

java subway -b 洪湖里 复兴路 -map subway.txt -o routine.txt

二、psp

 

PSP 2.1Personal Software Process StagesTime
Planning 计划  
  · Estimate   · 估计这个任务需要多少时间  14day
Development 开发  
  · Analysis   · 需求分析 (包括学习新技术)  2day
  · Design Spec   · 生成设计文档  1day
  · Design Review   · 设计复审 (和同事审核设计文档)  1day 
  · Coding Standard   · 代码规范 (为目前的开发制定合适的规范)  0.5day 
  · Design   · 具体设计  2day
  · Coding   · 具体编码  2day 
  · Code Review   · 代码复审  1day 
  · Test   · 测试(自我测试,修改代码,提交修改)  0.5day 
Reporting 报告   
  · Test Report   · 测试报告  0.5day
  · Size Measurement   · 计算工作量  0.5day 
  · Postmortem & Process Improvement Plan   · 事后总结, 并提出过程改进计划  0.5day
  合计  11.5day

三、计算模块接口的设计与实现过程

1.subway.txt。如下图,每一条地铁线占一行,方便读取;线名号后加冒号,方便进行线名和站名分开;#是可换乘站,如西站#6可以换乘6号线,方便后续换乘处理,否则还要在所有线路中查找是否有该站。

 

2.代码分析

Station.java

    //站点的类,包括站点名称、所在线路、是否换乘、可换乘的线路以及其相邻站点。
    public String name;
    public String line;
    public Boolean isTransferStation;
    public List<String> lines = new ArrayList<>();
    public List<Station> adjacentStation = new ArrayList<>();

SubwayLine.java

    //地铁线路的类,包括线路名称以及该线路上的所有站点。
    public String name;
    public List<Station> stations = new ArrayList<>();

subway.java

有两个全局变量lines和stations,分别存储全部路线和全部站点;subwayMap()方法读取地图信息、getLineName()获取站点所在线路、main()读取命令行不同参数实现不同功能,如args[0]=-map就读取地图信息、如args[0]=-a实现查询线路的功能、如args[0]=-b实现查询最短路径的功能。

dijkstra.java

该类实现求最短路径结果,用到了迪杰斯特拉算法。

 

 

 

 

 

 Result.java

//结果的类,包括起点站、终点站、两站点之间的最短距离以及该线路上所经过的站点。

    private Station startStation;
    private Station endStation;
    private int distance;
    private List<Station> passStations = new ArrayList<>();

    public Station getStartStation() {
        return startStation;
    }
    public void setStartStation(Station startStation) {
        this.startStation = startStation;
    }
    public Station getEndStation() {
        return endStation;
    }
    public void setEndStation(Station endStation) {
        this.endStation = endStation;
    }
    public int getDistance() {
        return distance;
    }
    public void setDistance(int distance) {
        this.distance = distance;
    }
    public List<Station> getPassStations() {
        return passStations;
    }
    public void setPassStations(List<Station> passStations) {
        this.passStations = passStations;
    }

3.未实现功能

命令行下通过指令运行报错,IDEA下通过设置参数可以正常运行。

四、测试结果

1.读取线路地图信息。下图为参数设置和控制台输出信息。

 

 

 

2.查询线路。下图分别为参数设置和控制台输出以及station文件内容。

 

 

 

 

 

 

3.实现查询最短路径。下图为参数设置和控制台运行结果以及routine文件。

 

 

 

 

 

 五、作业测试用例和GitHub地址

1.测试用例

2.GitHub地址:https://github.com/UnlightedOtaku/pairsubway/invitations

 六、总结

 

 

 

 

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