预培训个人项目(地铁线路规划)
1.需求
-
需求1
用户可以通过命令行启动这个程序。程序在启动时,会读取不同命令对应的命令行参数。对于地铁线路信息图,我们约定它采用参数 -map 作为标志。程序启动时需要通过读取 -map 参数来获得对应的自定义地铁文件(命名为 subway.txt),从而得到地铁线路图的信息。一个调用应用程序的示例如下:java subway -map subway.txt
-
需求2
在应用程序需要支持一个新的命令行参数 -a,它指定了用户希望查询的地铁线路。这样,在给定地铁线路时,你的程序就需要能够从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站。输出的文件我们使用 -o 命令行参数来指定。一个调用应用程序的示例如下:java subway -a 1号线 -map subway.txt -o station.txt
-
需求3
如果用户希望坐地铁,他希望能通过最少的站数从出发点到达目的地,这样就可以在命令行中以 -b 参数加两个地铁站点名称分别作为出发与目的,比如用户希望知道 洪湖里 到复兴路 之间的最短路线是怎样的,他就可以使用如下命令让程序将结果写入 routine.txt 中java subway -b 洪湖里 复兴路 -map subway.txt -o routine.txt
2.完成效果
抽象概念
线路、可换乘站点、普通站点
解题思路
将整个任务分为三部分:1.从出发站点往后找到最近的可换乘的站点
2.从终点往前面找到最近的可换乘的站点
3.各可换乘站点构成图,两个可换乘的站点之间的普通站点个数看为权重,求最短路径
将三部分连接成整条,即最短路径
所涉及的类
类名 | 功能 |
---|---|
GetStation | 得到起始换乘站点和终换乘站点 |
FileOperate | 得到文件内容 |
FloydInGraph | 求换乘站点之间最短路径 |
Relative | 解析关系 |
ShowPath | 中间换乘路径 |
FileOperateOp | 实现方法选择 |
Subway | 总控件 |
模块之间的关系
反思
- 在任务分析阶段做的工作太少,项目开发经验匮乏
- 模块之间耦合度很高
- 很多地方代码冗余
- 没有测试
- 有些地方存在bug
收获
- 知道用很多学习工具
- 思维较以前更加开阔