个人项目—地铁路线规划系统设计及实现
问题综述:
提供一个城市(以北京市为例,如上图地铁线路图所示)的地铁线路图及其相关信息,通过程序计算指定两站之间最短(最少经过站数)乘车路线,输出指定地铁线路的所有站点。首先,将地铁线路信息保存在data.txt中便于理解与使用,具体格式如下:
线路名1 站名1 站名2 站名3 ...
线路名2 站名1 站名2 站名3 ...
线路名3 站名1 站名2 站名3 ...
......
将所有线路名以及站点名都存储在data文件中后,继续之后的功能实现。
需求分析:
输入地铁线路名称,显示整条地铁线路站点
输入两个地铁站名称,并为其规划最短线路并输出
输入某条地铁线路,显示该条线路上的所有站点
若输入的线路或站点不存在,显示错误提示
解决思路:
实现语言:JAVA
收集数据并设计数据存储方式读入数据并构建地铁图的数据结构
设计并确定寻找最短路径算法,以广度优先遍历(BFS)算法为核心算法
使用测试案例对程序进行debug测试
具体实现:
1 数据存储格式及读取
Json格式是一种轻量级的数据交换格式,相对于xml格式比较简洁且易读,因此本项目采用Json格式存储数据(同时,由此本项目在编程是需要使用额外jar包),具体形式如下:
1 {2 "lines": [3 {4 "lineNo": 1,5 "lineName": "1号线",6 "stations": [7 {8 "stationName": "苹果园"
9 },10 {11 "stationName": "古城"
12 },13 ......14 ]15 },16 {17 "lineNo": 2,18 "lineName": "2号线",19 "stations": [20 {21 "stationName": "积水潭"
22 },23 {24 "stationName": "鼓楼大街"
25 },26 ......27 ]28 },29 ......30 {31 "lineNo": 23,32 "lineName": "西郊线",33 "stations": [34 {35 "stationName": "香山"
36 },37 ......38 ]39 }40 ]41 }
将地铁站点数据存放在json文件中,并可利用自建函数readJsonFile读取,其中,readJsonFile函数如下:
1 import java.io.*;2
3 public classReadUtil {4 //读取json文件
5 public staticString readJsonFile(String fileName) {6 String jsonStr = "";7 try{8 //打开文件
9 File jsonFile = newFile(fileName);10 FileReader fileReader = newFileReader(jsonFile);11 Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");//一般采用utf-8编码规则
12 int ch = 0;13 StringBuffer sb = newStringBuffer();14 while ((ch = reader.read()) != -1) {15 sb.append((char) ch);16 }17 f