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

                              结对编程 地铁最短路径

一、任务:

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

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


四.测试效果与运行 

github地址为:https://github.com/zxy960828/Subway.git


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

原文地址:https://www.cnblogs.com/qq824312823/p/11816431.html

时间: 2024-10-08 08:40:14

结队编程,地铁最短路径,张波-朱新远的相关文章

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

结对编程 地铁最短路径 一.任务: 实现一个帮助进行地铁出行路线规划的命令行程序. PSP 2.1 Personal Software Process Stages Time Planning 计划     · Estimate   · 估计这个任务需要多少时间  7d Development 开发     · Analysis   · 需求分析 (包括学习新技术)  2d   · Design Spec   · 生成设计文档 1d    · Design Review   · 设计复审 (和同

结队编程——电梯调度

这次老师布置的作业是:结队编程完成电梯的调度. 1.与我结队编程的队员是张舒瑞:http://www.cnblogs.com/bjzsr/ 附上我们一起讨论编程问题时的照片: 2.让我来介绍一下我的队员张舒瑞:他是一个很外向的人,性格很活泼,也很聪明.我们从大一到现在一直都挺熟的,所以在讨论过程中不存在什么交流障碍. 3.在这次结队编程中,他负责写的是查找电梯函数的部分,我负责的是接人函数的部分.他编的代码很精简,而我总觉得我写的代码很繁琐,所以他比较注重算法效率,而我是特别注重界面美观的那一个

20175126Apollo 20175126《Java程序设计》结队编程项目——四则运算 第一周阶段总结

结队编程项目——四则运算 一.项目需求 自动生成小学四则运算题目(加.减.乘.除)统计正确率 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 需求分析: 生成四则运算:需要使用随机数生成,需要创造一个能实现计算功能的类. 支持多运算符:运算符也需要利用随机生成,并且不限个数. 支持真分数:需要用到生成分子.分母的函数,将分数化简等. 统计正确率:需要设置一个计算变量,并需要用一个判断正确的函数. 二.设计思路 首先根据需求分析,进行大体的设计: 生成题目→输入答案→判断正

北京地铁最短路径实现

北京地铁最短路径规划 github地址 github 需求理解 将地铁线路保存成一个可读入,简洁明了的文本 程序能正确读入这个文件,并获取地铁线路信息 程序能正确处理输入的命令行 地铁能正确输出指定地铁线经过的站点 程序能正确输出两个站点间的最短路径 程序要有健壮性,能通过各类性能测试 按要求编写博客,详细说明花费时间,代码,各个模块和测试用例 文本存储方式 该文本直接保存进了各条线路的各个站点,没有在文本中考虑换乘点.当读入"一号线"等文字时,将它转换为线路的id号,然后在way数组

结队编程第三次作业

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Simple_arithmetic //简易四则运算{ class Program { public static void Ni() { Console.WriteLine("请输入您想做的运算: "); Console.WriteLine("输入 [+] 表示加法"); C

结队编程1-四则运算(107、120)

[码市链接]https://git.coding.net/Luojiening/Teamwork1.git a.需求分析 将这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成为一个有基本功能.一定价值的程序. 1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算: 2.有计时功能,能显示用户开始答题后的消耗时间: 3.界面支持中文简体/中文繁体/英语,用户可以选择一种. b.功能设计 1.生成自定义数目算术

结队编程之总结篇

结对编程之总结及体会 短暂而又漫长的俩周时间,我和我的队友黄冠译将结队编程的作业刚刚做好.先介绍一下我的队友黄冠译,大学三年的同学,对他挺熟悉,知道他编程特别厉害,喜欢专研.这次老师给我们这样好的机会,让我们交流,共同完成一个小的项目.我觉得我的队友特别聪明,特别有思想,最开始我没有想到会用C语言写界面,我学的C语言只不过是出现一个小黑框而已,再无深入,我队友提出用C语言的图形库来写界面,我在那时候只有震惊.可能是学的知识有限,只知道C语言就是用来写个小黑框的还能干什么.当我的队友把这次结队编程

日程管理系统代码维护第二弹(结队编程)

结队编程的好处: 第一:培养新人,促进沟通,提升团队整体能力. 第二:更好的知识共享和信息交流,促进团队协作. 第三:促进团队成员的沟通,提升团队凝聚力. 但由于我们一开始的工作模式都是个人的,现在开始了这个结队编程少许有些不适应.因为要开始慢慢习惯队友的工作方式,习惯她的思考方式.一开始策划时意见总会不统一,在两个人慢慢磨合的情况下,开始了正式的工作. 首先我们两个人通读了这个日程管理系统,找出其中的BUG并且改正,在改完BUG后,开始改进和美化.它的程序里个人中心的界面是空白的,我们先画好界

ios 编程--使用代码创建新的相册随加项目

2013-04-23 13:29:04| 分类: 默认分类 |举报|字号 订阅 编写ios 编程--使用代码创建新的相册,是参考http://www.touch-code-magazine.com/ios5-saving-photos-in-custom-photo-album-category-for-download/来写的. ALAssetsLibrary+CustomPhotoAlbum.h 里的代码是: #import <Foundation/Foundation.h> #impor