结对编程作业(地铁线路问题)

一、任务

实现一个帮助进行地铁出行路线规划的命令行程序。

1.要求:

要求1:
实现一个支持显示地铁线路与计算换乘的程序(对于C++/C#,编译后的二进制文件名需为 subway.exe;对于Java项目,Main方法所在文件名需为 subway.java)。之后,用户可以通过命令行启动这个程序。程序在启动时,会读取不同命令对应的命令行参数。对于地铁线路信息图,我们约定它采用参数 -map 作为标志。程序启动时需要通过读取 -map 参数来获得对应的自定义地铁文件(命名为 subway.txt),从而得到地铁线路图的信息。

要求2:
用户希望查询指定地铁线经过的站点。在应用程序需要支持一个新的命令行参数 -a,它指定了用户希望查询的地铁线路。这样,在给定地铁线路时,程序需要能够从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站。输出的文件使用 -o 命令行参数来指定。

要求3:
用户希望坐地铁,他希望能通过最少的站数从出发点到达目的地,这样就可以在命令行中以 -b 参数加两个地铁站点名称分别作为出发与目的,比如用户希望知道 洪湖里 到复兴路 之间的最短路线是怎样的,他就可以使用如下命令让程序将结果写入 routine.txt 中。

2.PSP

PSP 2.1

Personal Software Process Stages

Time

Planning

计划

 

  · Estimate

  · 估计这个任务需要多少时间

 2weeks

Development

开发

 

  · Analysis

  · 需求分析 (包括学习新技术)

 2days

  · Design Spec

  · 生成设计文档

 1day

  · Design Review

  · 设计复审 (和同事审核设计文档)

 1day

  · Coding Standard

  · 代码规范 (为目前的开发制定合适的规范)

 1day

  · Design

  · 具体设计

 2days

  · Coding

  · 具体编码

 2days

  · Code Review

  · 代码复审

 1day

  · Test

  · 测试(自我测试,修改代码,提交修改)

 1day

Reporting

报告

 

  · Test Report

  · 测试报告

 0.5day

  · Size Measurement

  · 计算工作量

 0.5day

  · Postmortem & Process Improvement Plan

  · 事后总结, 并提出过程改进计划

 1day

 

合计

 15days

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

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

1.源数据结构说明:

一行代表一个线路,线路顺序是几号线,比如第一行就代表一号线,站台用逗号分隔,有顺序

javascipt 地铁 地铁编程_javascipt 地铁

 

 

2.实体类属性说明

定义了一个实体类Station

包含的信息如下

private String name; //地铁站名称,假设具备唯一性

public Station prev; //本站在lineNo线上面的前一个站

public Station next; //本站在lineNo线上面的后一个站

//本站到某一个目标站(key)所经过的所有站集合(value),保持前后顺序
private Map<Station,LinkedHashSet<Station>> orderSetMap = new HashMap<Station,LinkedHashSet<Station>>();
3.关键类(Subway)实现及算法思想:
//用迪杰斯特拉最短路径算法计算从s1站到s2站的最短经过路径
public void calculate(Station s1,Station s2);
//取参数station到各个站的最短距离,相隔1站,距离为1,依次类推
private Station getShortestPath(Station station);
//获取参数station直接相连的所有站,包括交叉线上面的站
private List<Station> getAllLinkedStations(Station station);
//根据内容的输出路径输出结果
public static void output(String[] content,String ouputPath);
4.项目目录展示

javascipt 地铁 地铁编程_命令行_02

 

 

四.测试效果与运行

javascipt 地铁 地铁编程_命令行_03

 

 

javascipt 地铁 地铁编程_命令行_04

 

 

javascipt 地铁 地铁编程_命令行参数_05

 

 

 

 

 

 

 

 

 

五、总结:

        通过本次结对编程完成之后,发现很多的问题,感觉自身能力不足,还是的就是出现了编程上的困难,之后在编程处理的问题中向同学请教,队友耐心的给我解释,学到了一些实际操作的知识,这次编程的训练,复习到了最短路径的两个算法 ,用到Dijkstra算法来解决最短路径的问题代码的具体实现,以及地图的存储,输入与输出的问题,总之队友的帮助还是很大,感谢我的队友让我学习了很多知识,不然靠我一人是不能够完成好这次作业。

六、Github地址:https://github.com/zxy960828/subway.git