结对编程 地铁最短路径 张波-朱新远

结对编程 地铁最短路径

一、任务:

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

 

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

二、要求

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

需求2:

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

需求3:

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

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

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

结对编程 地铁最短路径 张波-朱新远

 

 


四.测试效果与运行 

结对编程 地铁最短路径 张波-朱新远

 

 结对编程 地铁最短路径 张波-朱新远

 

 

结对编程 地铁最短路径 张波-朱新远

 

 


五.总结
  1.能力有限,部分功能无法完成,部分功能未完全按需求完成
   2.项目的不足:健壮性很差;用户体验不好;跟队友分工合作还可以;代码注释没写好













上一篇:闪耀光栅 (DMD) 的衍射效应


下一篇:Mysql高级操作