MySQL
数据库subway
station
: 保存站点信息
name
站点名 : String
id
站点ID : int
route
: 保存地铁路线
id
路线ID : int
读取时分配name
路线名 : String
path
途径站点: String
,
)分割,保存为字符串.split(",")
link
: 保存两个站点之间的路线信息
from_id
起始站点ID : int
to_id
到达站点ID : int
belong_id
所属路线ID : int
dist
距离 : double
数据结构:
String
int
int
String
int[]
,保存所有途径站点的IDint
int
int
double
系统结构:
SubwaySystem
类:
Map stations
List> links
Map routes
Payment
类:
RegularTicket
类:普通买票
WuhanCard
类:继承RegularTicket
,武汉通九折OneDayTicket
类:一日票subway.txt
中完全读取信息,存入MySQL
(仅首次运行代码时执行)MySQL
中读取数据到代码数据结构
station
-> Map stations
,创建ID到站点实例的映射关系,这里是全代码中唯一获取站点名的方法,代码中其余部分站点均使用ID表示link
-> List> links
创建邻接链表
Route
的交点)有不同的信息route
-> Map routes
创建路线名->路线实例的映射关系给定站点名,返回经过该站点的所有路线的名称集合
routes
中寻找包含该ID的路线,保存路线的名称给定线路名和终点方向,返回该路线中所有站点的顺序列表
routes
获取路线实例stations
打印输出给定起点站和终点站的名称,返回一条最短路径,该路径是一个从起点开始直到终点,所需要经过的所有站点的数组
stations
获取IDDijkstra
算法寻找最短(长度最短)路Floyd
算法寻找目标路径
Link
信息 -> List
List
stations
打印输出当找到最短乘车路径后,我们需要把它以更方便的形式呈献给用户。请实现一个方法,将路径以简洁的形式打印至标准输出。
List
Link
类中“所属路线ID”属性处理转车情况对于给定路径,计算其对应的乘车费用(普通单程票)
double pay(double distace)
接口对于同样的路径,计算使用武汉通和日票的乘客的票价(日票返回0元)
添加图形界面
武汉地铁模拟系统的用例“查询两站点间的最少换乘路径并计算所有费用”的描述如下:
总里程数、各种支付方式所需费用
- 若系统未查询到可行路线,或用户错误输入,输出错误提示