首页 > 代码库 > 个人项目-地铁出行路线规划程序

个人项目-地铁出行路线规划程序

技术分享

图 1 北京地铁线路

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

要求:

1. 使用Visual Studio Community 2015进行开发,采用C++或者C#语言实现,可以使用.Net Framework,运行环境为64-bit Windows 10

2. 提交的代码要求经过Code Quality Analysis工具的分析并消除所有的警告。Code Quality Analysis工具的用法参见:

http://msdn.microsoft.com/en-us/library/dd264897.aspx

3. 请使用性能分析工具来找出代码中的性能瓶颈并进行改进。

4. 写出至少10个测试用例确保你的程序能够正确处理各种情况。

5. 使用Github来管理源代码和测试用例。

 

作业提交:

  • 在个人博客上发布项目源代码的Github链接,以便助教下载,助教将会在测试环境中检查程序的正确性
  • 正确的程序会再进行性能测试,根据性能的好坏进行评分;不正确的程序没有性能的分数。
  • 撰写一个博客,要求参见博客作业要求。
  • 截止时间2015.09.12

 

需求:

1. 把图1中的所有地铁线路、站点和换乘信息等用一个文本文件(假设名字叫 beijing-subway.txt的形式保存起来,应保存的信息应包括地铁线路名称、各个地铁站点的名称以及车站换乘信息,使得应用程序可以通过读取这个文件,就能掌握关于北京地铁线路的所有信息。请设计一种文件格式用于保存信息并方便应用程序读取,并说明你采取这种格式的理由。 

2. 实现一个命令行程序(不妨叫 subway.exe),这个程序启动时会读取beijing-subway.txt中的信息,然后等待用户的输入,用户可以输入地铁线路的名称,然后程序就输出此地铁线路的所有站点名称(按某一方向顺序输出即可)。输出站点名称后,程序再次进入等待状态。每一线路的起始站点如下:

地铁线路名称

起始站点

地铁一号线

苹果园

地铁二号线

积水潭

地铁四号线

安河桥北

地铁五号线

宋家庄

地铁六号线

海淀五路居

地铁七号线

北京西站

地铁八号线

朱辛庄

地铁九号线

郭公庄

地铁十号线

巴沟

地铁十三号线

西直门

地铁十四号线东段

北京南站

地铁十四号线西段

张郭庄

地铁十五号线

俸伯

地铁八通线

四惠

地铁昌平线

南邵

地铁亦庄线

宋家庄

地铁房山线

苏庄

地铁机场线

东直门

 

3. 程序在读取beijing-subway.txt中信息时,不仅能够处理格式正确的文件,还能够处理各种异常的情况。

4. 在命令行中以-b参数加两个地铁站点名称执行程序时,例如

subway.exe -b station1 station2

将计算从第一个站点station1到第二个站点station2的最短(经过的站点数最少)路线,并返回经过的站点的个数和路径,如果有换乘,请列出换乘的线路。输出格式如下:

4

知春路

知春里

海淀黄庄换乘地铁十号线

中关村

5. 在命令行中以-c参数加两个地铁站点名称执行程序时,例如

subway.exe -c station1 station2

将计算从第一个站点station1到第二个站点station2的换乘最少的最短路线,并返回经过的站点的个数和路径,如果有换乘,请列出换乘的线路。输出格式同上。

 

附加题

扩展命令行程序,使其以-a参数加一个地铁站点名称执行程序时,例如

subway.exe –a station

将计算从站点station出发,最快(经过的站点数最少,若一个站点经过多次需重复计算)地遍历地铁的所有车站的路线,要求

a. 换乘不出地铁系统,即不能从一个地铁口走到路面,然后从另一个站进去;

b. 只用经过一次,就算经过车站。

程序输出总共经过多少站,以及经过的站名。举例来说,假如地铁系统只有知春路和西土城两个站,从知春路站出发,那么这个程序应该输出:

3

知春路

西土城

知春路

 

博客撰写要求:

发表在你的个人博客上,也可以同时转发到你的团队博客上来增加你们团队博客的人气。具体要求如下:

1)在开始实现程序之前,使用下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间

2)在你实现完程序之后,使用下述PSP表格记录下你在程序的各个模块上实际花费的时间

3)记录你在改进程序性能上花费了多少时间,描述你改进的思路,并展示一张性能分析的图(由VS 2015的性能分析工具自动生成),并展示你程序中消耗最大的函数。

4)共享你对程序进行测试的至少10个测试用例,以及说明为什么你能确定你的程序是正确的。

5)说明你在个人项目中学到了什么。

 

PSP 2.1

Personal Software Process Stages

Time

Planning

计划

 

  · Estimate

  · 估计这个任务需要多少时间

 

Development

开发

 

  · Analysis

  · 需求分析 (包括学习新技术)

 

  · Design Spec

  · 生成设计文档

 

  · Design Review

  · 设计复审 (和同事审核设计文档)

 

  · Coding Standard

  · 代码规范 (为目前的开发制定合适的规范)

 

  · Design

  · 具体设计

 

  · Coding

  · 具体编码

 

  · Code Review

  · 代码复审

 

  · Test

  · 测试(自我测试,修改代码,提交修改)

 

Reporting

报告

 

  · Test Report

  · 测试报告

 

  · Size Measurement

  · 计算工作量

 

  · Postmortem & Process Improvement Plan

  · 事后总结并提出过程改进计划

 

 

合计

 

 

 

个人项目-地铁出行路线规划程序