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

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

一、任务

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

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.源数据结构说明:

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

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.项目目录展示

 
四.测试效果与运行 

 

五、总结:

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

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

猜你喜欢

转载自www.cnblogs.com/zhuxinyuan/p/11816434.html