第一个项目

设计思路:

1、需求分析: cmd命令行获取参数、使用Floyd算法来计算两站之间的最短距离。

2、开发平台:idea

3、计算模块接口的设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处:

 

Node类:获取节点类的信息

Path类:路径类,计算两点间的距离

Distance类:缓存a节点和b节点之间的距离

EasyCache类:中间缓存类

subway类:

readStation (String)方法用于读取subway.txt

getPath(String ,String,String)方法:打印输出2站间的最短距离

getXianLu(String,String)方法:获取某个地铁线路

 

Data类:

Data构造函数:通过subway类返回的createArray方法返回的二维数组的传递处理相邻两站isConnected的属性

 

ComputeShort类:

getShortDis用于计算两站间最短路径

 

 

主要算法:

Floyd算法描述:

1、从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大,这也是所谓的初始化工作;

2、对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己知的路径更短。如果是更新它。

 

 

具体要求如下:

  1. 在开始实现程序之前,构思整个程序所需要的模块,想清楚它们的依赖关系,以及估计开发需要的时间,使用下述PSP表格记录下来。
  2. 在你实现完程序之后,使用下述PSP表格记录下你在程序的各个模块上实际花费的时间
  3. 计算模块接口的设计与实现过程。 设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你的算法的关键(不必列出源代码),以及独到之处
  4. 记录你在改进程序性能上花费了多少时间,描述你改进的思路,并展示一张性能分析的图(由VS 2019的性能分析工具自动生成),并展示你程序中消耗最大的函数。
  5. 计算模块部分单元测试展示。 展示出项目部分单元测试代码,并说明测试的函数,构造测试数据的思路。并将单元测试得到的测试覆盖率截图,发表在博客中。要求总体覆盖率到90%以上,否则单元测试部分视作无效。
  6. 计算模块部分异常处理说明。 在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中,并指明错误对应的场景。
  7. 共享你对程序进行测试的至少10个测试用例,以及说明为什么你能确定你的程序是正确的。
  8. 说明你在个人项目中学到了什么。

 

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

posted on 2019-07-16 10:36  softwarelong  阅读(134)  评论(0编辑  收藏  举报

导航