master bbcd4767b794 cached
91 files
1.7 MB
812.0k tokens
52 symbols
1 requests
Download .txt
Showing preview only (1,878K chars total). Download the full file or copy to clipboard to get everything.
Repository: BaiJiazm/SubwayTransferSystem
Branch: master
Commit: bbcd4767b794
Files: 91
Total size: 1.7 MB

Directory structure:
gitextract_5p2saq3a/

├── README.md
├── SubwayTransferSystem/
│   ├── SubwayTransferSystem.pro
│   ├── SubwayTransferSystem.pro.user
│   ├── apphelp.cpp
│   ├── apphelp.h
│   ├── data/
│   │   ├── demo.txt
│   │   ├── outLine.txt
│   │   └── subwayLine.txt
│   ├── graphics_view_zoom.cpp
│   ├── graphics_view_zoom.h
│   ├── html/
│   │   ├── helpAddByText.html
│   │   ├── helpAddConnection.html
│   │   ├── helpAddLine.html
│   │   ├── helpAddStation.html
│   │   ├── helpTransfer.html
│   │   └── helpWatch.html
│   ├── line.h
│   ├── main.cpp
│   ├── mainwindow.cpp
│   ├── mainwindow.h
│   ├── mainwindow.ui
│   ├── managelines.cpp
│   ├── managelines.h
│   ├── managelines.ui
│   ├── myview.cpp
│   ├── myview.h
│   ├── querytransfer.cpp
│   ├── querytransfer.h
│   ├── querytransfer.ui
│   ├── resource.qrc
│   ├── station.cpp
│   ├── station.h
│   ├── subwaygraph.cpp
│   └── subwaygraph.h
├── build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/
│   ├── .qmake.stash
│   ├── Makefile
│   ├── Makefile.Debug
│   ├── Makefile.Release
│   ├── object_script.SubwayTransferSystem.Debug
│   ├── object_script.SubwayTransferSystem.Release
│   ├── release/
│   │   ├── apphelp.o
│   │   ├── graphics_view_zoom.o
│   │   ├── main.o
│   │   ├── mainwindow.o
│   │   ├── managelines.o
│   │   ├── moc_apphelp.cpp
│   │   ├── moc_apphelp.o
│   │   ├── moc_graphics_view_zoom.cpp
│   │   ├── moc_graphics_view_zoom.o
│   │   ├── moc_mainwindow.cpp
│   │   ├── moc_mainwindow.o
│   │   ├── moc_managelines.cpp
│   │   ├── moc_managelines.o
│   │   ├── moc_predefs.h
│   │   ├── qrc_resource.cpp
│   │   ├── qrc_resource.o
│   │   ├── station.o
│   │   ├── subwaygraph.o
│   │   └── translations/
│   │       ├── qt_bg.qm
│   │       ├── qt_ca.qm
│   │       ├── qt_cs.qm
│   │       ├── qt_da.qm
│   │       ├── qt_de.qm
│   │       ├── qt_en.qm
│   │       ├── qt_es.qm
│   │       ├── qt_fi.qm
│   │       ├── qt_fr.qm
│   │       ├── qt_gd.qm
│   │       ├── qt_he.qm
│   │       ├── qt_hu.qm
│   │       ├── qt_it.qm
│   │       ├── qt_ja.qm
│   │       ├── qt_ko.qm
│   │       ├── qt_lv.qm
│   │       ├── qt_pl.qm
│   │       ├── qt_ru.qm
│   │       ├── qt_sk.qm
│   │       └── qt_uk.qm
│   ├── ui_mainwindow.h
│   └── ui_managelines.h
├── dealData/
│   ├── line.txt
│   ├── main.cpp
│   ├── outLine.txt
│   └── readme.md
├── osmXmlParser/
│   ├── readme.md
│   ├── route.osm
│   ├── src/
│   │   └── osmXmlParser/
│   │       └── MyOsmParser.java
│   ├── station.osm
│   ├── station.txt
│   └── subwayLine.osm
└── 设计说明书.docx

================================================
FILE CONTENTS
================================================

================================================
FILE: README.md
================================================
## 上海地铁换乘指南系统(SubwayTransferSystem)

#### 简介
本项目是在2017年暑期所写的上海地铁换乘指南系统,是从零学QT,在两周左右无借鉴任何相同或相似程序全部由自己一人完成的小项目。

个人觉得还是非常用心的,是一个不错的小项目。如果你有兴趣想借鉴学习或者觉得还不错的话,可以Star一下哦。

如果程序本身有任何Issue或者你在其中有什么问题,欢迎在[Issue](https://github.com/BaiJiazm/SubwayTransferSystem/issues)部分下提出或者联系[b110011@qq.com](http://mailto:b110011@qq.com)

#### 项目背景和要求
上海的地铁交通网络已经基本成型,建成的地铁线十多条,站点上百个,现需建立一个换乘指南打印系统,通过输入起点和终点站,打印出地铁换乘指南,指南内容包括起点站、换乘站、终点站。

* 图形化显示地铁网络结构,能动态添加地铁线路和地铁站点。
* 根据输入起点和终点站,显示地铁换乘指南。
* 通过图形界面显示乘除路径。

#### 功能介绍
主要功能包含地铁网络线路的查看,地铁换乘指南查询,动态添加线路站点等。

* 线路图查看:
  * 查看上海地铁网络线路图,包括通过键盘、鼠标拖放、放大缩小等简易查看操作;
  * 查看地铁线路信息,包括线路段、包含站点等;
  * 查看地铁站的详细信息,包括站点地理坐标、所属线路等
* 换乘指南查询:
  * 提供地铁换乘查询,可通过视图方便的查看乘坐路线和换乘路线;
  * 提供最小出行时间的换乘策略指南
  * 提供最小换乘次数的换乘策略指南
* 动态添加线路:
  * 动态添加线路,可根据需要新增线路;
  * 动态添加站点,可根据需要新增站点;
  * 动态添加连接,可根据需要新增站点连接;
  * 文本方式简易添加,方便快捷;
* 帮助:
  * 提供软件使用帮助和说明;
* 关于:
  * 提供软件制作信息;

#### 开发平台

* 计算机型号	:惠普Pavilion M4
* 计算机内存	:4.00GB
* CPU       :Intel Core i5  2.6GHz
* 操作系统	:Windows 10 家庭版
* 开发语言	:C++(C++11标准以上)
* 开发框架	:QT
* 集成开发环境:Qt Version 5.9.1
* 编译器		:MinGW 32bit
* 运行环境   :
	* 可在上述集成环境下运行;
	* 通过windeployqt.exe及Enigma Virtual Box进行整合压缩为发布为了一个LinkListVisualizer.exe文件,可在普通windows机型下运行。

#### 项目结构
```
---/SubwayTransferSystem
     ---/功能源码
   /build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release
     ---/release文件
   /dealData
     ---/数据处理模块
   /osmXmlParser
     ---/数据处理模块
   /SubwayTransferSystem_boxed.exe
   /README.md
   /设计说明书.docx
```

### 主要功能预览

##### 总览图
![总览图](https://i.imgur.com/B43tUl3.png)

##### 线路查询1
![线路查询1](https://i.imgur.com/wU1ZIi7.png)

##### 线路查询2
![线路查询2](https://i.imgur.com/e3i4ZfH.png)

##### 添加新线路
![添加新线路](https://i.imgur.com/A0qV2e9.png)

##### 添加新站点
![添加新站点](https://i.imgur.com/VunwdCG.png)

##### 添加新连接
![添加新连接](https://i.imgur.com/reS7WPo.png)

##### 文本方式直接添加
![文本添加](https://i.imgur.com/a5R3cxt.png)

##### 视图查看放大
* 点击工具栏中放大按钮;
* 或选择“视图”下“放大”;
* 或按下快捷键“Ctrl+L”;
* 或直接在视图区域进行鼠标滚轮放大操作
* 可进行视图的放大,方便查看。

![视图放大](https://i.imgur.com/a4Lh7B0.png)

##### 视图查看缩小
* 点击工具栏中缩小按钮;
* 或选择“视图”下“缩小”;
* 或按下快捷键“Ctrl+S”;
* 或直接在视图区域进行鼠标滚轮缩小操作
* 可进行视图的缩小,方便查看。

![视图缩小](https://i.imgur.com/u2tTXjh.png)

##### 鼠标悬停1
* 鼠标除能直接放大和缩小视图外,在查看视图信息有重要作用:
* 鼠标滚轮直接放大缩小视图;
* 通过鼠标点击后拖动,可直接进行视图移动;
* 将鼠标悬停在站点上,会提示站点的详细信息,如悬停在“曹杨路”站上,会有曹杨路地铁站的详细信息;

![鼠标悬停1](https://i.imgur.com/wtCM7YL.png)

##### 鼠标悬停2
* 将鼠标悬停在线路上,会提示线路的详细信息,如悬停在“曹杨路”站和“镇坪路”之间线路上,会有线路的详细信息;

![鼠标悬停2](https://i.imgur.com/lKIhLhr.png)

#### 更多
了解项目的更多信息,请查看文档[设计说明书](https://github.com/BaiJiazm/SubwayTransferSystem/blob/queryByMinwindow/%E8%AE%BE%E8%AE%A1%E8%AF%B4%E6%98%8E%E4%B9%A6.docx)


================================================
FILE: SubwayTransferSystem/SubwayTransferSystem.pro
================================================
#-------------------------------------------------
#
# Project created by QtCreator 2017-08-03T12:33:22
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = SubwayTransferSystem
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        mainwindow.cpp \
    graphics_view_zoom.cpp \
    station.cpp \
    subwaygraph.cpp \
    managelines.cpp \
    apphelp.cpp

HEADERS += \
        mainwindow.h \
    graphics_view_zoom.h \
    station.h \
    line.h \
    subwaygraph.h \
    managelines.h \
    apphelp.h

FORMS += \
       mainwindow.ui \
    managelines.ui

RESOURCES += \
    resource.qrc


================================================
FILE: SubwayTransferSystem/SubwayTransferSystem.pro.user
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.3.1, 2017-08-22T18:44:29. -->
<qtcreator>
 <data>
  <variable>EnvironmentId</variable>
  <value type="QByteArray">{b7107fb5-2218-4116-bee8-7edb9d964112}</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.ActiveTarget</variable>
  <value type="int">0</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.EditorSettings</variable>
  <valuemap type="QVariantMap">
   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
    <value type="QString" key="language">Cpp</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
    </valuemap>
   </valuemap>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
    <value type="QString" key="language">QmlJS</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
    </valuemap>
   </valuemap>
   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
   <value type="int" key="EditorConfiguration.IndentSize">4</value>
   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
   <value type="int" key="EditorConfiguration.TabSize">8</value>
   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.PluginSettings</variable>
  <valuemap type="QVariantMap"/>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Target.0</variable>
  <valuemap type="QVariantMap">
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.1 MinGW 32bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.1 MinGW 32bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.591.win32_mingw53_kit</value>
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Going/DsApplication2/build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Debug</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Going/DsApplication2/build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Going/DsApplication2/build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Profile</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">在本地部署</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
     <value type="int">0</value>
     <value type="int">1</value>
     <value type="int">2</value>
     <value type="int">3</value>
     <value type="int">4</value>
     <value type="int">5</value>
     <value type="int">6</value>
     <value type="int">7</value>
     <value type="int">8</value>
     <value type="int">9</value>
     <value type="int">10</value>
     <value type="int">11</value>
     <value type="int">12</value>
     <value type="int">13</value>
     <value type="int">14</value>
    </valuelist>
    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">SubwayTransferSystem</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/Going/DsApplication2/SubwayTransferSystem/SubwayTransferSystem.pro</value>
    <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">SubwayTransferSystem.pro</value>
    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">D:/Going/DsApplication2/build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release</value>
    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.TargetCount</variable>
  <value type="int">1</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
  <value type="int">18</value>
 </data>
 <data>
  <variable>Version</variable>
  <value type="int">18</value>
 </data>
</qtcreator>


================================================
FILE: SubwayTransferSystem/apphelp.cpp
================================================
#include "apphelp.h"
#include <QIcon>

#include <QDesktopWidget>
#include <QRect>
#include <QPoint>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QFile>
#include <QDir>

//构造函数
AppHelp::AppHelp(QWidget *parent):QWidget(parent)
{
    createHelpUI();

    setWindowTitle(tr("使用帮助"));
    setWindowIcon(QIcon(":/icon/icon/help.png"));
    setMinimumSize(600,400);

    QDesktopWidget desktop;
    QRect rect = desktop.availableGeometry(desktop.primaryScreen());
    QPoint center = rect.center();
    center.setX(center.x() - this->width()/2);
    center.setY(center.y() - this->height()/2);
    move(center);

    connect(listWidget, SIGNAL(itemPressed(QListWidgetItem*)), this, SLOT(listWidgetChanged(QListWidgetItem*)));
}

//创建UI
void AppHelp::createHelpUI()
{
    QHBoxLayout *mainLayout = new QHBoxLayout;
    setLayout(mainLayout);

    listWidget = new QListWidget;
    listWidget->addItem(tr("网络图"));
    listWidget->addItem(tr("换乘指南"));
    listWidget->addItem(tr("添加线路"));
    listWidget->addItem(tr("添加站点"));
    listWidget->addItem(tr("添加连接"));
    listWidget->addItem(tr("文本添加"));
    listWidget->setFixedWidth(100);
    mainLayout->addWidget(listWidget);

    QVBoxLayout *rightLayout = new QVBoxLayout;
    textBrowser = new QTextBrowser;
    textBrowser->setFont(QFont("consolas"));
    textBrowser->setOpenExternalLinks(true);
    textBrowser->setOpenLinks(true);
    rightLayout->addWidget(textBrowser);

    mainLayout->addLayout(rightLayout);
    listWidget->setCurrentItem(listWidget->item(0));
    listWidgetChanged(listWidget->item(0));
}

//当前列表项变化
void AppHelp::listWidgetChanged(QListWidgetItem* item) {
    if (listWidget->item(0) == item) {
        QFile txtFile(":/html/html/helpWatch.html");
        txtFile.open(QIODevice::ReadOnly);
        textBrowser->setHtml(txtFile.readAll());
        txtFile.close();
    }
    else if(listWidget->item(1)==item)
    {
        QFile txtFile(":/html/html/helpTransfer.html");
        txtFile.open(QIODevice::ReadOnly);
        textBrowser->setHtml(txtFile.readAll());
        txtFile.close();
    }
    else if(listWidget->item(2)==item)
    {
        QFile txtFile(":/html/html/helpAddLine.html");
        txtFile.open(QIODevice::ReadOnly);
        textBrowser->setHtml(txtFile.readAll());
        txtFile.close();
    }
    else if(listWidget->item(3)==item)
    {
        QFile txtFile(":/html/html/helpAddStation.html");
        txtFile.open(QIODevice::ReadOnly);
        textBrowser->setHtml(txtFile.readAll());
        txtFile.close();
    }
    else if(listWidget->item(4)==item)
    {
        QFile txtFile(":/html/html/helpAddConnection.html");
        txtFile.open(QIODevice::ReadOnly);
        textBrowser->setHtml(txtFile.readAll());
        txtFile.close();
    }
    else if(listWidget->item(5)==item)
    {
        QFile txtFile(":/html/html/helpAddByText.html");
        txtFile.open(QIODevice::ReadOnly);
        textBrowser->setHtml(txtFile.readAll());
        txtFile.close();
    }
}


================================================
FILE: SubwayTransferSystem/apphelp.h
================================================
#ifndef APPHELP_H
#define APPHELP_H

#include <QWidget>
#include <QPushButton>
#include <QTextBrowser>
#include <QStackedWidget>
#include <QListWidget>

class AppHelp : public QWidget
{
    Q_OBJECT
public:
    //构造函数
    explicit AppHelp(QWidget *parent = 0);
    //创建UI
    void createHelpUI();

private slots:
    //当前列表项变化
    void listWidgetChanged(QListWidgetItem*);

private:
    QListWidget *listWidget;
    QTextBrowser *textBrowser;
};

#endif // APPHELP_H


================================================
FILE: SubwayTransferSystem/data/demo.txt
================================================
id: 5
name: 5号线
colour: #9253B2
fromTo: 莘庄 闵行开发区
totalStations: 11
1 莘庄	121.385379,31.111193
2 春申路	121.385937,31.098112
3 银都路	121.390143,31.089365
4 颛桥	121.401944,31.066945
5 北桥	121.409755,31.045033
6 剑川路	121.416578,31.026243
7 东川路	121.420012,31.018225
8 金平路	121.410313,31.011237
9 华宁路	121.395292,31.007265
10 文井路	121.38083,31.003366
11 闵行开发区	121.369715,31.000423


================================================
FILE: SubwayTransferSystem/data/outLine.txt
================================================
id: 1
name: 1号线
colour: #E70012
fromTo: 富锦路 莘庄
totalStations: 28
1 富锦路	121.424661,31.39226
2 友谊西路	121.427726,31.381227
3 宝安公路	121.430975,31.369369
4 共富新村	121.433936,31.355004
5 呼兰路	121.437711,31.339703
6 通河新村	121.441498,31.331094
7 共康路	121.447455,31.318642
8 彭浦新村	121.448141,31.305883
9 汶水路	121.449858,31.292242
10 上海马戏城	121.452004,31.279846
11 延长路	121.455265,31.271409
12 中山北路	121.459128,31.258717
13 上海火车站	121.455523,31.249692
14 汉中路	121.459128,31.2414
15 新闸路	121.467882,31.238538
16 人民广场	121.472989,31.232814
17 黄陂南路	121.47329,31.222502
18 陕西南路	121.460115,31.217107
19 常熟路	121.451059,31.213033
20 衡山路	121.446725,31.20426
21 徐家汇	121.438056,31.191522
22 上海体育馆	121.436511,31.181903
23 漕宝路	121.43458,31.168097
24 上海南站	121.43046,31.154693
25 锦江乐园	121.414324,31.142059
26 莲花路	121.402994,31.130929
27 外环路	121.393167,31.120936
28 莘庄	121.385184,31.111237

id: 2
name: 2号线
colour: #008000
fromTo: 浦东国际机场 徐泾东
totalStations: 30
1 浦东国际机场	121.806436,31.149596
2 海天三路	121.796878,31.168459
3 远东大道	121.755346,31.199485
4 凌空路	121.723791,31.192826
5 川沙	121.69821,31.186741
6 华夏东路	121.681098,31.196553
7 创新中路	121.673133,31.214327
8 唐镇	121.656269,31.214107
9 广兰路	121.619354,31.211042
10 金科路	121.601662,31.204405
11 张江高科	121.587687,31.201832
12 龙阳路	121.557884,31.204102
13 世纪公园	121.552556,31.215723
14 上海科技馆	121.544439,31.21882
15 世纪大道 121.527221,31.228764
16 东昌路	121.515556,31.23327
17 陆家嘴	121.502937,31.237991
18 南京东路	121.475137,31.232781
19 人民广场	121.472894,31.232943
20 南京西路	121.459971,31.229853
21 静安寺	121.445314,31.223493
22 江苏路	121.430635,31.220408
23 中山公园	121.416649,31.219879
24 娄山关路	121.404058,31.211158
25 威宁路 121.387285,31.21487
26 北新泾	121.373994,31.216357
27 淞虹路	121.359588,31.218212
28 虹桥2号航站楼	121.327625,31.194014
29 虹桥火车站	121.318911,31.193987
30 徐泾东	121.299204,31.188367

id: 3
name: 3号线
colour: #FFD100
fromTo: 上海南站 江杨北路
totalStations: 29
1 上海南站	121.430041,31.154579
2 石龙路	121.443205,31.157949
3 龙漕路	121.444346,31.16961
4 漕溪路	121.43841,31.176746
5 宜山路	121.427817,31.186164
6 虹桥路	121.420814,31.197524
7 延安西路	121.417062,31.209616
8 中山公园	121.415683,31.218026
9 金沙江路	121.41342,31.232338
10 曹杨路	121.417454,31.238943
11 镇坪路	121.429856,31.246135
12 中潭路	121.441143,31.254316
13 上海火车站	121.458052,31.24929
14 宝山路	121.476076,31.251491
15 东宝兴路	121.480024,31.259782
16 虹口足球场	121.479252,31.269613
17 赤峰路	121.482427,31.280984
18 大柏树	121.483286,31.289273
19 江湾镇	121.485174,31.305518
20 殷高西路	121.484616,31.319927
21 长江南路	121.491182,31.331878
22 淞发路	121.500409,31.344817
23 张华浜	121.498521,31.3579
24 淞滨路	121.492556,31.371019
25 水产路	121.488178,31.381095
26 宝杨路	121.479466,31.395126
27 友谊路	121.475904,31.403844
28 铁力路	121.460798,31.407947
29 江杨北路	121.439984,31.407617

id: 4
name: 4号线
colour: #471E86
fromTo: 宜山路 虹桥路
totalStations: 26
1 宜山路	121.427194,31.186717
2 上海体育馆	121.436721,31.182311
3 上海体育场	121.443588,31.184955
4 东安路	121.454917,31.190021
5 大木桥路	121.463844,31.194353
6 鲁班路	121.474487,31.198685
7 西藏南路	121.489507,31.201621
8 南浦大桥	121.499635,31.207935
9 塘桥	121.51869,31.209623
10 蓝村路	121.527627,31.211672
11 浦电路(4号线)	121.532044,31.222246
12 世纪大道	121.527444,31.228561
13 浦东大道	121.51929,31.239423
14 杨树浦路	121.51723,31.251898
15 大连路	121.51354,31.257474
16 临平路	121.500923,31.260189
17 海伦路	121.488735,31.258868
18 宝山路	121.47689,31.251237
19 上海火车站	121.455947,31.249476
20 中潭路	121.441184,31.254319
21 镇坪路	121.431829,31.246321
22 曹杨路	121.417667,31.237735
23 金沙江路	121.411315,31.230836
24 中山公园	121.415607,31.217551
25 延安西路	121.41698,31.20955
26 虹桥路	121.422216,31.195968

id: 5
name: 5号线
colour: #9253B2
fromTo: 莘庄 闵行开发区
totalStations: 11
1 莘庄	121.385379,31.111193
2 春申路	121.385937,31.098112
3 银都路	121.390143,31.089365
4 颛桥	121.401944,31.066945
5 北桥	121.409755,31.045033
6 剑川路	121.416578,31.026243
7 东川路	121.420012,31.018225
8 金平路	121.410313,31.011237
9 华宁路	121.395292,31.007265
10 文井路	121.38083,31.003366
11 闵行开发区	121.369715,31.000423

id: 6
name: 6号线
colour: #D7006C
fromTo: 港城路 东方体育中心
totalStations: 28
1 港城路	121.574752,31.353005
2 外高桥保税区北	121.586768,31.347764
3 航津路	121.593892,31.33532
4 外高桥保税区南	121.601874,31.321427
5 洲海路	121.589386,31.312261
6 五洲大道	121.589129,31.302618
7 东靖路	121.588528,31.290736
8 巨峰路	121.588399,31.280651
9 五莲路	121.588013,31.271775
10 博兴路	121.586768,31.263154
11 金桥路	121.581533,31.256955
12 云山路	121.572778,31.250057
13 德平路	121.564324,31.245324
14 北洋泾路	121.551921,31.238867
15 民生路	121.543638,31.235454
16 源深体育中心	121.534798,31.232775
17 世纪大道	121.527373,31.228298
18 浦电路(6号线)	121.529104,31.22008
19 蓝村路	121.527846,31.211526
20 上海儿童医学中心	121.523297,31.203194
21 临沂新村	121.516516,31.193356
22 高科西路	121.509778,31.185793
23 东明路	121.51098,31.172465
24 高青路	121.515658,31.159466
25 华夏西路	121.514327,31.14977
26 上南路	121.50613,31.148779
27 灵岩南路	121.495316,31.148558
28 东方体育中心	121.480209,31.153223

id: 7
name: 7号线
colour: #FF7F00
fromTo: 花木路 美兰湖
totalStations: 33
1 花木路	121.562754,31.211212
2 龙阳路	121.557304,31.20321
3 芳华路	121.550094,31.193005
4 锦绣路	121.53988,31.187278
5 杨高南路	121.525074,31.187278
6 高科西路	121.509711,31.185846
7 云台路	121.500527,31.181991
8 耀华路	121.494054,31.182001
9 长清路	121.486117,31.174611
10 后滩		121.473748,31.171967
11 龙华中路	121.456968,31.183864
12 东安路	121.45465,31.190399
13 肇嘉浜路	121.450273,31.199393
14 常熟路	121.449028,31.213121
15 静安寺	121.44847,31.222736
16 昌平路	121.442806,31.233305
17 长寿路	121.4383,31.240497
18 镇坪路	121.431776,31.246258
19 岚皋路	121.422035,31.256164
20 新村路	121.422721,31.263684
21 大华三路	121.423022,31.273955
22 行知路	121.421348,31.284885
23 大场镇	121.416541,31.293026
24 场中路	121.413537,31.303404
25 上大路	121.408559,31.314807
26 南陈路	121.398817,31.321296
27 上海大学	121.389076,31.320416
28 祁华路	121.373626,31.322066
29 顾村公园	121.373025,31.344463
30 刘行	121.362425,31.3574
31 潘广路	121.355988,31.364107
32 罗南新村	121.35749,31.388838
33 美兰湖	121.350237,31.401623

id: 8
name: 8号线
colour: #0000FF
fromTo: 沈杜公路 市光路
totalStations: 30
1 沈杜公路	121.512272,31.061427
2 联航路	121.510737,31.07297
3 江月路	121.508076,31.084143
4 浦江镇	121.505844,31.096345
5 芦恒路	121.497862,31.119126
6 凌兆新村	121.489451,31.14102
7 东方体育中心	121.480181,31.152847
8 杨思	121.493399,31.16078
9 成山路	121.496146,31.170474
10 耀华路	121.494515,31.178038
11 中华艺术宫	121.493571,31.184941
12 西藏南路	121.489537,31.20146
13 陆家浜路	121.486447,31.211151
14 老西门	121.483271,31.218638
15 大世界	121.479409,31.227006
16 人民广场	121.474774,31.232437
17 曲阜路	121.470654,31.241977
18 中兴路	121.469281,31.252911
19 西藏北路	121.469023,31.263183
20 虹口足球场	121.47855,31.271693
21 曲阳路	121.490996,31.276168
22 四平路	121.501467,31.274847
23 鞍山新村	121.509878,31.27338
24 江浦路	121.518118,31.27448
25 黄兴路	121.528504,31.278442
26 延吉中路	121.534684,31.288344
27 黄兴公园	121.53331,31.295239
28 翔殷路	121.532109,31.304699
29 嫩江路	121.531508,31.314526
30 市光路	121.531765,31.322445

id: 9
name: 9号线
colour: #7ac8ee
fromTo: 杨高中路 松江南站
totalStations: 26
1 杨高中路	121.548664,31.22751
2 世纪大道	121.527221,31.228764
3 商城路	121.516428,31.23014
4 小南门	121.498446,31.216837
5 陆家浜路	121.486215,31.21179
6 马当路	121.477182,31.209514
7 打浦桥	121.468792,31.206211
8 嘉善路	121.460659,31.202614
9 肇嘉浜路	121.450317,31.199218
10 徐家汇	121.436884,31.195199
11 宜山路	121.427314,31.184387
12 桂林路	121.417916,31.174767
13 漕河泾开发区	121.397853,31.170508
14 合川路	121.384828,31.166469
15 星中路	121.368971,31.157986
16 七宝	121.34923,31.15525
17 中春路	121.337642,31.149373
18 九亭	121.319296,31.137252
19 泗泾	121.260288,31.117562
20 佘山	121.229732,31.103599
21 洞泾	121.23059,31.084269
22 松江大学城	121.231706,31.053539
23 松江新城	121.230676,31.0303
24 松江体育中心	121.230333,31.015884
25 醉白池	121.229361,31.001125
26 松江南站	121.229903,30.982482

id: 10
name: 10号线
colour: #C7AFD3
fromTo: 新江湾城 虹桥火车站
totalStations: 28
1 新江湾城	121.506951,31.328496
2 殷高东路	121.506779,31.321714
3 三门路	121.508453,31.313245
4 江湾体育场	121.514247,31.302648
5 五角场	121.514805,31.297955
6 国权路	121.510084,31.289373
7 同济大学	121.506393,31.282075
8 四平路	121.501501,31.27474
9 邮电新村	121.49442,31.268247
10 海伦路	121.488583,31.259186
11 四川北路	121.484163,31.251886
12 天潼路	121.482489,31.243814
13 南京东路	121.484592,31.238163
14 豫园	121.487296,31.227705
15 老西门	121.48382,31.219081
16 新天地	121.475365,31.216181
17 陕西南路	121.458542,31.215007
18 上海图书馆	121.444338,31.207923
19 交通大学	121.435282,31.202013
20 虹桥路	121.422622,31.19625
21 宋园路	121.411936,31.19647
22 伊犁路	121.403868,31.19871
23 水城路	121.392195,31.19926
24 龙溪路	121.38005,31.194231
25 上海动物园	121.367905,31.190119
26 虹桥1号航站楼	121.347263,31.191363
27 虹桥2号航站楼	121.326385,31.194226
28 虹桥火车站	121.319025,31.193919

id: 11
name: 10号线
colour: #C7AFD3
fromTo: 新江湾城 航中路
totalStations: 27
1 新江湾城	121.506951,31.328496
2 殷高东路	121.506779,31.321714
3 三门路	121.508453,31.313245
4 江湾体育场	121.514247,31.302648
5 五角场	121.514805,31.297955
6 国权路	121.510084,31.289373
7 同济大学	121.506393,31.282075
8 四平路	121.501501,31.27474
9 邮电新村	121.49442,31.268247
10 海伦路	121.488583,31.259186
11 四川北路	121.484163,31.251886
12 天潼路	121.482489,31.243814
13 南京东路	121.484592,31.238163
14 豫园	121.487296,31.227705
15 老西门	121.48382,31.219081
16 新天地	121.475365,31.216181
17 陕西南路	121.458542,31.215007
18 上海图书馆	121.444338,31.207923
19 交通大学	121.435282,31.202013
20 虹桥路	121.422622,31.19625
21 宋园路	121.411936,31.19647
22 伊犁路	121.403868,31.19871
23 水城路	121.392195,31.19926
24 龙溪路	121.38005,31.194231
25 龙柏新村	121.370266,31.176994
26 紫藤路	121.364472,31.169687
27 航中路	121.355159,31.165354

id: 12
name: 11号线
colour: #841C21
fromTo: 迪士尼 嘉定北
totalStations: 31
1 迪士尼	121.668162,31.141355
2 康新公路	121.616857,31.1305
3 秀沿路	121.598146,31.137994
4 罗山路	121.592824,31.153053
5 御桥	121.570766,31.157974
6 浦三路	121.539266,31.150629
7 三林东	121.522999,31.146459
8 三林	121.511628,31.143063
9 东方体育中心	121.480214,31.153127
10 龙耀路	121.459722,31.159866
11 云锦路	121.458435,31.166255
12 龙华	121.453113,31.172498
13 上海游泳馆	121.441011,31.178593
14 徐家汇	121.435947,31.193719
15 交通大学	121.435089,31.202089
16 江苏路	121.430711,31.220661
17 隆德路	121.423244,31.230349
18 曹杨路	121.417493,31.237541
19 枫桥路	121.411142,31.241724
20 真如	121.406936,31.250677
21 上海西站	121.402816,31.26249
22 李子园	121.390199,31.269019
23 祁连山路	121.376037,31.271514
24 武威路	121.364708,31.276429
25 桃浦新村	121.349773,31.28127
26 南翔	121.322393,31.2966
27 马陆	121.277074,31.319479
28 嘉定新城	121.254158,31.329964
29 白银路	121.245489,31.344919
30 嘉定西	121.227378,31.376874
31 嘉定北	121.237507,31.391529

id: 13
name: 11号线
colour: #841C21
fromTo: 迪士尼 花桥
totalStations: 35
1 迪士尼	121.668162,31.141355
2 康新公路	121.616857,31.1305
3 秀沿路	121.598146,31.137994
4 罗山路	121.592824,31.153053
5 御桥	121.570766,31.157974
6 浦三路	121.539266,31.150629
7 三林东	121.522999,31.146459
8 三林	121.511628,31.143063
9 东方体育中心	121.480214,31.153127
10 龙耀路	121.459722,31.159866
11 云锦路	121.458435,31.166255
12 龙华	121.453113,31.172498
13 上海游泳馆	121.441011,31.178593
14 徐家汇	121.435947,31.193719
15 交通大学	121.435089,31.202089
16 江苏路	121.430711,31.220661
17 隆德路	121.423244,31.230349
18 曹杨路	121.417493,31.237541
19 枫桥路	121.411142,31.241724
20 真如	121.406936,31.250677
21 上海西站	121.402816,31.26249
22 李子园	121.390199,31.269019
23 祁连山路	121.376037,31.271514
24 武威路	121.364708,31.276429
25 桃浦新村	121.349773,31.28127
26 南翔	121.322393,31.2966
27 马陆	121.277074,31.319479
28 嘉定新城	121.254158,31.329964
29 上海赛车场	121.225919,31.33198
30 昌吉东路	121.20017,31.293739
31 上海汽车城	121.180472,31.285524
32 安亭	121.161976,31.288458
33 兆丰路	121.15026,31.289082
34 光明路	121.117043,31.29605
35 花桥	121.104211,31.298727

id: 14
name: 12号线
colour: #057B69
fromTo: 七莘路 金海路
totalStations: 32
1 七莘路	121.362464,31.131638
2 虹莘路	121.380488,31.137442
3 顾戴路	121.391732,31.140748
4 东兰路	121.39199,31.155659
5 虹梅路	121.397258,31.16025
6 虹漕路	121.410561,31.164014
7 桂林公园	121.419509,31.16664
8 漕宝路	121.432684,31.168145
9 龙漕路	121.444443,31.169357
10 龙华	121.452683,31.175012
11 龙华中路	121.456931,31.184778
12 大木桥路	121.463369,31.193883
13 嘉善路	121.460751,31.20273
14 陕西南路	121.459388,31.216132
15 南京西路	121.459292,31.227577
16 汉中路	121.458519,31.241668
17 曲阜路	121.471437,31.242292
18 天潼路	121.482466,31.24376
19 国际客运中心	121.497787,31.250034
20 提篮桥	121.50667,31.253299
21 大连路	121.513108,31.257775
22 江浦公园	121.523622,31.264561
23 宁国路	121.532248,31.26856
24 隆昌路	121.54465,31.275199
25 爱国路	121.552761,31.2796
26 复兴岛	121.561216,31.280627
27 东陆路	121.578983,31.282241
28 巨峰路	121.589669,31.28004
29 杨高北路	121.602886,31.279894
30 金京路	121.615718,31.27949
31 申江路	121.626705,31.280114
32 金海路	121.638635,31.263131

id: 15
name: 13号线
colour: #E77DAD
fromTo: 金运路 世博大道
totalStations: 19
1 金运路	121.319308,31.240986
2 金沙江西路	121.335144,31.240913
3 丰庄	121.354928,31.242637
4 祁连山南路	121.367202,31.23772
5 真北路	121.382093,31.232069
6 大渡河路	121.394195,31.231849
7 金沙江路	121.411576,31.231042
8 隆德路	121.423163,31.230235
9 武宁路	121.430158,31.234088
10 长寿路	121.438441,31.240913
11 江宁路	121.444621,31.244178
12 汉中路	121.458654,31.241646
13 自然博物馆	121.462259,31.236326
14 南京西路	121.462388,31.228546
15 淮海中路	121.464405,31.220326
16 新天地	121.475219,31.216472
17 马当路	121.476893,31.209609
18 世博会博物馆	121.4817,31.197606
19 世博大道	121.484275,31.182811

id: 16
name: 16号线
colour: #89CFBD
fromTo: 龙阳路 滴水湖
totalStations: 13
1 龙阳路	121.557634,31.203575
2 华夏中路	121.583109,31.175759
3 罗山路	121.593254,31.15342
4 周浦东	121.606643,31.11022
5 鹤沙航城	121.611536,31.077146
6 航头东	121.617286,31.054795
7 新场	121.648615,31.045383
8 野生动物园	121.698825,31.049795
9 惠南	121.761482,31.053472
10 惠南东	121.793325,31.026262
11 书院	121.849973,30.959086
12 临港大道	121.911085,30.923382
13 滴水湖	121.929109,30.907256


================================================
FILE: SubwayTransferSystem/data/subwayLine.txt
================================================
id: 1
name: 1号线
colour: #E70012
from: 富锦路
to: 莘庄
totalStation: 28
2584702105	富锦路	31.3933626	121.4200409
3800583782	友谊西路	31.3822507	121.4234632
3800583780	宝安公路	31.3706177	121.4264168
3800583781	共富新村	31.3561191	121.4294836
3800583785	呼兰路	31.3407871	121.4333835
4559664372	通河新村	31.3324328	121.4370701
4559664374	共康路	31.3216925	121.4419944
4559664009	彭浦新村	31.3074959	121.4439
4559664016	汶水路	31.2944979	121.4455635
4559664017	上海马戏城	31.2811737	121.4475097
4559664024	延长路	31.2732291	121.4509837
4559664491	中山北路	31.2614875	121.4544335
4559578257	上海火车站	31.2491107	121.4512065
4559664399	汉中路	31.2437538	121.4537124
4559664404	新闸路	31.2405396	121.4636428
3800386157	人民广场	31.2341757	121.4712404
4559578270	黄陂南路	31.2249557	121.4693343
4559578275	陕西南路	31.2189248	121.4552521
4559664568	常熟路	31.2151926	121.446465
4559664576	衡山路	31.2077094	121.4428948
4559578285	徐家汇	31.1950844	121.4338794
4559664579	上海体育馆	31.1838659	121.4317243
4559664585	漕宝路	31.1702742	121.4303171
4559665792	上海南站	31.1565785	121.4254997
471013199	锦江乐园	31.1440768	121.4095039
471012844	莲花路	31.1328416	121.3982765
471012636	外环路	31.1228305	121.3883431
470626733	莘庄	31.1123828	121.3802874

id: 2
name: 2号线
colour: #008000
from: 浦东国际机场
to: 徐泾东
totalStation: 29
3800386162	浦东国际机场	31.1539931	121.8013344
3800385625	海天三路	31.1711359	121.7922919
3800386194	远东大道	31.2014449	121.7503144
605037023	凌空路	31.1947136	121.7188506
605032163	川沙	31.1888308	121.6938288
605037513	华夏东路	31.1988574	121.6767066
605027658	创新中路	31.2155887	121.6699061
605027433	唐镇	31.2162236	121.6517707
605025081	广兰路	31.2129523	121.6163231
605024325	金科路	31.2064028	121.597836
470637744	张江高科	31.2039019	121.5834328
3800385648	龙阳路	31.2053095	121.552296
471016943	上海科技馆	31.2218914	121.5386617
3800385608	世纪大道	31.2307149	121.5229152
3800385616	东昌路	31.2352959	121.5112916
3800385652	陆家嘴	31.2401812	121.4981403
468916502	南京东路	31.2391219	121.4792304
469787957	人民广场	31.2354745	121.4705726
471088265	南京西路	31.2318255	121.4560232
4241260093	静安寺	31.2252923	121.4421389
622193942	江苏路	31.2213609	121.4265267
4520492425	中山公园	31.2200642	121.4115608
471088787	娄山关路	31.2129936	121.3991469
4520492882	威宁路	31.2166295	121.3831768
471091952	北新泾	31.218802	121.36812
471092256	淞虹路	31.2199749	121.3558076
605019372	虹桥2号航站楼	31.1962684	121.3225012
3800385631	虹桥二号航站楼	31.1965675	121.3226302
4460193672	虹桥火车站	31.196131	121.3156124

id: 3
name: 3号线
colour: #FFD100
from: 江杨北路
to: 上海南站
totalStation: 29
4569868066	江杨北路	31.4095962	121.435939
4569868069	铁力路	31.410105	121.4576264
1130521366	友谊路	31.4053452	121.4715994
4569868293	宝杨路	31.3966293	121.4753041
4569868318	水产路	31.3827275	121.484011
4569868398	淞滨路	31.3724622	121.4884743
4084890971	张华浜	31.3594153	121.4944348
4569813684	淞发路	31.3466275	121.495606
4569814489	长江南路	31.3335208	121.4866463
4569814490	殷高西路	31.3213309	121.4804198
4569814492	江湾镇	31.3068183	121.4805201
4569798797	大柏树	31.2907322	121.4785908
1130808922	赤峰路	31.2824973	121.4778472
4569798799	虹口足球场	31.2726034	121.4747671
4569795759	东宝兴路	31.2612062	121.4757568
4569795762	宝山路	31.2530993	121.4711217
1129387315	上海火车站	31.2520583	121.4523857
4569795765	中潭路	31.2563362	121.4356266
1129239840	镇坪路	31.2478102	121.4245142
4569783541	曹杨路	31.2406868	121.412465
4569783543	金沙江路	31.2334443	121.4083746
3800386197	中山公园	31.2191136	121.4113723
4569783546	延安西路	31.2107553	121.4123178
4569783551	虹桥路	31.1986765	121.4163853
4569783552	宜山路	31.1879465	121.4229946
4569783554	漕溪路	31.1781746	121.4344163
4569783556	龙漕路	31.1706912	121.4399801
4569783559	石龙路	31.1596273	121.4379161
3279344919	上海南站	31.1549574	121.4259971

id: 4
name: 4号线
colour: #471E86
from: null
to: null
totalStation: 18
266073071	海伦路	31.2609506	121.4853185
266072852	临平路	31.2629428	121.4964404
267197155	大连路	31.2602574	121.5082518
472140647	杨树浦路	31.2544208	121.5123604
267197152	浦东大道	31.2419442	121.5150029
267197150	世纪大道	31.2309778	121.5227543
472137933	浦电路	31.2243582	121.527867
472140982	蓝村路	31.2139796	121.5238557
472137910	塘桥	31.2116896	121.513974
471985357	宜山路	31.1886631	121.4229398
301639413	西藏南路	31.2036493	121.4851416
485353650	鲁班路	31.2011258	121.4706402
471986560	大木桥路	31.1960861	121.4591518
471986555	上海体育场	31.1874075	121.4391017
471986612	南浦大桥	31.2104442	121.4950777
471986551	上海体育馆	31.1845999	121.432432
804474524	虹桥路	31.1989568	121.4164767
4571430311	东安路	31.1925856	121.4501895

id: 5
name: 5号线
colour: #9253B2
from: 闵行开发区
to: 莘庄
totalStation: 11
4563678318	闵行开发区	31.002676	121.3654379
4563677253	文井路	31.0056477	121.3765305
4563678309	华宁路	31.0094993	121.3909794
4563678307	金平路	31.0132667	121.405889
4563678304	东川路	31.0205267	121.4151396
4563678301	剑川路	31.0287732	121.4118212
4563677262	北桥	31.0473809	121.405322
4563677260	颛桥	31.0692574	121.397115
4563677258	银都路	31.091592	121.3854682
4563677256	春申路	31.1004712	121.3809929
4559664168	莘庄	31.1136576	121.3811042

id: 6
name: 6号线
colour: #D7006C
from: 东方体育中心
to: 港城路
totalStation: 19
478774137	上南路	31.1511766	121.5019956
478774109	灵岩南路	31.1507549	121.4908101
478773874	东方体育中心	31.1554325	121.4758425
478774706	东明路	31.174803	121.5066043
478774805	高科西路	31.187563	121.5056521
472139673	临沂新村	31.195787	121.5131727
472139055	世纪大道	31.2307121	121.5227173
602749130	博兴路	31.2661344	121.5826719
472139052	浦电路	31.2226916	121.5244594
472139047	蓝村路	31.2141328	121.5236963
478772242	华夏西路	31.151974	121.51032
621912244	高青路	31.1614994	121.5113226
472139046	上海儿童医学中心	31.2061387	121.519567
472139059	源深体育中心	31.2350191	121.5299034
621913770	民生路	31.2382859	121.5402749
621914110	北洋泾路	31.2411512	121.5478075
621914221	德平路	31.2480485	121.5608567
621914289	云山路	31.2520996	121.5677906
621914488	金桥路	31.2591646	121.5774818

id: 7
name: 7号线
colour: #FF7F00
from: 美兰湖
to: 花木路
totalStation: 33
1221258068	美兰湖	31.4032271	121.3458577
4571267424	罗南新村	31.3899534	121.3529669
4571267309	潘广路	31.3654514	121.3518324
4571267089	刘行	31.3592752	121.3582022
4571267212	顾村公园	31.3456433	121.3689853
4571267320	祁华路	31.3235545	121.3690565
4571266995	上海大学	31.3224712	121.3846558
4571267332	南陈路	31.3235666	121.3942271
4571266994	上大路	31.316375	121.4040757
4571266991	场中路	31.3050495	121.4086273
4571267239	大场镇	31.2949031	121.4117566
4571267345	行知路	31.2852481	121.417543
4571266894	大华三路	31.2751359	121.418498
4571267241	新村路	31.2650693	121.4178346
4571266891	岚皋路	31.2572552	121.4172532
4571267359	镇坪路	31.2483656	121.427186
4571267253	长寿路	31.2418081	121.433661
4571267257	昌平路	31.2350088	121.4384725
4571267366	静安寺	31.2252098	121.4438124
4571267369	常熟路	31.2147604	121.4447734
4571267265	肇嘉浜路	31.2010939	121.445902
4571267270	东安路	31.1925436	121.4503969
4571267377	龙华中路	31.185916	121.452855
4571267272	后滩	31.1739139	121.4690491
4571267279	长清路	31.1771537	121.482409
4571267385	耀华路	31.1806489	121.4906856
4571267388	云台路	31.1847811	121.4967173
4571267393	高科西路	31.1877669	121.506069
4571267401	杨高南路	31.1895931	121.5207941
4571267283	锦绣路	31.1897479	121.5364372
4571266931	芳华路	31.1957033	121.5455599
4571267595	龙阳路	31.2056528	121.553972
4571267423	花木路	31.2137836	121.558496

id: 8
name: 8号线
colour: #0000FF
from: null
to: null
totalStation: 24
301638499	江浦路	31.2769665	121.5142018
301638468	嫩江路	31.3167471	121.5276856
301638476	黄兴公园	31.2978687	121.5288453
301638467	市光路	31.3247945	121.5276595
301638471	翔殷路	31.3071134	121.5276104
301638494	黄兴路	31.2803115	121.5230166
301638504	鞍山新村	31.2749584	121.5048124
301638544	曲阜路	31.2441977	121.4669863
301638516	曲阳路	31.2785073	121.485791
301638539	中兴路	31.256373	121.4640767
301638561	大世界	31.2291572	121.474956
472368139	老西门	31.220833	121.478477
301639398	陆家浜路	31.2139173	121.4814746
301639413	西藏南路	31.2036493	121.4851416
700176212	中华艺术宫	31.1869806	121.4892799
301638523	虹口足球场	31.2718466	121.4747091
301638480	延吉中路	31.290732	121.530645
301638528	西藏北路	31.2655487	121.4645981
478773874	东方体育中心	31.1554325	121.4758425
478768049	成山路	31.1727625	121.4918051
621906397	芦恒路	31.1202197	121.4938452
478768611	凌兆新村	31.1430995	121.4848026
621907265	杨思	31.1630048	121.4890354
1879882248	四平路	31.2767948	121.4970345

id: 9
name: 9号线
colour: #7ac8ee
from: null
to: null
totalStation: 29
849493057	七宝	31.1572981	121.3442488
621901822	松江体育中心	31.0179935	121.2262839
621901825	醉白池	31.0028368	121.224526
608703668	徐家汇	31.1974667	121.4323716
600504933	嘉善路	31.2046098	121.4563758
608700745	打浦桥	31.2082702	121.463967
471988294	陆家浜路	31.2137878	121.4811531
608700783	小南门	31.2190057	121.4940871
608700785	商城路	31.2325013	121.5120506
485350360	肇嘉浜路	31.2013653	121.4458926
471988309	世纪大道	31.2306159	121.522599
472226807	桂林路	31.1764027	121.4117145
472226771	宜山路	31.1861681	121.4227546
471988271	漕河泾开发区	31.1726509	121.392777
472225791	合川路	31.168979	121.3803614
472225785	星中路	31.1604595	121.3640536
472226277	中春路	31.1518149	121.3342241
472226244	九亭	31.1393075	121.314195
472225762	松江新城	31.0322106	121.2262996
471988293	马当路	31.2112188	121.4718956
4250052747	芳甸路(在建)	31.2343776	121.5544342
4250052755	曹路(在建)	31.273384	121.6784979
4250052754	民雷路(在建)	31.2704328	121.6638097
4250052753	顾唐路(在建)	31.2682411	121.6522792
4250052752	金海路(在建)	31.266115	121.6349293
4250052751	金吉路(在建)	31.2666375	121.6247147
4250052750	金桥(在建)	31.2630973	121.6072301
4250052749	台儿庄路(在建)	31.2544251	121.5931599
4250052748	蓝天路(在建)	31.2431953	121.5736522

id: 10
name: 10号线
colour: #C7AFD3
from: null
to: null
totalStation: 30
1865258670	四川北路	31.2537048	121.479494
810762677	五角场	31.2997294	121.5100904
1879882295	四平路	31.2768364	121.4970111
472368078	南京东路	31.2394134	121.4805311
1500382256	海伦路	31.2611688	121.4842056
804465143	陕西南路	31.2168228	121.4540175
469774464	同济大学	31.2844081	121.5020918
468748469	国权路	31.2912473	121.5056173
468749842	殷高东路	31.3237994	121.5024607
1871683943	三门路	31.3151646	121.5037905
468747600	新江湾城	31.330778	121.5023788
469778116	邮电新村	31.270398	121.489829
1865258671	天潼路	31.2457632	121.4778324
472368139	老西门	31.220833	121.478477
601661256	新天地	31.2180291	121.4698051
804465180	上海图书馆	31.2094457	121.4388249
804474514	交通大学	31.2041254	121.4306649
804474531	宋园路	31.1983218	121.4078985
804474544	伊犁路	31.2010859	121.3980124
804474558	水城路	31.2012235	121.3876161
804474570	龙溪路	31.1969928	121.3767693
804485337	航中路	31.1671342	121.349164
804485311	龙柏新村	31.1792881	121.3661584
804485332	紫藤路	31.171357	121.3589487
804485478	上海动物园	31.1920777	121.3634113
810762676	江湾体育场	31.3051127	121.509616
845389048	豫园	31.2299247	121.4829009
804474524	虹桥路	31.1989568	121.4164767
1542037120	虹桥1号航站楼	31.1935634	121.3426651
4460193672	虹桥火车站	31.196131	121.3156124

id: 11
name: 11号线
colour: #841C21
from: 迪士尼
to: 嘉定北
totalStation: 26
3800185678	罗山路	31.1560621	121.5888829
3800185710	御桥	31.1605773	121.5674244
3800185686	浦三路	31.1532165	121.5350476
3800185056	三林东	31.148666	121.5188667
3800185690	三林	31.1454212	121.5079185
3800185684	东方体育中心	31.1554584	121.4758512
3800185676	龙耀路	31.1615123	121.4552046
3800185708	云锦路	31.1695044	121.4538975
3800185674	龙华	31.1748721	121.448689
3800185696	上海游泳馆	31.1812988	121.4367786
3800185704	徐家汇	31.1963151	121.431385
3800185668	江苏路	31.22155	121.4262764
3800185672	隆德路	31.2323643	121.4190281
3800185052	曹杨路	31.2403213	121.4122348
3800185658	枫桥路	31.2443645	121.4057363
3800185714	真如	31.2527162	121.4026775
3800185698	上海西站	31.2658397	121.3960838
3800185670	李子园	31.270531	121.3861026
3800185688	祁连山路	31.273425	121.3725609
3800185702	武威路	31.2817867	121.357912
3800185700	桃浦新村	31.2833376	121.3459121
3800185682	南翔	31.2990636	121.3179658
3800185679	马陆	31.3214015	121.2717056
3800185666	嘉定新城	31.3326357	121.2495582
3800185050	白银路	31.3477822	121.2405868
3279344926	嘉定北	31.3938876	121.2336925

id: 11
name: 11号线
colour: #841C21
from: 迪士尼
to: 花桥
totalStation: 31
3800185678	罗山路	31.1560621	121.5888829
3800185710	御桥	31.1605773	121.5674244
3800185686	浦三路	31.1532165	121.5350476
3800185056	三林东	31.148666	121.5188667
3800185690	三林	31.1454212	121.5079185
3800185684	东方体育中心	31.1554584	121.4758512
3800185676	龙耀路	31.1615123	121.4552046
3800185708	云锦路	31.1695044	121.4538975
3800185674	龙华	31.1748721	121.448689
3800185696	上海游泳馆	31.1812988	121.4367786
3800185704	徐家汇	31.1963151	121.431385
3800185668	江苏路	31.22155	121.4262764
3800185672	隆德路	31.2323643	121.4190281
3800185052	曹杨路	31.2403213	121.4122348
3800185658	枫桥路	31.2443645	121.4057363
3800185714	真如	31.2527162	121.4026775
3800185698	上海西站	31.2658397	121.3960838
3800185670	李子园	31.270531	121.3861026
3800185688	祁连山路	31.273425	121.3725609
3800185702	武威路	31.2817867	121.357912
3800185700	桃浦新村	31.2833376	121.3459121
3800185682	南翔	31.2990636	121.3179658
3800185679	马陆	31.3214015	121.2717056
3800185666	嘉定新城	31.3326357	121.2495582
3800185694	上海赛车场	31.3339874	121.220933
3800185053	昌吉东路	31.2951195	121.1953078
3800185692	上海汽车城	31.2874687	121.1755689
3800185048	安亭	31.2904336	121.1567748
3800185712	兆丰路	31.2911068	121.1449472
3800185660	光明路	31.2982893	121.1119096
3800185663	花桥	31.3006751	121.0989437

id: 12
name: 12号线
colour: #057B69
from: null
to: null
totalStation: 32
2625435872	金海路	31.2652003	121.6343843
2625435876	申江路	31.2822916	121.6226109
2625436347	金京路	31.2818459	121.6107893
2625436356	杨高北路	31.2822811	121.598766
2625436354	巨峰路	31.2822848	121.5851419
2625436368	东陆路	31.2846637	121.5746455
2625436358	复兴岛	31.2830035	121.5569651
2625436349	爱国路	31.2819559	121.5482851
2625436627	隆昌路	31.2776103	121.5407282
2625436622	宁国路	31.2706622	121.5283174
2625436620	江浦公园	31.2665283	121.5193398
2625436615	大连路	31.2599715	121.5085675
2625439389	提篮桥	31.2554973	121.5023731
2625439387	国际客运中心	31.2521208	121.4939755
2625439374	天潼路	31.2457595	121.477971
2863456545	曲阜路	31.2443907	121.4672583
4072082530	汉中路	31.2425951	121.4544054
2863452032	陕西南路	31.2177902	121.4547198
2863452046	嘉善路	31.2047633	121.4563038
2863458944	大木桥路	31.196037	121.4591932
2863458946	龙华中路	31.1863352	121.4518955
2863458960	龙华	31.1766437	121.4482038
2863458947	龙漕路	31.172043	121.4389553
2863458958	漕宝路	31.1704085	121.4291078
4072082529	桂林公园	31.1689728	121.4149939
4072082531	虹漕路	31.1662241	121.4061304
4072082528	顾戴路	31.1428208	121.3875997
4072082533	虹莘路	31.1395514	121.3758293
4072082534	七莘路	31.1326471	121.3564792
4250719423	南京西路	31.229438	121.4548158
4127292550	东兰路	31.1577116	121.3871732
4127292551	虹梅路	31.1622153	121.3927025

id: 13
name: 13号线
colour: #E77DAD
from: null
to: null
totalStation: 19
1914416025	金运路	31.2428887	121.31546
1914416023	金沙江西路	31.2430886	121.3306597
1914416019	丰庄	31.244304	121.3507184
1914416022	祁连山南路	31.2395103	121.3627051
1914416021	真北路	31.2340599	121.3775615
1914416020	大渡河路	31.2336576	121.3896152
1914416024	金沙江路	31.2331479	121.4072204
622194085	隆德路	31.2323503	121.4190012
2356329719	武宁路	31.236348	121.4260607
485250315	长寿路	31.2425665	121.4335758
2356329715	江宁路	31.2461329	121.4398587
2356329714	汉中路	31.2425757	121.4543015
2356329717	自然博物馆	31.2382599	121.4578682
2356329718	南京西路	31.2304735	121.4579797
2356329716	淮海中路	31.2218636	121.4598571
601661256	新天地	31.2180291	121.4698051
471988293	马当路	31.2112188	121.4718956
485353633	世博会博物馆	31.1992464	121.4771259
485353627	世博大道	31.1849308	121.4795929

id: 16
name: 16号线
colour: #89CFBD
from: 滴水湖
to: 龙阳路
totalStation: 13
4562133848	滴水湖	30.9099027	121.9251442
2526592353	临港大道	30.9261249	121.9064328
2526598119	书院	30.9619234	121.8457585
4562133836	惠南东	31.0292623	121.789539
4274772979	惠南	31.0560195	121.7566897
4562133805	野生动物园	31.0525333	121.6941206
4562198893	新场	31.0477439	121.6439898
4562198783	航头东	31.0579029	121.6130944
4274772541	鹤沙航城	31.0806608	121.6069539
4274772511	周浦东	31.1129852	121.6026506
4562193619	罗山路	31.1560801	121.5889343
4562193606	华夏中路	31.1786138	121.5788337
3800385644	龙阳路	31.2042355	121.5535481

id: 17
name: 17号线
colour: #0000aa
from: null
to: null
totalStation: 13
4249995828	诸光路(在建)	31.1935855	121.2880817
4249995830	蟠龙路(在建)	31.1884461	121.2742009
4249995832	徐泾北城(在建)	31.1773644	121.2363272
4249995831	徐盈路(在建)	31.18014	121.2498205
4249995847	嘉松中路(在建)	31.166083	121.2203555
4249995888	汇金路(在建)	31.1632585	121.1454776
4249996945	淀山湖大道(在建)	31.1353735	121.0760618
4249997016	朱家角(在建)	31.1026547	121.0446271
4249997015	东方绿舟(在建)	31.1005345	121.0148919
4249996913	漕盈路(在建)	31.1623496	121.0919505
4249996891	青浦新城(在建)	31.1608076	121.1210939
4249995871	赵巷(在建)	31.163113	121.187692
4460193671	虹桥火车站	31.1962371	121.3156133


================================================
FILE: SubwayTransferSystem/graphics_view_zoom.cpp
================================================
#include "graphics_view_zoom.h"
#include <QMouseEvent>
#include <QApplication>
#include <QScrollBar>
#include <qmath.h>

Graphics_view_zoom::Graphics_view_zoom(QGraphicsView* view)
  : QObject(view), _view(view)
{
  _view->viewport()->installEventFilter(this);
  _view->setMouseTracking(true);
  _modifiers = Qt::ControlModifier;
  _zoom_factor_base = 1.0015;
}

void Graphics_view_zoom::gentle_zoom(double factor) {
  _view->scale(factor, factor);
  _view->centerOn(target_scene_pos);
  QPointF delta_viewport_pos = target_viewport_pos - QPointF(_view->viewport()->width() / 2.0,
                                                             _view->viewport()->height() / 2.0);
  QPointF viewport_center = _view->mapFromScene(target_scene_pos) - delta_viewport_pos;
  _view->centerOn(_view->mapToScene(viewport_center.toPoint()));
  emit zoomed();
}

void Graphics_view_zoom::set_modifiers(Qt::KeyboardModifiers modifiers) {
  _modifiers = modifiers;

}

void Graphics_view_zoom::set_zoom_factor_base(double value) {
  _zoom_factor_base = value;
}

bool Graphics_view_zoom::eventFilter(QObject *object, QEvent *event) {
  if (event->type() == QEvent::MouseMove) {
    QMouseEvent* mouse_event = static_cast<QMouseEvent*>(event);
    QPointF delta = target_viewport_pos - mouse_event->pos();
    if (qAbs(delta.x()) > 5 || qAbs(delta.y()) > 5) {
      target_viewport_pos = mouse_event->pos();
      target_scene_pos = _view->mapToScene(mouse_event->pos());
    }
  } else if (event->type() == QEvent::Wheel) {
    QWheelEvent* wheel_event = static_cast<QWheelEvent*>(event);
    if (QApplication::keyboardModifiers() == _modifiers) {
      if (wheel_event->orientation() == Qt::Vertical) {
        double angle = wheel_event->angleDelta().y();
        double factor = qPow(_zoom_factor_base, angle);
        gentle_zoom(factor);
        return true;
      }
    }
  }
  Q_UNUSED(object)
  return false;
}


================================================
FILE: SubwayTransferSystem/graphics_view_zoom.h
================================================
#ifndef GRAPHICS_VIEW_ZOOM_H
#define GRAPHICS_VIEW_ZOOM_H

#include <QObject>
#include <QGraphicsView>

/*!
 * This class adds ability to zoom QGraphicsView using mouse wheel. The point under cursor
 * remains motionless while it's possible.
 *
 * Note that it becomes not possible when the scene's
 * size is not large enough comparing to the viewport size. QGraphicsView centers the picture
 * when it's smaller than the view. And QGraphicsView's scrolls boundaries don't allow to
 * put any picture point at any viewport position.
 *
 * When the user starts scrolling, this class remembers original scene position and
 * keeps it until scrolling is completed. It's better than getting original scene position at
 * each scrolling step because that approach leads to position errors due to before-mentioned
 * positioning restrictions.
 *
 * When zommed using scroll, this class emits zoomed() signal.
 *
 * Usage:
 *
 *   new Graphics_view_zoom(view);
 *
 * The object will be deleted automatically when the view is deleted.
 *
 * You can set keyboard modifiers used for zooming using set_modified(). Zooming will be
 * performed only on exact match of modifiers combination. The default modifier is Ctrl.
 *
 * You can change zoom velocity by calling set_zoom_factor_base().
 * Zoom coefficient is calculated as zoom_factor_base^angle_delta
 * (see QWheelEvent::angleDelta).
 * The default zoom factor base is 1.0015.
 */

class Graphics_view_zoom : public QObject {
  Q_OBJECT
public:
  Graphics_view_zoom(QGraphicsView* view);
  void gentle_zoom(double factor);
  void set_modifiers(Qt::KeyboardModifiers modifiers);
  void set_zoom_factor_base(double value);

private:
  QGraphicsView* _view;
  Qt::KeyboardModifiers _modifiers;
  double _zoom_factor_base;
  QPointF target_scene_pos, target_viewport_pos;
  bool eventFilter(QObject* object, QEvent* event);

signals:
  void zoomed();
};

#endif // GRAPHICS_VIEW_ZOOM_H


================================================
FILE: SubwayTransferSystem/html/helpAddByText.html
================================================
<h3>文本方式简易添加方法</h3>
<br>
<br>
	点击 <img height=24 weight=24 src=":/icon/icon/text.png"> , 以文本方式快捷添加线路、站点、连接关系;
<br>
<p>
	文本格式需要同样例文本格式,格式需规范,否则不能成功添加。
</p>

================================================
FILE: SubwayTransferSystem/html/helpAddConnection.html
================================================
<h3>新增站点连接方法</h3>
<br>
<br>
	点击 <img height=24 weight=24 src=":/icon/icon/connect.png"> , 添加连接;
<br>
<p>
	1.先添加新线路信息;
	<br>
	2.然后在工具【站点】中添加线路站点;
	<br>
	3.最后在工具【连接】中确定站点连接关系;
	<br>
	4.也可以用文本方式简单快捷添加,格式需规范。
</p>

================================================
FILE: SubwayTransferSystem/html/helpAddLine.html
================================================
<h3>新增线路方法</h3>
<br>
<br>
	点击 <img height=24 weight=24 src=":/icon/icon/subway.png"> , 添加线路;
<br>
<p>
	1.先添加新线路信息;
	<br>
	2.然后在工具【站点】中添加线路站点;
	<br>
	3.最后在工具【连接】中确定站点连接关系;
	<br>
	4.也可以用文本方式简单快捷添加,格式需规范。
</p>

================================================
FILE: SubwayTransferSystem/html/helpAddStation.html
================================================
<h3>新增站点方法</h3>
<br>
<br>
	点击 <img height=24 weight=24 src=":/icon/icon/station.png"> , 添加站点;
<br>
<p>
	1.先添加新线路信息;
	<br>
	2.然后在工具【站点】中添加线路站点;
	<br>
	3.最后在工具【连接】中确定站点连接关系;
	<br>
	4.也可以用文本方式简单快捷添加,格式需规范。
</p>

================================================
FILE: SubwayTransferSystem/html/helpTransfer.html
================================================
<h3>地铁换乘指南</h3>
<br>
<p>
	视图右侧为换乘指南,选择相应线路站点即可换乘;
	<br>
	选择方式有;<strong>“最短时间”</strong>和;<strong>“最少换乘”</strong>;
	<br>
	<strong>“最短时间”</strong>换乘指南线路为依次乘坐的详细站点路线;
	<br>
	<strong>“最少换乘”</strong>换乘指南线路为换乘的关键站点;
	
	<br><br>
	换乘后,点击 <img height=24 weight=24 src=":/icon/icon/map.png"> , 可重新查看所有线路;
</p>




================================================
FILE: SubwayTransferSystem/html/helpWatch.html
================================================
<h3>查看地铁网络线路图</h3>
<br>
<p>
	地铁线路图根据上海现有地铁站的地理<strong>经纬度</strong>数据显现出来;
	<br>
	每条线路有不同的颜色,重叠的线路为颜色叠加显示,效果为<strong>正片叠底</strong>,参见 <a href="http://www.cgspread.com/3551.html">叠加模式</a> ;
	<br>
	站点中心为白色为不可换乘站点,非白色为可换乘其它线路站点;
	<br><br>
	点击 <img height=24 weight=24 src=":/icon/icon/enlarge.png"> , 视图放大;
	<br>
	点击 <img height=24 weight=24 src=":/icon/icon/shrink.png"> , 视图缩小;
	<br>
	鼠标可直接缩放;
	<br>
	将鼠标悬停在站点,可查看站点详细信息;
	<br>
	将鼠标悬停在线路,可查看线路详细信息;
</p>




================================================
FILE: SubwayTransferSystem/line.h
================================================
#ifndef LINE_H
#define LINE_H

#include <QString>
#include <QColor>
#include <QPair>
#include <QSet>
#include <QVector>

//定义边类型
typedef QPair<int,int> Edge;

class SubwayGraph;
class QTextStream;

//线路类
class Line
{
protected:
    int id;                     //线路ID
    QString name;               //线路名称
    QColor color;               //线路颜色
    QVector <QString> fromTo;   //线路起始站点
    QSet<int> stationsSet;      //线路站点集合
    QSet<Edge> edges;           //线路站点连接关系

public:
    //构造函数
    Line(){};
    Line(QString lineName, QColor lineColor):name(lineName), color(lineColor)
    {};

    //声明友元
    friend class SubwayGraph;
    friend class QTextStream;
};

#endif // LINE_H


================================================
FILE: SubwayTransferSystem/main.cpp
================================================
#include "mainwindow.h"
#include <QApplication>
#include <QSplashScreen>
#include <QDesktopWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap(":/icon/icon/splash.png");
    QSplashScreen splash(pixmap);//程序启动画面
    for(qint64 i=5555555;i>0;i--)
        splash.show();

    MainWindow w;
    w.show();

    splash.finish(&w);

    return a.exec();
}


================================================
FILE: SubwayTransferSystem/mainwindow.cpp
================================================
#include "ui_mainwindow.h"
#include "ui_managelines.h"
#include "mainwindow.h"

#include <QGraphicsItem>
#include <QMessageBox>
#include <QColorDialog>
#include <QTimer>
#include <QDateTime>
#include <QFile>
#include <QTextStream>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    myView = new Graphics_view_zoom(ui->graphicsView);
    myView->set_modifiers(Qt::NoModifier);
    ui->graphicsView->setRenderHint(QPainter::Antialiasing);

    scene=new QGraphicsScene;
    scene->setSceneRect(-LINE_INFO_WIDTH,0,SCENE_WIDTH,SCENE_HEIGHT);
    ui->graphicsView->setScene(scene);
    ui->graphicsView->setDragMode(QGraphicsView::ScrollHandDrag);

    initStatusBar();

    manageLines=new ManageLines(this);
    subwayGraph=new SubwayGraph;
    appHelp=new AppHelp();

    bool flag = subwayGraph->readFileData(":/data/data/outLine.txt");
    if (!flag)
    {
        QMessageBox box;
        box.setWindowTitle(tr("error information"));
        box.setIcon(QMessageBox::Warning);
        box.setText("读取数据错误!\n将无法展示内置线路!");
        box.addButton(tr("确定"), QMessageBox::AcceptRole);
        if (box.exec() == QMessageBox::Accepted)
        {
            box.close();
        }
    }

    myConnect();

    updateTranserQueryInfo();

    on_actionLineMap_triggered();
}

MainWindow::~MainWindow()
{
    delete ui;
    delete myView;
    delete scene;
    delete subwayGraph;
    delete manageLines;
    delete appHelp;
}

//连接信号和槽函数
void MainWindow::myConnect()
{
    connect(manageLines->ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(tabWidgetCurrentChanged(int)));
    connect(manageLines->ui->pushButtonAddLine, SIGNAL(clicked()), this, SLOT(addLine()));
    connect(manageLines->ui->pushButtonAddStation, SIGNAL(clicked()), this, SLOT(addStation()));
    connect(manageLines->ui->pushButtonConnect, SIGNAL(clicked()), this, SLOT(addConnection()));
    connect(manageLines->ui->pushButtonAddByText, SIGNAL(clicked()), this, SLOT(addByText()));
    connect(ui->comboBoxStartLine, SIGNAL(currentIndexChanged(QString)),
            this, SLOT(transferStartLineChanged(QString)));
    connect(ui->comboBoxDstLine, SIGNAL(currentIndexChanged(QString)),
            this, SLOT(transferDstLineChanged(QString)));
    connect(ui->pushButtonTransfer, SIGNAL(clicked()), this, SLOT(transferQuery()));

    QTimer *timer = new QTimer(this);//新建定时器
    connect(timer,SIGNAL(timeout()),this,SLOT(timerUpdate()));//关联定时器计满信号和相应的槽函数
    timer->start(1000);//定时器开始计时,其中1000表示1000ms即1秒
}

//时间更新槽函数
void MainWindow::timerUpdate()
{
    QDateTime time = QDateTime::currentDateTime();
    QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
    statusLabel2->setText(str);
}

//初始状态栏
void MainWindow::initStatusBar()
{
    QStatusBar* bar = ui->statusBar;
    statusLabel1 = new QLabel;
    statusLabel1->setMinimumSize(200,15);
    statusLabel1->setFrameShape(QFrame::Box);
    statusLabel1->setFrameShadow(QFrame::Sunken);

    statusLabel2 = new QLabel;
    statusLabel2->setMinimumSize(200,15);
    statusLabel2->setFrameShape(QFrame::Box);
    statusLabel2->setFrameShadow(QFrame::Sunken);

    statusLabel3 = new QLabel;
    statusLabel3->setMinimumSize(200,15);
    statusLabel3->setFrameShape(QFrame::Box);
    statusLabel3->setFrameShadow(QFrame::Sunken);

    bar->addWidget(statusLabel1);
    bar->addWidget(statusLabel2);
    bar->addWidget(statusLabel3);

    statusLabel1->setText(tr("made by 1453381"));
    statusLabel2->setText(tr("0000-00-00 00:00::00 星期 "));
    statusLabel3->setText(tr("欢迎使用地铁换乘指南,详情帮助"));
}

//由线路表计算混合颜色
QColor MainWindow::getLinesColor(const QList<int>& linesList)
{
    QColor color1=QColor(255,255,255);
    QColor color2;
    for (int i=0; i<linesList.size(); ++i)
    {
        color2=subwayGraph->getLineColor(linesList[i]);
        color1.setRed(color1.red()*color2.red()/255);
        color1.setGreen(color1.green()*color2.green()/255);
        color1.setBlue(color1.blue()*color2.blue()/255);
    }
    return color1;
}

//获得线路表的名字集
QString MainWindow::getLinesName(const QList<int>& linesList)
{
    QString str;
    str+="\t";
    for (int i=0; i<linesList.size(); ++i)
    {
        str+=" ";
        str+=subwayGraph->getLineName(linesList[i]);
    }
//    qDebug()<<"tip="<<str<<"\n";
    return str;
}

//将站点的经纬度地理坐标转为视图坐标
QPointF MainWindow::transferCoord(QPointF coord)
{
    QPointF minCoord=subwayGraph->getMinCoord();
    QPointF maxCoord=subwayGraph->getMaxCoord();
    double x = (coord.x()-minCoord.x())/(maxCoord.x()-minCoord.x())*NET_WIDTH+MARGIN;
    double y = (maxCoord.y()-coord.y())/(maxCoord.y()-minCoord.y())*NET_HEIGHT+MARGIN;
    return QPointF(x,y);
}

//绘制网络图的边
void MainWindow::drawEdges(const QList<Edge>& edgesList)
{
    for(int i=0; i<edgesList.size(); ++i)
    {
        int s1=edgesList[i].first;
        int s2=edgesList[i].second;

        QList<int> linesList=subwayGraph->getCommonLines(s1, s2);
        QColor color=getLinesColor(linesList);
        QString tip="途经: "+subwayGraph->getStationName(s1)+"--"+subwayGraph->getStationName(s2)+"\n线路:";
        tip+=getLinesName(linesList);
        QPointF s1Pos=transferCoord(subwayGraph->getStationCoord(s1));
        QPointF s2Pos=transferCoord(subwayGraph->getStationCoord(s2));

        QGraphicsLineItem* edgeItem=new QGraphicsLineItem;
        edgeItem->setPen(QPen(color, EDGE_PEN_WIDTH));
        edgeItem->setCursor(Qt::PointingHandCursor);
        edgeItem->setToolTip(tip);
        edgeItem->setPos(s1Pos);
        edgeItem->setLine(0, 0, s2Pos.x()-s1Pos.x(), s2Pos.y()-s1Pos.y());
        scene->addItem(edgeItem);
    }
}

//绘制网络图的站点节点
void MainWindow::drawStations (const QList<int>& stationsList)
{
    for (int i=0; i<stationsList.size(); ++i)
    {
        int s=stationsList[i];
        QString name=subwayGraph->getStationName(s);
        QList<int> linesList=subwayGraph->getStationLinesInfo(s);
        QColor color=getLinesColor(linesList);
        QPointF longiLati=subwayGraph->getStationCoord(s);
        QPointF coord=transferCoord(longiLati);
        QString tip="站名:  "+name+"\n"+
                "经度:  "+QString::number(longiLati.x(),'f',7)+"\n"+
                "纬度:  "+QString::number(longiLati.y(),'f',7)+"\n"+
                "线路:"+getLinesName(linesList);

        QGraphicsEllipseItem* stationItem=new QGraphicsEllipseItem;
        stationItem->setRect(-NODE_HALF_WIDTH, -NODE_HALF_WIDTH, NODE_HALF_WIDTH<<1, NODE_HALF_WIDTH<<1);
        stationItem->setPos(coord);
        stationItem->setPen(color);
        stationItem->setCursor(Qt::PointingHandCursor);
        stationItem->setToolTip(tip);

        if(linesList.size()<=1)
        {
            stationItem->setBrush(QColor(QRgb(0xffffff)));
        }

        scene->addItem(stationItem);

        QGraphicsTextItem* textItem=new QGraphicsTextItem;
        textItem->setPlainText(name);
        textItem->setFont(QFont("consolas",4,1));
        textItem->setPos(coord.x(),coord.y()-NODE_HALF_WIDTH*2);
        scene->addItem(textItem);
    }
}


//更新换乘选择信息
void MainWindow::updateTranserQueryInfo()
{
    statusLabel3->setText(tr("已更新数据"));
    QComboBox* comboL1=ui->comboBoxStartLine;
    QComboBox* comboL2=ui->comboBoxDstLine;

    comboL1->clear();
    comboL2->clear();
    QList<QString> linesList=subwayGraph->getLinesNameList();
    for(auto &a:linesList)
    {
        comboL1->addItem(a);
        comboL2->addItem(a);
    }
    transferStartLineChanged(comboL1->itemText(0));
    transferDstLineChanged(comboL2->itemText(0));
}

//换乘出发线路改变槽函数
void MainWindow::transferStartLineChanged(QString lineName)
{
    QComboBox* comboS1=ui->comboBoxStartStation;
    comboS1->clear();

    int lineHash=subwayGraph->getLineHash(lineName);
    if(lineHash==-1)
    {
        return ;
    }

    QList<QString> stationsList=subwayGraph->getLineStationsList(lineHash);
    for(auto &a:stationsList)
    {
        comboS1->addItem(a);
    }
}

//换乘目的线路改变槽函数
void MainWindow::transferDstLineChanged(QString lineName)
{
    QComboBox* comboS2=ui->comboBoxDstStation;
    comboS2->clear();

    int lineHash=subwayGraph->getLineHash(lineName);
    if(lineHash==-1)
    {
        return ;
    }

    QList<QString> stationsList=subwayGraph->getLineStationsList(lineHash);
    for(auto &a:stationsList)
    {
        comboS2->addItem(a);
    }
}

//换乘查询槽函数
void MainWindow::transferQuery()
{
    int s1=subwayGraph->getStationHash(ui->comboBoxStartStation->currentText());
    int s2=subwayGraph->getStationHash(ui->comboBoxDstStation->currentText());
    int way=ui->radioButtonMinTime->isChecked()?1:2;

    if(s1==-1||s2==-1)
    {
        QMessageBox box;
        box.setWindowTitle(tr("换乘查询"));
        box.setWindowIcon(QIcon(":/icon/icon/query.png"));
        box.setIcon(QMessageBox::Warning);
        box.setText(tr("请选择有站点的线路"));
        box.addButton(tr("确定"),QMessageBox::AcceptRole);
        if(box.exec()==QMessageBox::Accepted)
        {
            box.close();
        }
    }
    else
    {
        QList<int> stationsList;
        QList<Edge> edgesList;
        bool flag=true;
        if(way==1)
        {
            flag=subwayGraph->queryTransferMinTime(s1, s2, stationsList, edgesList);
        }
        else
        {
            flag=subwayGraph->queryTransferMinTransfer(s1, s2, stationsList, edgesList);
        }

        if(flag)
        {
            statusLabel3->setText(tr("换乘查询成功!"));
            scene->clear();
            drawEdges(edgesList);
            drawStations(stationsList);
            QString text=way==1?("以下线路时间最短,共换乘"+QString::number(stationsList.size()-1)+"个站点\n\n"):
                                ("以下线路换乘最少,共换乘"+QString::number(stationsList.size()-1)+"条线路\n\n");
            for(int i=0; i<stationsList.size(); ++i)
            {
                if(i)
                {
                    text+="\n  ↓\n";
                }
                text+=subwayGraph->getStationName(stationsList[i]);
                QString linesStr=getLinesName(subwayGraph->getStationLinesInfo(stationsList[i]));
                text+=linesStr;
            }
            QTextBrowser* browser=ui->textBrowserRoute;
            browser->clear();
            browser->setText(text);
        }
        else
        {
            QMessageBox box;
            box.setWindowTitle(tr("换乘查询"));
            box.setWindowIcon(QIcon(":/icon/icon/query.png"));
            box.setIcon(QMessageBox::Warning);
            box.setText(tr("您选择的起始和终止站点暂时无法到达!"));
            box.addButton(tr("确定"),QMessageBox::AcceptRole);
            if(box.exec()==QMessageBox::Accepted)
            {
                box.close();
            }
        }
    }
}

//添加列表视图部件变化槽函数
void MainWindow::tabWidgetCurrentChanged(int index)
{
    QWidget* widget=manageLines->ui->tabWidget->currentWidget();

    if(widget==manageLines->tabWigetsVector[1])
    {
        manageLines->linesNameList=subwayGraph->getLinesNameList();
        manageLines->updateLinesListWidget();
    }
    else if(widget==manageLines->tabWigetsVector[2])
    {
        manageLines->linesNameList=subwayGraph->getLinesNameList();
        manageLines->stationsNameList=subwayGraph->getStationsNameList();
        manageLines->ui->comboBoxConnectStation1->setMaxCount(manageLines->stationsNameList.size());
        manageLines->ui->comboBoxConnectStation2->setMaxCount(manageLines->stationsNameList.size());
        manageLines->ui->comboBoxConnectLine->setMaxCount(manageLines->linesNameList.size());
        manageLines->updateComboBox();
    }
    Q_UNUSED(index);
}

//添加线路功能函数
void MainWindow::addLine()
{
    QMessageBox box;
    box.setWindowTitle(tr("添加线路"));
    box.setWindowIcon(QIcon(":/icon/icon/subway.png"));

    if(manageLines->lineName.isEmpty())
    {
        box.setIcon(QMessageBox::Warning);
        box.setText(tr("请输入线路名称!"));
    }
    else if(subwayGraph->getLineHash(manageLines->lineName)==-1)
    {
        box.setIcon(QMessageBox::Information);
        box.setText(tr("线路:")+manageLines->lineName+tr(" 添加成功!"));
        subwayGraph->addLine(manageLines->lineName, manageLines->lineColor);
        updateTranserQueryInfo();
    }
    else
    {
        box.setIcon(QMessageBox::Critical);
        box.setText(tr("添加失败!\n错误原因:线路名已存在!"));
    }

    box.addButton(tr("确定"),QMessageBox::AcceptRole);
    if(box.exec()==QMessageBox::Accepted)
    {
        box.close();
    }
    updateTranserQueryInfo();
}

//添加站点功能函数
void MainWindow::addStation()
{
    QMessageBox box;
    box.setWindowTitle(tr("添加站点"));
    box.setWindowIcon(QIcon(":/icon/icon/station.png"));

    if(manageLines->stationName.isEmpty())
    {
        box.setIcon(QMessageBox::Warning);
        box.setText(tr("请输入站点名称!"));
    }
    else if(manageLines->linesSelected.isEmpty())
    {
        box.setIcon(QMessageBox::Warning);
        box.setText(tr("请选择站点所属线路!"));
    }
    else
    {
        if(subwayGraph->getStationHash(manageLines->stationName)!=-1)
        {
            box.setIcon(QMessageBox::Critical);
            box.setText(tr("添加失败!\n错误原因:站点已存在!"));
        }
        else
        {
            Station s(manageLines->stationName, manageLines->longitude, manageLines->latitude,
                      subwayGraph->getLinesHash(manageLines->linesSelected));
            subwayGraph->addStation(s);
            box.setText(tr("站点:")+manageLines->stationName+tr(" 添加成功!"));
            updateTranserQueryInfo();
        }
    }

    box.addButton(tr("确定"),QMessageBox::AcceptRole);
    if(box.exec()==QMessageBox::Accepted)
    {
        box.close();
    }
    updateTranserQueryInfo();
    on_actionLineMap_triggered();
}

//添加连接功能函数
void MainWindow::addConnection()
{
    QString station1=manageLines->ui->comboBoxConnectStation1->currentText();
    QString station2=manageLines->ui->comboBoxConnectStation2->currentText();
    int s1=subwayGraph->getStationHash(station1);
    int s2=subwayGraph->getStationHash(station2);
    int l=subwayGraph->getLineHash(manageLines->ui->comboBoxConnectLine->currentText());

    QMessageBox box;
    box.setWindowTitle(tr("添加连接"));
    box.setWindowIcon(QIcon(":/icon/icon/connect.png"));

    if(s1==-1||s2==-1||l==-1)
    {
        box.setIcon(QMessageBox::Warning);
        box.setText(tr("请选择已有的站点和线路!"));
    }
    else if(s1==s2)
    {
        box.setIcon(QMessageBox::Warning);
        box.setText(tr("同一站点不需要连接!"));
    }
    else if(!subwayGraph->getStationLinesInfo(s1).contains(l))
    {
        box.setIcon(QMessageBox::Critical);
        box.setText(tr("连接失败!\n错误原因:所属线路不包含站点1"));
    }
    else if(!subwayGraph->getStationLinesInfo(s2).contains(l))
    {
        box.setIcon(QMessageBox::Critical);
        box.setText(tr("连接失败!\n错误原因:所属线路不包含站点2"));
    }
    else
    {
        box.setIcon(QMessageBox::Information);
        box.setText(tr("添加连接成功!"));
        subwayGraph->addConnection(s1,s2,l);
    }
    if(box.exec()==QMessageBox::Accepted)
    {
        box.close();
    }
    updateTranserQueryInfo();
    on_actionLineMap_triggered();
}

//文本方式添加功能函数
void MainWindow::addByText()
{
    QString writeFile="userAdd.txt";
    QFile file(writeFile);
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
    {
        QMessageBox::critical(NULL, "提示", "无法创建添加文件");
            return ;
    }
    QTextStream out(&file);
    out<<manageLines->ui->textEdit->toPlainText();
    file.close();

    QMessageBox box;
    box.setWindowTitle(tr("文本添加"));
    box.setWindowIcon(QIcon(":/icon/icon/add.png"));

    bool flag=subwayGraph->readFileData(writeFile);
    if(flag)
    {
        box.setIcon(QMessageBox::Information);
        box.setText(tr("添加成功"));
    }
    else
    {
        box.setIcon(QMessageBox::Critical);
        box.setText(tr("添加失败,数据被擦除!"));
    }
    box.addButton(tr("确定"),QMessageBox::AcceptRole);
    if(box.exec()==QMessageBox::Accepted)
    {
        box.close();
    }
    updateTranserQueryInfo();
    on_actionLineMap_triggered();
    return ;
}

//视图放大槽函数
void MainWindow::on_toolEnlarge_triggered()
{
    statusLabel3->setText(tr("已放大"));
    ui->graphicsView->scale(1.5,1.5);
}

//动作视图缩小槽函数
void MainWindow::on_toolShrink_triggered()
{
    statusLabel3->setText(tr("已缩小"));
    ui->graphicsView->scale(2.0/3,2.0/3);
}

//动作添加所有槽函数
void MainWindow::on_actionAddAll_triggered()
{
    statusLabel3->setText(tr("添加线路、站点、连接关系"));
    manageLines->setAllVisible();
    manageLines->show();
}

//动作添加线路槽函数
void MainWindow::on_actionAddLine_triggered()
{
    statusLabel3->setText(tr("添加线路"));
    manageLines->setAddLineVisible();
    manageLines->show();
}

//动作添加站点槽函数
void MainWindow::on_actionAddStation_triggered()
{
    statusLabel3->setText(tr("添加站点"));
    manageLines->setAddStationVisible();
    manageLines->show();
}

//动作添加连接槽函数
void MainWindow::on_actionAddConnect_triggered()
{
    statusLabel3->setText(tr("添加连接关系"));
    manageLines->setAddConnectionVisible();
    manageLines->show();
}

//动作文本方式添加槽函数
void MainWindow::on_actionAddByText_triggered()
{
    statusLabel3->setText(tr("文本方式简易添加"));
    manageLines->setAddByTextVisible();
    manageLines->show();
}

//动作查看所有线路图槽函数
void MainWindow::on_actionLineMap_triggered()
{
    statusLabel3->setText(tr("图示:上海地铁网络线路图"));
    scene->clear();
    QList<int> stationsList;
    QList<Edge> edgesList;
    subwayGraph->getGraph(stationsList,edgesList);
    drawEdges(edgesList);
    drawStations(stationsList);
//    qDebug()<<"stations.size()="<<stationsList.size()<<" edges.size()="<<edgesList.size();
}

//动作是否显示状态栏槽函数
void MainWindow::on_actionstatusBar_triggered(bool checked)
{
    if(checked)
    {
        ui->statusBar->show();
    }
    else
    {
        ui->statusBar->hide();
    }
}

//动作是否显示工具栏槽函数
void MainWindow::on_actiontoolBar_triggered(bool checked)
{
    if(checked)
    {
        ui->mainToolBar->show();
    }
    else
    {
        ui->mainToolBar->hide();
    }
}

//动作关于Qt槽函数
void MainWindow::on_actionQt_triggered()
{
    QMessageBox::aboutQt(this,tr("关于Qt"));
}

//动作关于作者槽函数
void MainWindow::on_actionAuthor_triggered()
{
    QMessageBox box;
    box.setWindowTitle(tr("关于制作者"));
    box.setIcon(QMessageBox::Information);
    box.setText(tr("Author : 1453381 \n"
                   "School : TJ \n"
                   "Major : Computer Science \n"
                   "Emai : 767089181@qq.com \n"));
    box.addButton(tr("确定"),QMessageBox::AcceptRole);
    if(box.exec() == QMessageBox::Accepted)
        box.close();
}

//动作帮助菜单槽函数
void MainWindow::on_actionuseHelp_triggered()
{
    appHelp->show();
}

//动作关闭程序槽函数
void MainWindow::on_actionClose_triggered()
{
    close();
}


================================================
FILE: SubwayTransferSystem/mainwindow.h
================================================
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "graphics_view_zoom.h"
#include "subwaygraph.h"
#include "managelines.h"
#include "apphelp.h"

#include <QMainWindow>
#include <QLabel>
#include <QGraphicsScene>
#include <QGraphicsView>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    //视图放大槽函数
    void on_toolEnlarge_triggered();
    //动作视图缩小槽函数
    void on_toolShrink_triggered();
    //动作添加所有槽函数
    void on_actionAddAll_triggered();
    //动作添加线路槽函数
    void on_actionAddLine_triggered();
    //动作添加站点槽函数
    void on_actionAddStation_triggered();
    //动作添加连接槽函数
    void on_actionAddConnect_triggered();
    //动作文本方式添加槽函数
    void on_actionAddByText_triggered();
    //动作查看所有线路图槽函数
    void on_actionLineMap_triggered();
    //动作是否显示状态栏槽函数
    void on_actionstatusBar_triggered(bool checked);
    //动作是否显示工具栏槽函数
    void on_actiontoolBar_triggered(bool checked);
    //动作关于Qt槽函数
    void on_actionQt_triggered();
    //动作关于作者槽函数
    void on_actionAuthor_triggered();
    //动作帮助菜单槽函数
    void on_actionuseHelp_triggered();
    //动作关闭程序槽函数
    void on_actionClose_triggered();

    //时间更新槽函数
    void timerUpdate();
    //添加列表视图部件变化槽函数
    void tabWidgetCurrentChanged(int index);
    //添加线路功能函数
    void addLine();
    //添加站点功能函数
    void addStation();
    //添加连接功能函数
    void addConnection();
    //文本方式添加功能函数
    void addByText();
    //更新换乘选择信息
    void updateTranserQueryInfo();
    //换乘出发线路改变槽函数
    void transferStartLineChanged(QString lineName);
    //换乘目的线路改变槽函数
    void transferDstLineChanged(QString lineNames);
    //换乘查询槽函数
    void transferQuery();


protected:
    Ui::MainWindow *ui;             //主窗口UI
    Graphics_view_zoom *myView;     //自定义视图,用于鼠标缩放
    QGraphicsScene *scene;          //场景
    SubwayGraph* subwayGraph;       //后端管理类
    ManageLines* manageLines;       //添加功能前端管理类
    AppHelp* appHelp;               //帮助显示类

    //由线路表计算混合颜色
    QColor getLinesColor(const QList<int>& linesList);
    //获得线路表的名字集
    QString getLinesName(const QList<int>& linesList);
    //将站点的经纬度地理坐标转为视图坐标
    QPointF transferCoord(QPointF coord);
    //绘制网络图的边
    void drawEdges (const QList<Edge>& edgesList);
    //绘制网络图的站点节点
    void drawStations (const QList<int>& stationsList);

private:
    QLabel* statusLabel1, *statusLabel2, *statusLabel3;     //状态栏三个文本
    //连接信号和槽函数
    void myConnect();
    //初始状态栏
    void initStatusBar();
};

#define LINE_INFO_WIDTH 0   //预留边框用于信息展示
#define MARGIN 30           //视图左边距
#define NET_WIDTH 2000      //网络图最大宽度
#define NET_HEIGHT 2000     //网络图最大高度
#define SCENE_WIDTH (LINE_INFO_WIDTH+MARGIN*2+NET_WIDTH)    //视图宽度
#define SCENE_HEIGHT (MARGIN*2+NET_HEIGHT)                  //视图高度

#define EDGE_PEN_WIDTH 2    //线路边宽
#define NODE_HALF_WIDTH 3   //节点大小

#endif // MAINWINDOW_H


================================================
FILE: SubwayTransferSystem/mainwindow.ui
================================================
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="enabled">
   <bool>true</bool>
  </property>
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1030</width>
    <height>684</height>
   </rect>
  </property>
  <property name="minimumSize">
   <size>
    <width>1030</width>
    <height>680</height>
   </size>
  </property>
  <property name="font">
   <font>
    <family>Consolas</family>
   </font>
  </property>
  <property name="windowTitle">
   <string>地铁换乘指南</string>
  </property>
  <property name="windowIcon">
   <iconset resource="resource.qrc">
    <normaloff>:/icon/icon/metro-shanghai.png</normaloff>:/icon/icon/metro-shanghai.png</iconset>
  </property>
  <property name="iconSize">
   <size>
    <width>24</width>
    <height>24</height>
   </size>
  </property>
  <widget class="QWidget" name="centralWidget">
   <property name="minimumSize">
    <size>
     <width>1030</width>
     <height>600</height>
    </size>
   </property>
   <layout class="QHBoxLayout" name="horizontalLayout" stretch="11,3">
    <property name="spacing">
     <number>10</number>
    </property>
    <property name="leftMargin">
     <number>10</number>
    </property>
    <property name="topMargin">
     <number>0</number>
    </property>
    <property name="rightMargin">
     <number>10</number>
    </property>
    <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
     <widget class="QGraphicsView" name="graphicsView">
      <property name="minimumSize">
       <size>
        <width>700</width>
        <height>580</height>
       </size>
      </property>
     </widget>
    </item>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2" stretch="3,2,3,3,2,2,5,2,32">
      <property name="spacing">
       <number>6</number>
      </property>
      <item>
       <widget class="QLabel" name="labelAdd">
        <property name="minimumSize">
         <size>
          <width>280</width>
          <height>30</height>
         </size>
        </property>
        <property name="font">
         <font>
          <family>Consolas</family>
          <pointsize>11</pointsize>
          <weight>75</weight>
          <italic>false</italic>
          <bold>true</bold>
         </font>
        </property>
        <property name="text">
         <string>动态添加</string>
        </property>
        <property name="textFormat">
         <enum>Qt::AutoText</enum>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QLabel" name="labelTransferRoute_2">
        <property name="minimumSize">
         <size>
          <width>280</width>
          <height>20</height>
         </size>
        </property>
        <property name="font">
         <font>
          <family>Consolas</family>
          <pointsize>9</pointsize>
          <weight>50</weight>
          <bold>false</bold>
         </font>
        </property>
        <property name="text">
         <string>(请从工具栏中选择)</string>
        </property>
       </widget>
      </item>
      <item>
       <spacer name="verticalSpacer">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
        </property>
        <property name="sizeHint" stdset="0">
         <size>
          <width>20</width>
          <height>50</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QLabel" name="labelTransfer">
        <property name="minimumSize">
         <size>
          <width>280</width>
          <height>30</height>
         </size>
        </property>
        <property name="font">
         <font>
          <family>Consolas</family>
          <pointsize>11</pointsize>
          <weight>75</weight>
          <bold>true</bold>
         </font>
        </property>
        <property name="text">
         <string>换乘指南</string>
        </property>
       </widget>
      </item>
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout4" stretch="7,9,9">
        <property name="spacing">
         <number>10</number>
        </property>
        <item>
         <widget class="QLabel" name="labelStart">
          <property name="minimumSize">
           <size>
            <width>70</width>
            <height>20</height>
           </size>
          </property>
          <property name="font">
           <font>
            <family>Consolas</family>
           </font>
          </property>
          <property name="text">
           <string>起点站(&amp;S):</string>
          </property>
          <property name="buddy">
           <cstring>comboBoxStartLine</cstring>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QComboBox" name="comboBoxStartLine">
          <property name="minimumSize">
           <size>
            <width>90</width>
            <height>20</height>
           </size>
          </property>
          <property name="font">
           <font>
            <family>Consolas</family>
           </font>
          </property>
          <item>
           <property name="text">
            <string>选择路线</string>
           </property>
          </item>
         </widget>
        </item>
        <item>
         <widget class="QComboBox" name="comboBoxStartStation">
          <property name="minimumSize">
           <size>
            <width>90</width>
            <height>20</height>
           </size>
          </property>
          <property name="font">
           <font>
            <family>Consolas</family>
           </font>
          </property>
          <item>
           <property name="text">
            <string>选择站点</string>
           </property>
          </item>
         </widget>
        </item>
       </layout>
      </item>
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout5" stretch="7,9,9">
        <property name="spacing">
         <number>10</number>
        </property>
        <item>
         <widget class="QLabel" name="labelDestination">
          <property name="minimumSize">
           <size>
            <width>70</width>
            <height>20</height>
           </size>
          </property>
          <property name="font">
           <font>
            <family>Consolas</family>
           </font>
          </property>
          <property name="text">
           <string>终点站(&amp;D):</string>
          </property>
          <property name="buddy">
           <cstring>comboBoxDstLine</cstring>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QComboBox" name="comboBoxDstLine">
          <property name="minimumSize">
           <size>
            <width>90</width>
            <height>20</height>
           </size>
          </property>
          <property name="font">
           <font>
            <family>Consolas</family>
           </font>
          </property>
          <item>
           <property name="text">
            <string>选择路线</string>
           </property>
          </item>
         </widget>
        </item>
        <item>
         <widget class="QComboBox" name="comboBoxDstStation">
          <property name="minimumSize">
           <size>
            <width>90</width>
            <height>20</height>
           </size>
          </property>
          <property name="font">
           <font>
            <family>Consolas</family>
           </font>
          </property>
          <item>
           <property name="text">
            <string>选择站点</string>
           </property>
          </item>
         </widget>
        </item>
       </layout>
      </item>
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout6" stretch="7,19">
        <property name="spacing">
         <number>10</number>
        </property>
        <item>
         <widget class="QPushButton" name="pushButtonTransfer">
          <property name="minimumSize">
           <size>
            <width>70</width>
            <height>30</height>
           </size>
          </property>
          <property name="font">
           <font>
            <family>Consolas</family>
           </font>
          </property>
          <property name="text">
           <string>换乘</string>
          </property>
         </widget>
        </item>
        <item>
         <widget class="QGroupBox" name="groupBox">
          <property name="minimumSize">
           <size>
            <width>190</width>
            <height>30</height>
           </size>
          </property>
          <property name="title">
           <string>换乘策略</string>
          </property>
          <layout class="QVBoxLayout" name="verticalLayout" stretch="1,1">
           <property name="spacing">
            <number>0</number>
           </property>
           <property name="leftMargin">
            <number>0</number>
           </property>
           <property name="topMargin">
            <number>0</number>
           </property>
           <property name="rightMargin">
            <number>0</number>
           </property>
           <property name="bottomMargin">
            <number>0</number>
           </property>
           <item>
            <widget class="QRadioButton" name="radioButtonMinTransfer">
             <property name="minimumSize">
              <size>
               <width>100</width>
               <height>15</height>
              </size>
             </property>
             <property name="font">
              <font>
               <family>Consolas</family>
              </font>
             </property>
             <property name="text">
              <string>换乘次数最少</string>
             </property>
            </widget>
           </item>
           <item>
            <widget class="QRadioButton" name="radioButtonMinTime">
             <property name="minimumSize">
              <size>
               <width>100</width>
               <height>15</height>
              </size>
             </property>
             <property name="font">
              <font>
               <family>Consolas</family>
              </font>
             </property>
             <property name="text">
              <string>所需时间最短</string>
             </property>
             <property name="checked">
              <bool>true</bool>
             </property>
            </widget>
           </item>
          </layout>
         </widget>
        </item>
       </layout>
      </item>
      <item>
       <widget class="QLabel" name="labelTransferRoute">
        <property name="minimumSize">
         <size>
          <width>280</width>
          <height>20</height>
         </size>
        </property>
        <property name="font">
         <font>
          <family>Consolas</family>
          <pointsize>10</pointsize>
          <weight>75</weight>
          <bold>true</bold>
         </font>
        </property>
        <property name="text">
         <string>换乘路线:</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QTextBrowser" name="textBrowserRoute">
        <property name="minimumSize">
         <size>
          <width>300</width>
          <height>300</height>
         </size>
        </property>
        <property name="font">
         <font>
          <family>Consolas</family>
         </font>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>1030</width>
     <height>25</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>0</width>
     <height>25</height>
    </size>
   </property>
   <widget class="QMenu" name="menuHelp">
    <property name="title">
     <string>文件(&amp;F)</string>
    </property>
    <addaction name="actionClose"/>
   </widget>
   <widget class="QMenu" name="menuTool">
    <property name="title">
     <string>工具(&amp;T)</string>
    </property>
    <widget class="QMenu" name="menuAdd">
     <property name="title">
      <string>动态添加</string>
     </property>
     <property name="icon">
      <iconset resource="resource.qrc">
       <normaloff>:/icon/icon/add.png</normaloff>:/icon/icon/add.png</iconset>
     </property>
     <addaction name="actionAddAll"/>
     <addaction name="separator"/>
     <addaction name="actionAddLine"/>
     <addaction name="actionAddStation"/>
     <addaction name="actionAddConnect"/>
     <addaction name="separator"/>
     <addaction name="actionAddByText"/>
    </widget>
    <addaction name="actionTransfer"/>
    <addaction name="menuAdd"/>
    <addaction name="separator"/>
    <addaction name="actionQueryInfo"/>
   </widget>
   <widget class="QMenu" name="menuWatch">
    <property name="title">
     <string>查看(&amp;W)</string>
    </property>
    <addaction name="actiontoolBar"/>
    <addaction name="actionstatusBar"/>
   </widget>
   <widget class="QMenu" name="menuView">
    <property name="title">
     <string>视图(&amp;V)</string>
    </property>
    <addaction name="toolEnlarge"/>
    <addaction name="toolShrink"/>
    <addaction name="actionWheel"/>
    <addaction name="separator"/>
    <addaction name="actionLineMap"/>
   </widget>
   <widget class="QMenu" name="menu_H">
    <property name="title">
     <string>帮助(&amp;H)</string>
    </property>
    <addaction name="actionuseHelp"/>
   </widget>
   <widget class="QMenu" name="menu_A">
    <property name="title">
     <string>关于(&amp;A)</string>
    </property>
    <addaction name="actionQt"/>
    <addaction name="actionAuthor"/>
   </widget>
   <addaction name="menuHelp"/>
   <addaction name="menuTool"/>
   <addaction name="menuView"/>
   <addaction name="menuWatch"/>
   <addaction name="menu_H"/>
   <addaction name="menu_A"/>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <property name="minimumSize">
    <size>
     <width>0</width>
     <height>0</height>
    </size>
   </property>
   <property name="iconSize">
    <size>
     <width>24</width>
     <height>24</height>
    </size>
   </property>
   <property name="toolButtonStyle">
    <enum>Qt::ToolButtonIconOnly</enum>
   </property>
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
   <addaction name="separator"/>
   <addaction name="toolEnlarge"/>
   <addaction name="toolShrink"/>
   <addaction name="separator"/>
   <addaction name="actionAddAll"/>
   <addaction name="actionAddLine"/>
   <addaction name="actionAddStation"/>
   <addaction name="actionAddConnect"/>
   <addaction name="actionAddByText"/>
   <addaction name="separator"/>
   <addaction name="actionTransfer"/>
   <addaction name="actionLineMap"/>
  </widget>
  <widget class="QStatusBar" name="statusBar">
   <property name="minimumSize">
    <size>
     <width>0</width>
     <height>20</height>
    </size>
   </property>
  </widget>
  <action name="actionClose">
   <property name="checkable">
    <bool>true</bool>
   </property>
   <property name="text">
    <string>退出</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+E</string>
   </property>
  </action>
  <action name="toolEnlarge">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/enlarge.png</normaloff>:/icon/icon/enlarge.png</iconset>
   </property>
   <property name="text">
    <string>放大</string>
   </property>
   <property name="toolTip">
    <string>点击放大</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+L</string>
   </property>
  </action>
  <action name="toolShrink">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/shrink.png</normaloff>:/icon/icon/shrink.png</iconset>
   </property>
   <property name="text">
    <string>缩小</string>
   </property>
   <property name="toolTip">
    <string>点击缩小</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+S</string>
   </property>
  </action>
  <action name="actionTransfer">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/query.png</normaloff>:/icon/icon/query.png</iconset>
   </property>
   <property name="text">
    <string>换乘指南(右栏)</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
  </action>
  <action name="actionQueryInfo">
   <property name="text">
    <string>信息查询(预留)</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
  </action>
  <action name="actionAddAll">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/all.png</normaloff>:/icon/icon/all.png</iconset>
   </property>
   <property name="text">
    <string>所有(&amp;A)</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+A</string>
   </property>
  </action>
  <action name="actionAddLine">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/subway.png</normaloff>:/icon/icon/subway.png</iconset>
   </property>
   <property name="text">
    <string>线路(&amp;L)</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+Shift+L</string>
   </property>
  </action>
  <action name="actionAddStation">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/station.png</normaloff>:/icon/icon/station.png</iconset>
   </property>
   <property name="text">
    <string>站点(&amp;S)</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+Shift+S</string>
   </property>
  </action>
  <action name="actionAddConnect">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/connect.png</normaloff>:/icon/icon/connect.png</iconset>
   </property>
   <property name="text">
    <string>连接(&amp;C)</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+Shift+C</string>
   </property>
  </action>
  <action name="actionAddByText">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/text.png</normaloff>:/icon/icon/text.png</iconset>
   </property>
   <property name="text">
    <string>文本方式(&amp;T)</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+Shift+T</string>
   </property>
  </action>
  <action name="actiontoolBar">
   <property name="checkable">
    <bool>true</bool>
   </property>
   <property name="checked">
    <bool>true</bool>
   </property>
   <property name="text">
    <string>toolBar</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
  </action>
  <action name="actionstatusBar">
   <property name="checkable">
    <bool>true</bool>
   </property>
   <property name="checked">
    <bool>true</bool>
   </property>
   <property name="text">
    <string>statusBar</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
  </action>
  <action name="actionLineMap">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/map.png</normaloff>:/icon/icon/map.png</iconset>
   </property>
   <property name="text">
    <string>地铁图</string>
   </property>
   <property name="toolTip">
    <string>地铁网络线路图</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+M</string>
   </property>
  </action>
  <action name="actionWheel">
   <property name="enabled">
    <bool>false</bool>
   </property>
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/mouse.png</normaloff>:/icon/icon/mouse.png</iconset>
   </property>
   <property name="text">
    <string>鼠标可缩放</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
  </action>
  <action name="actionQt">
   <property name="icon">
    <iconset theme="Qt" resource="resource.qrc">
     <normaloff>:/icon/icon/qt.png</normaloff>:/icon/icon/qt.png</iconset>
   </property>
   <property name="text">
    <string>关于Qt</string>
   </property>
   <property name="shortcut">
    <string>Ctrl+B</string>
   </property>
  </action>
  <action name="actionAuthor">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/metro-shanghai.png</normaloff>:/icon/icon/metro-shanghai.png</iconset>
   </property>
   <property name="text">
    <string>制作者</string>
   </property>
  </action>
  <action name="actionuseHelp">
   <property name="icon">
    <iconset resource="resource.qrc">
     <normaloff>:/icon/icon/help.png</normaloff>:/icon/icon/help.png</iconset>
   </property>
   <property name="text">
    <string>使用帮助</string>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="shortcut">
    <string>Ctrl+H</string>
   </property>
  </action>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources>
  <include location="resource.qrc"/>
 </resources>
 <connections/>
</ui>


================================================
FILE: SubwayTransferSystem/managelines.cpp
================================================
#include "ui_managelines.h"
#include "managelines.h"

#include <QPixmap>
#include <QColorDialog>
#include <QFile>
#include <QTextStream>
#include <QDebug>

//构造函数
ManageLines::ManageLines(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ManageLines)
{
    ui->setupUi(this);
    tabWigetsVector.push_back(ui->tabAddLine);
    tabWigetsVector.push_back(ui->tabAddStation);
    tabWigetsVector.push_back(ui->tabAddConnection);
    tabWigetsVector.push_back(ui->tabAddByText);

    tabIconVector.push_back(QIcon(QPixmap(":/icon/icon/subway.png")));
    tabIconVector.push_back(QIcon(QPixmap(":/icon/icon/station.png")));
    tabIconVector.push_back(QIcon(QPixmap(":/icon/icon/connect.png")));
    tabIconVector.push_back(QIcon(QPixmap(":/icon/icon/text.png")));

    tabTextVector.push_back("线路(&L)");
    tabTextVector.push_back("站点(&S)");
    tabTextVector.push_back("连接(&C)");
    tabTextVector.push_back("文本方式(&T)");

    QString demoText=tr("警告:本操作文本务必正确,若错误将破坏已有数据\n"
                        "     请参照以下demo(注意格式需完全一样)\n");
    demoText+=tr("- - - - - - - - - - demo.txt- - - - - - - - - - ");

    QFile file(":/data/data/demo.txt");
    if(!file.open(QIODevice::ReadOnly))
    {
        demoText=file.errorString();
    }
    else
    {
        QTextStream in(&file);
        while(!in.atEnd())
        {
            QString str=in.readLine();
            demoText+="\n";
            demoText+=str;
        }
        file.close();
        ui->textEdit->setPlaceholderText(demoText);
    }
}

//析构函数
ManageLines::~ManageLines()
{
    delete ui;
}

//设置所有部件可见
void ManageLines::setAllVisible()
{
    ui->tabWidget->clear();
    ui->tabWidget->addTab(tabWigetsVector[0],tabIconVector[0],tabTextVector[0]);
    ui->tabWidget->addTab(tabWigetsVector[1],tabIconVector[1],tabTextVector[1]);
    ui->tabWidget->addTab(tabWigetsVector[2],tabIconVector[2],tabTextVector[2]);
    ui->tabWidget->addTab(tabWigetsVector[3],tabIconVector[3],tabTextVector[3]);
}

//设置添加线路部件可见
void ManageLines::setAddLineVisible()
{
    ui->tabWidget->clear();
    ui->tabWidget->addTab(tabWigetsVector[0],tabIconVector[0],tabTextVector[0]);
}

//设置添加站点部件可见
void ManageLines::setAddStationVisible()
{
    ui->tabWidget->clear();
    ui->tabWidget->addTab(tabWigetsVector[1],tabIconVector[1],tabTextVector[1]);
}

//设置添加连接部件可见
void ManageLines::setAddConnectionVisible()
{
    ui->tabWidget->clear();
    ui->tabWidget->addTab(tabWigetsVector[2],tabIconVector[2],tabTextVector[2]);
}

//设置文本添加部件可见
void ManageLines::setAddByTextVisible()
{
    ui->tabWidget->clear();
    ui->tabWidget->addTab(tabWigetsVector[3],tabIconVector[3],tabTextVector[3]);
}

//更新线路列表信息
void ManageLines::updateLinesListWidget()
{
    QListWidget* listWidget=ui->listWidget;
    for(int i=0; i<linesNameList.size(); ++i)
    {
        QListWidgetItem *item =listWidget->takeItem(i);
        delete item;
    }
    listWidget->clear();
    linesSelected.clear();
    ui->textBrowserLinesSelected->clear();

    for(int i=0; i<linesNameList.size(); ++i)
    {
        QListWidgetItem *item=new QListWidgetItem(linesNameList[i]);
        item->setFlags(item->flags()|Qt::ItemIsUserCheckable);
        item->setCheckState(Qt::Unchecked);
        listWidget->addItem(item);
    }
}

//更新选择部件
void ManageLines::updateComboBox()
{
    ui->comboBoxConnectStation1->clear();
    ui->comboBoxConnectStation2->clear();
    ui->comboBoxConnectLine->clear();

    for (auto &a: stationsNameList)
    {
        ui->comboBoxConnectStation1->addItem(a);
        ui->comboBoxConnectStation2->addItem(a);
    }
    for (auto &a: linesNameList)
    {
        ui->comboBoxConnectLine->addItem(a);
    }
}


//线路编辑内容改变
void ManageLines::on_lineEditLineName_textChanged(const QString &arg1)
{
    lineName=arg1;
    ui->textBrowserAddLine->setText(tr("线路:")+lineName+"\n"
                                    +tr("颜色:")+QString::number(lineColor.rgb()-0xff000000,16));
}

//点击选择颜色按钮
void ManageLines::on_pushButtonChooseColor_clicked()
{
    QColorDialog colorDialog;
    colorDialog.setOptions(QColorDialog::ShowAlphaChannel);
    colorDialog.exec();
    lineColor=colorDialog.currentColor();
    ui->textBrowserAddLine->setText(tr("线路:")+lineName+"\n"
                                    +tr("颜色:")+QString::number(lineColor.rgb()-0xff000000,16));
    return ;
}

//站点编辑内容改变
void ManageLines::on_lineEditStationName_textChanged(const QString &arg1)
{
    stationName=arg1;
    ui->textBrowserAddStaiton->setText(tr("站名:")+stationName+"\n"+
                                       tr("经度:")+QString::number(longitude, 'f', 7)+"\n"+
                                       tr("纬度:")+QString::number(latitude, 'f', 7));
}

//经度编辑内容改变
void ManageLines::on_doubleSpinBoxLatitude_valueChanged(double arg1)
{
    latitude=arg1;
    ui->textBrowserAddStaiton->setText(tr("站名:")+stationName+"\n"+
                                       tr("经度:")+QString::number(longitude, 'f', 7)+"\n"+
                                       tr("纬度:")+QString::number(latitude, 'f', 7));
}

//纬度编辑内容改变
void ManageLines::on_doubleSpinBoxLongitude_valueChanged(double arg1)
{
    longitude=arg1;
    ui->textBrowserAddStaiton->setText(tr("站名:")+stationName+"\n"+
                                       tr("经度:")+QString::number(longitude, 'f', 7)+"\n"+
                                       tr("纬度:")+QString::number(latitude, 'f', 7));
}

//列表部件选择项改变
void ManageLines::on_listWidget_itemClicked(QListWidgetItem *item)
{
    Q_UNUSED(item);
    QString str;
    linesSelected.clear();

    for (int i=0; i<ui->listWidget->count(); ++i)
    {
        QListWidgetItem* item=ui->listWidget->item(i);
        if(item->checkState()==Qt::Checked)
        {
            linesSelected.push_back(item->text());
            str+=item->text();
            str+="\n";
        }
    }
    ui->textBrowserLinesSelected->setText(str);
}



================================================
FILE: SubwayTransferSystem/managelines.h
================================================
#ifndef MANAGELINES_H
#define MANAGELINES_H

#include <QDialog>
#include <QVector>
#include <QTabWidget>
#include <QListWidget>
#include <QListWidgetItem>
#include <QIcon>
#include <QString>

class MainWindow;

namespace Ui {
class ManageLines;
}

class ManageLines : public QDialog
{
    Q_OBJECT

private slots:
    //线路编辑内容改变
    void on_lineEditLineName_textChanged(const QString &arg1);
    //点击选择颜色按钮
    void on_pushButtonChooseColor_clicked();
    //站点编辑内容改变
    void on_lineEditStationName_textChanged(const QString &arg1);
    //经度编辑内容改变
    void on_doubleSpinBoxLatitude_valueChanged(double arg1);
    //纬度编辑内容改变
    void on_doubleSpinBoxLongitude_valueChanged(double arg1);
    //列表部件选择项改变
    void on_listWidget_itemClicked(QListWidgetItem *item);

public:
    //构造函数
    explicit ManageLines(QWidget *parent = 0);
    //析构函数
    ~ManageLines();
    //设置所有部件可见
    void setAllVisible();
    //设置添加线路部件可见
    void setAddLineVisible();
    //设置添加站点部件可见
    void setAddStationVisible();
    //设置添加连接部件可见
    void setAddConnectionVisible();
    //设置文本添加部件可见
    void setAddByTextVisible();
    //更新线路列表信息
    void updateLinesListWidget();
    //更新选择部件
    void updateComboBox();

protected:
    Ui::ManageLines *ui;                //UI
    QVector<QWidget*> tabWigetsVector;  //保存tab部件指针
    QVector<QIcon> tabIconVector;       //保存tab部件Icon
    QVector<QString> tabTextVector;     //保存tab部件标题

    QString lineName;                   //保存输入线路名
    QColor lineColor;                   //保存输入线路颜色
    QString stationName;                //保存输入站点名
    double longitude;                   //保存输入站点经度
    double latitude;                    //保存输入站点纬度
    QList<QString> linesNameList;       //保存选择线路名表
    QList<QString> linesSelected;       //保存选择的线路名
    QList<QString> stationsNameList;    //保存选择站点名表

    //声明友元
    friend class MainWindow;
};

#endif // MANAGELINES_H


================================================
FILE: SubwayTransferSystem/managelines.ui
================================================
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>ManageLines</class>
 <widget class="QDialog" name="ManageLines">
  <property name="enabled">
   <bool>true</bool>
  </property>
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>600</width>
    <height>400</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <family>Consolas</family>
   </font>
  </property>
  <property name="windowTitle">
   <string>添加</string>
  </property>
  <property name="windowIcon">
   <iconset resource="resource.qrc">
    <normaloff>:/icon/icon/add.png</normaloff>:/icon/icon/add.png</iconset>
  </property>
  <widget class="QTabWidget" name="tabWidget">
   <property name="enabled">
    <bool>true</bool>
   </property>
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>600</width>
     <height>400</height>
    </rect>
   </property>
   <property name="tabPosition">
    <enum>QTabWidget::North</enum>
   </property>
   <property name="tabShape">
    <enum>QTabWidget::Rounded</enum>
   </property>
   <property name="currentIndex">
    <number>1</number>
   </property>
   <property name="elideMode">
    <enum>Qt::ElideNone</enum>
   </property>
   <widget class="QWidget" name="tabAddLine">
    <property name="font">
     <font>
      <family>Consolas</family>
     </font>
    </property>
    <attribute name="icon">
     <iconset resource="resource.qrc">
      <normaloff>:/icon/icon/subway.png</normaloff>:/icon/icon/subway.png</iconset>
    </attribute>
    <attribute name="title">
     <string>线路(&amp;L)</string>
    </attribute>
    <widget class="QLabel" name="label">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>20</y>
       <width>560</width>
       <height>160</height>
      </rect>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;提示:&lt;/span&gt;新增线路方法&lt;/p&gt;&lt;p&gt;1.先添加新线路信息;&lt;/p&gt;&lt;p&gt;2.然后在工具【站点】中添加线路站点;&lt;/p&gt;&lt;p&gt;3.最后在工具【连接】中确定站点连接关系;&lt;/p&gt;&lt;p&gt;4.也可以用文本方式简单快捷添加,格式需规范。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
    </widget>
    <widget class="QLabel" name="label_3">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>200</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>线路名称(&amp;N):</string>
     </property>
     <property name="buddy">
      <cstring>lineEditLineName</cstring>
     </property>
    </widget>
    <widget class="QLineEdit" name="lineEditLineName">
     <property name="geometry">
      <rect>
       <x>120</x>
       <y>200</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="placeholderText">
      <string>请输入线路名</string>
     </property>
    </widget>
    <widget class="QPushButton" name="pushButtonAddLine">
     <property name="geometry">
      <rect>
       <x>440</x>
       <y>320</y>
       <width>80</width>
       <height>30</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>添加线路</string>
     </property>
     <property name="default">
      <bool>true</bool>
     </property>
    </widget>
    <widget class="QLabel" name="label_8">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>240</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>线路颜色(&amp;C):</string>
     </property>
     <property name="buddy">
      <cstring>pushButtonChooseColor</cstring>
     </property>
    </widget>
    <widget class="QPushButton" name="pushButtonChooseColor">
     <property name="geometry">
      <rect>
       <x>120</x>
       <y>240</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>拾取颜色</string>
     </property>
    </widget>
    <widget class="QTextBrowser" name="textBrowserAddLine">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="geometry">
      <rect>
       <x>400</x>
       <y>200</y>
       <width>140</width>
       <height>60</height>
      </rect>
     </property>
    </widget>
    <widget class="QLabel" name="label_21">
     <property name="geometry">
      <rect>
       <x>400</x>
       <y>180</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>添加信息:</string>
     </property>
    </widget>
   </widget>
   <widget class="QWidget" name="tabAddStation">
    <attribute name="icon">
     <iconset resource="resource.qrc">
      <normaloff>:/icon/icon/station.png</normaloff>:/icon/icon/station.png</iconset>
    </attribute>
    <attribute name="title">
     <string>站点(&amp;S)</string>
    </attribute>
    <widget class="QDoubleSpinBox" name="doubleSpinBoxLatitude">
     <property name="geometry">
      <rect>
       <x>70</x>
       <y>160</y>
       <width>88</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>85</width>
       <height>20</height>
      </size>
     </property>
     <property name="decimals">
      <number>7</number>
     </property>
     <property name="minimum">
      <double>30.899999999999999</double>
     </property>
     <property name="maximum">
      <double>31.449999999999999</double>
     </property>
     <property name="singleStep">
      <double>0.100000000000000</double>
     </property>
     <property name="value">
      <double>30.899999999999999</double>
     </property>
    </widget>
    <widget class="QLabel" name="labelLatitude">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>160</y>
       <width>35</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>35</width>
       <height>20</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>北纬&amp;N</string>
     </property>
     <property name="buddy">
      <cstring>doubleSpinBoxLatitude</cstring>
     </property>
    </widget>
    <widget class="QLabel" name="labelLongitude">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>130</y>
       <width>35</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>35</width>
       <height>20</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>东经&amp;E</string>
     </property>
     <property name="buddy">
      <cstring>doubleSpinBoxLongitude</cstring>
     </property>
    </widget>
    <widget class="QDoubleSpinBox" name="doubleSpinBoxLongitude">
     <property name="geometry">
      <rect>
       <x>70</x>
       <y>130</y>
       <width>89</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>85</width>
       <height>20</height>
      </size>
     </property>
     <property name="decimals">
      <number>7</number>
     </property>
     <property name="minimum">
      <double>121.000000000000000</double>
     </property>
     <property name="maximum">
      <double>122.000000000000000</double>
     </property>
     <property name="singleStep">
      <double>0.100000000000000</double>
     </property>
     <property name="value">
      <double>121.000000000000000</double>
     </property>
    </widget>
    <widget class="QLineEdit" name="lineEditStationName">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>50</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string/>
     </property>
     <property name="placeholderText">
      <string>添加站点名</string>
     </property>
    </widget>
    <widget class="QTextBrowser" name="textBrowserLinesSelected">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="geometry">
      <rect>
       <x>440</x>
       <y>50</y>
       <width>140</width>
       <height>140</height>
      </rect>
     </property>
    </widget>
    <widget class="QLabel" name="label_4">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>20</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>站点名称(&amp;N):</string>
     </property>
     <property name="buddy">
      <cstring>lineEditStationName</cstring>
     </property>
    </widget>
    <widget class="QLabel" name="label_9">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>100</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>地理坐标(&amp;P):</string>
     </property>
     <property name="buddy">
      <cstring>doubleSpinBoxLongitude</cstring>
     </property>
    </widget>
    <widget class="QLabel" name="label_10">
     <property name="geometry">
      <rect>
       <x>440</x>
       <y>20</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>已选择:</string>
     </property>
    </widget>
    <widget class="QPushButton" name="pushButtonAddStation">
     <property name="geometry">
      <rect>
       <x>440</x>
       <y>330</y>
       <width>80</width>
       <height>30</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>添加站点</string>
     </property>
     <property name="default">
      <bool>true</bool>
     </property>
    </widget>
    <widget class="QLabel" name="label_11">
     <property name="geometry">
      <rect>
       <x>200</x>
       <y>20</y>
       <width>200</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>选择 添加到线路:</string>
     </property>
    </widget>
    <widget class="QLabel" name="label_22">
     <property name="geometry">
      <rect>
       <x>440</x>
       <y>200</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>添加信息:</string>
     </property>
    </widget>
    <widget class="QTextBrowser" name="textBrowserAddStaiton">
     <property name="enabled">
      <bool>false</bool>
     </property>
     <property name="geometry">
      <rect>
       <x>440</x>
       <y>230</y>
       <width>140</width>
       <height>91</height>
      </rect>
     </property>
    </widget>
    <widget class="QLabel" name="label_23">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>200</y>
       <width>160</width>
       <height>80</height>
      </rect>
     </property>
     <property name="text">
      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;有效范围:&lt;/p&gt;&lt;p&gt;min [ 121.0 , 30.9 ]&lt;/p&gt;&lt;p&gt;max [ 122.0 , 31.5 ]&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
    </widget>
    <widget class="QListWidget" name="listWidget">
     <property name="geometry">
      <rect>
       <x>200</x>
       <y>50</y>
       <width>200</width>
       <height>270</height>
      </rect>
     </property>
    </widget>
   </widget>
   <widget class="QWidget" name="tabAddConnection">
    <property name="enabled">
     <bool>true</bool>
    </property>
    <attribute name="icon">
     <iconset resource="resource.qrc">
      <normaloff>:/icon/icon/connect.png</normaloff>:/icon/icon/connect.png</iconset>
    </attribute>
    <attribute name="title">
     <string>连接(&amp;C)</string>
    </attribute>
    <widget class="QComboBox" name="comboBoxConnectStation1">
     <property name="enabled">
      <bool>true</bool>
     </property>
     <property name="geometry">
      <rect>
       <x>100</x>
       <y>170</y>
       <width>100</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="editable">
      <bool>true</bool>
     </property>
     <property name="currentIndex">
      <number>-1</number>
     </property>
    </widget>
    <widget class="QLabel" name="label_5">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>170</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>站点1(&amp;O):</string>
     </property>
     <property name="buddy">
      <cstring>comboBoxConnectStation1</cstring>
     </property>
    </widget>
    <widget class="QLabel" name="label_6">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>210</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>站点2(&amp;T):</string>
     </property>
     <property name="buddy">
      <cstring>comboBoxConnectStation2</cstring>
     </property>
    </widget>
    <widget class="QComboBox" name="comboBoxConnectStation2">
     <property name="geometry">
      <rect>
       <x>100</x>
       <y>210</y>
       <width>100</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="editable">
      <bool>true</bool>
     </property>
    </widget>
    <widget class="QPushButton" name="pushButtonConnect">
     <property name="geometry">
      <rect>
       <x>100</x>
       <y>290</y>
       <width>80</width>
       <height>30</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>连接</string>
     </property>
     <property name="default">
      <bool>true</bool>
     </property>
    </widget>
    <widget class="QLabel" name="label_7">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>250</y>
       <width>80</width>
       <height>20</height>
      </rect>
     </property>
     <property name="text">
      <string>所属线路(&amp;L):</string>
     </property>
     <property name="buddy">
      <cstring>comboBoxConnectLine</cstring>
     </property>
    </widget>
    <widget class="QComboBox" name="comboBoxConnectLine">
     <property name="geometry">
      <rect>
       <x>100</x>
       <y>250</y>
       <width>100</width>
       <height>20</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="maximumSize">
      <size>
       <width>16777215</width>
       <height>16777215</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="editable">
      <bool>true</bool>
     </property>
    </widget>
    <widget class="QLabel" name="label_2">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>20</y>
       <width>560</width>
       <height>100</height>
      </rect>
     </property>
     <property name="text">
      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;提示:&lt;/span&gt;连接站点&lt;/p&gt;&lt;p&gt;1.连接“站点1”和“站点2”为一条边;&lt;/p&gt;&lt;p&gt;2.“站点1”和“站点2”属于同一条线路中的不同站点;&lt;/p&gt;&lt;p&gt;3.站点及线路选择可以选择也可直接输入。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
    </widget>
   </widget>
   <widget class="QWidget" name="tabAddByText">
    <attribute name="title">
     <string>文本方式</string>
    </attribute>
    <widget class="QTextEdit" name="textEdit">
     <property name="geometry">
      <rect>
       <x>20</x>
       <y>20</y>
       <width>560</width>
       <height>300</height>
      </rect>
     </property>
    </widget>
    <widget class="QPushButton" name="pushButtonAddByText">
     <property name="geometry">
      <rect>
       <x>440</x>
       <y>330</y>
       <width>80</width>
       <height>30</height>
      </rect>
     </property>
     <property name="minimumSize">
      <size>
       <width>0</width>
       <height>0</height>
      </size>
     </property>
     <property name="font">
      <font>
       <family>Consolas</family>
      </font>
     </property>
     <property name="text">
      <string>添加</string>
     </property>
     <property name="default">
      <bool>true</bool>
     </property>
    </widget>
   </widget>
  </widget>
 </widget>
 <resources>
  <include location="resource.qrc"/>
 </resources>
 <connections/>
</ui>


================================================
FILE: SubwayTransferSystem/myview.cpp
================================================
#include "myview.h"

MyView::MyView(QWidget *parent) : QGraphicsView(parent)
{
//    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
//    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
//    setRenderHint(QPainter::Antialiasing);
//    setCursor(Qt::PointingHandCursor);

//    centerOn(0,0);
}

void MyView::wheelEvent(QWheelEvent *event)
{
    if(event->delta()>0)
        scale(0.5,0.5);
    else
        scale(2,2);
}

void MyView::mousePressEvent(QMouseEvent *event)
{
    rotate(90);  //视图旋转顺时针90度
}

void MyView::keyPressEvent(QKeyEvent *event)
{
    items().at(1)->setPos(400,400);
}


================================================
FILE: SubwayTransferSystem/myview.h
================================================
#ifndef MYVIEW_H
#define MYVIEW_H

#include <QGraphicsView>
#include <QWheelEvent>
#include <QGraphicsItem>

class MyView : public QGraphicsView
{
public:
    explicit MyView(QWidget *parent = 0);
protected:
    void wheelEvent(QWheelEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void keyPressEvent(QKeyEvent *event);

signals:

public slots:

};

#endif // MYVIEW_H


================================================
FILE: SubwayTransferSystem/querytransfer.cpp
================================================
#include "querytransfer.h"
#include "ui_querytransfer.h"

QueryTransfer::QueryTransfer(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QueryTransfer)
{
    ui->setupUi(this);
}

QueryTransfer::~QueryTransfer()
{
    delete ui;
}


================================================
FILE: SubwayTransferSystem/querytransfer.h
================================================
#ifndef QUERYTRANSFER_H
#define QUERYTRANSFER_H

#include <QDialog>

namespace Ui {
class QueryTransfer;
}

class QueryTransfer : public QDialog
{
    Q_OBJECT

public:
    explicit QueryTransfer(QWidget *parent = 0);
    ~QueryTransfer();

public:
    Ui::QueryTransfer *ui;
};

#endif // QUERYTRANSFER_H


================================================
FILE: SubwayTransferSystem/querytransfer.ui
================================================
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>QueryTransfer</class>
 <widget class="QDialog" name="QueryTransfer">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>320</width>
    <height>570</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>换乘指南</string>
  </property>
  <property name="windowIcon">
   <iconset resource="resource.qrc">
    <normaloff>:/icon/icon/query.png</normaloff>:/icon/icon/query.png</iconset>
  </property>
  <widget class="QLabel" name="labelTransferRoute">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>170</y>
     <width>300</width>
     <height>20</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>280</width>
     <height>20</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
     <pointsize>10</pointsize>
     <weight>75</weight>
     <bold>true</bold>
    </font>
   </property>
   <property name="text">
    <string>换乘路线:</string>
   </property>
  </widget>
  <widget class="QTextBrowser" name="textBrowserRoute">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>200</y>
     <width>300</width>
     <height>360</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>0</width>
     <height>0</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
  </widget>
  <widget class="QPushButton" name="pushButtonTransfer">
   <property name="geometry">
    <rect>
     <x>220</x>
     <y>110</y>
     <width>80</width>
     <height>30</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>70</width>
     <height>30</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="text">
    <string>换乘</string>
   </property>
   <property name="default">
    <bool>true</bool>
   </property>
  </widget>
  <widget class="QGroupBox" name="groupBox">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>80</y>
     <width>190</width>
     <height>60</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>0</width>
     <height>0</height>
    </size>
   </property>
   <property name="title">
    <string>出行策略</string>
   </property>
   <widget class="QRadioButton" name="radioButtonMinTime">
    <property name="geometry">
     <rect>
      <x>0</x>
      <y>20</y>
      <width>180</width>
      <height>16</height>
     </rect>
    </property>
    <property name="minimumSize">
     <size>
      <width>0</width>
      <height>0</height>
     </size>
    </property>
    <property name="font">
     <font>
      <family>Consolas</family>
     </font>
    </property>
    <property name="text">
     <string>所需时间最短</string>
    </property>
    <property name="checked">
     <bool>true</bool>
    </property>
   </widget>
   <widget class="QRadioButton" name="radioButtonMinTransfer">
    <property name="geometry">
     <rect>
      <x>0</x>
      <y>40</y>
      <width>180</width>
      <height>20</height>
     </rect>
    </property>
    <property name="minimumSize">
     <size>
      <width>0</width>
      <height>0</height>
     </size>
    </property>
    <property name="font">
     <font>
      <family>Consolas</family>
     </font>
    </property>
    <property name="text">
     <string>换乘次数最少</string>
    </property>
   </widget>
  </widget>
  <widget class="QComboBox" name="comboBoxDstLine">
   <property name="geometry">
    <rect>
     <x>110</x>
     <y>50</y>
     <width>90</width>
     <height>20</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>90</width>
     <height>20</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="currentIndex">
    <number>0</number>
   </property>
   <item>
    <property name="text">
     <string>选择路线</string>
    </property>
   </item>
  </widget>
  <widget class="QComboBox" name="comboBoxDstStation">
   <property name="geometry">
    <rect>
     <x>210</x>
     <y>50</y>
     <width>90</width>
     <height>22</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>90</width>
     <height>20</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="currentIndex">
    <number>-1</number>
   </property>
   <item>
    <property name="text">
     <string>选择站点</string>
    </property>
   </item>
  </widget>
  <widget class="QLabel" name="labelDestination">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>50</y>
     <width>90</width>
     <height>20</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>70</width>
     <height>20</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="text">
    <string>终点站(&amp;D):</string>
   </property>
   <property name="buddy">
    <cstring>comboBoxDstLine</cstring>
   </property>
  </widget>
  <widget class="QLabel" name="labelStart">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>20</y>
     <width>90</width>
     <height>20</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>70</width>
     <height>20</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="text">
    <string>起点站(&amp;S):</string>
   </property>
   <property name="buddy">
    <cstring>comboBoxStartLine</cstring>
   </property>
  </widget>
  <widget class="QComboBox" name="comboBoxStartLine">
   <property name="geometry">
    <rect>
     <x>110</x>
     <y>20</y>
     <width>90</width>
     <height>20</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>90</width>
     <height>20</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="currentText">
    <string>选择路线</string>
   </property>
   <property name="currentIndex">
    <number>0</number>
   </property>
   <item>
    <property name="text">
     <string>选择路线</string>
    </property>
   </item>
  </widget>
  <widget class="QComboBox" name="comboBoxStartStation">
   <property name="geometry">
    <rect>
     <x>210</x>
     <y>20</y>
     <width>90</width>
     <height>22</height>
    </rect>
   </property>
   <property name="minimumSize">
    <size>
     <width>90</width>
     <height>20</height>
    </size>
   </property>
   <property name="font">
    <font>
     <family>Consolas</family>
    </font>
   </property>
   <property name="currentIndex">
    <number>-1</number>
   </property>
   <item>
    <property name="text">
     <string>选择站点</string>
    </property>
   </item>
  </widget>
 </widget>
 <resources>
  <include location="resource.qrc"/>
 </resources>
 <connections/>
</ui>


================================================
FILE: SubwayTransferSystem/resource.qrc
================================================
<RCC>
    <qresource prefix="/icon">
        <file>icon/enlarge.png</file>
        <file>icon/shrink.png</file>
        <file>icon/connect.png</file>
        <file>icon/station.png</file>
        <file>icon/subway.png</file>
        <file>icon/add.png</file>
        <file>icon/all.png</file>
        <file>icon/text.png</file>
        <file>icon/query.png</file>
        <file>icon/map.png</file>
        <file>icon/metro-shanghai.png</file>
        <file>icon/splash.png</file>
        <file>icon/mouse.png</file>
        <file>icon/qt.png</file>
        <file>icon/help.png</file>
    </qresource>
    <qresource prefix="/data">
        <file>data/outLine.txt</file>
        <file>data/demo.txt</file>
    </qresource>
    <qresource prefix="/html">
        <file>html/helpAddByText.html</file>
        <file>html/helpAddConnection.html</file>
        <file>html/helpAddLine.html</file>
        <file>html/helpAddStation.html</file>
        <file>html/helpTransfer.html</file>
        <file>html/helpWatch.html</file>
    </qresource>
</RCC>


================================================
FILE: SubwayTransferSystem/station.cpp
================================================
#include "station.h"
#include <math.h>

// 角度转弧度
double rad(double d)
{
    const double PI = 3.1415926535898;
    return d * PI / 180.0;
}

// 传入两个经纬度,计算之间的大致直线距离
int calcuDistance(double fLati1, double fLong1, double fLati2, double fLong2)
{
    const double EARTH_RADIUS = 6378.137;

    double radLat1 = rad(fLati1);
    double radLat2 = rad(fLati2);
    double a = radLat1 - radLat2;
    double b = rad(fLong1) - rad(fLong2);
    double s = 2 * asin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
    s = s * EARTH_RADIUS;
    s = (int)(s * 10000000) / 10000;
    return s;
}

double Station::minLongitude = 200;
double Station::minLatitude = 200;
double Station::maxLongitude = 0;
double Station::maxLatitude = 0;

//构造函数
Station::Station()
{

}

//构造函数
Station::Station(QString nameStr, double longi, double lati, QList<int> linesList):
    name(nameStr), longitude(longi), latitude(lati)
{
    linesInfo=linesList.toSet();
}

//求取站点间实地直线距离
int Station::distance(Station other)
{
    return calcuDistance(latitude, longitude, other.latitude, other.longitude);
}


================================================
FILE: SubwayTransferSystem/station.h
================================================
#ifndef STATION_H
#define STATION_H

#include <QString>
#include <QPointF>
#include <QSet>

class SubwayGraph;
class QTextStream;

//地铁站点类定义
class Station
{
protected:
    int id;                     //站点ID
    QString name;               //站点名称
    double longitude, latitude; //站点经纬度
    QSet<int> linesInfo;        //站点所属线路

    //所有站点的边界位置
    static double minLongitude, minLatitude, maxLongitude, maxLatitude;

public:
    //构造函数
    Station();
    Station(QString nameStr, double longi, double lati, QList<int> linesList);

protected:
    //求取站点间实地直线距离
    int distance(Station other);

    //声明友元
    friend class SubwayGraph;
    friend class QTextStream;
};

#endif // STATION_H


================================================
FILE: SubwayTransferSystem/subwaygraph.cpp
================================================
#include "subwaygraph.h"
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <queue>

//构造函数
SubwayGraph::SubwayGraph()
{

}

//从文件读取数据
bool SubwayGraph::readFileData(QString fileName)
{
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly))
        return false;
    QTextStream in(&file);
    while(!in.atEnd())
    {
        Line line;
        QString id, name, colour, fromTo, totalStations;
        QString color, froms, tos;
        bool ok;
        int total;
        Station station;
        int lvIndex, svIndex1, svIndex2;

        in>>id>>line.id;
        in>>name>>line.name;
        in>>colour>>color;
        line.color.setRgba(color.remove(0,1).toUInt(&ok, 16));
        in>>fromTo>>froms>>tos;
        in>>totalStations>>total;

        line.fromTo.push_back(froms);
        line.fromTo.push_back(tos);
        if (linesHash.count(line.name))
        {
            lvIndex = linesHash[line.name];
            lines[lvIndex].fromTo.push_back(froms);
            lines[lvIndex].fromTo.push_back(tos);
        }
        else
        {
            lvIndex = linesHash[line.name] = lines.size();
            lines.push_back(line);
        }

        QString longlat;
        QStringList strList;
        for (int i=0; !in.atEnd()&&i<total; ++i)
        {
            in>>station.id>>station.name>>longlat;
            strList=longlat.split(QChar(','));
            station.longitude=strList.first().toDouble();
            station.latitude=strList.last().toDouble();

//            qDebug()<<station.longitude<<" "<<station.latitude<<"\n";
//            d1=station.longitude;
//            if(fabs(d1-d2)<1e-8)
//            {
//                qDebug()<<line.name<<" "<<station.id<<" "<<station.name<<"经度数据有误"<<"\n";
//            }
//            d2=d1;

            if (stationsHash.count(station.name))
            {
                svIndex2 = stationsHash[station.name];
            }
            else
            {
                svIndex2 = stationsHash[station.name] = stations.size();
                stations.push_back(station);
            }

            stations[svIndex2].linesInfo.insert(lvIndex);
            lines[lvIndex].stationsSet.insert(svIndex2);

            if (i)
            {
                lines[lvIndex].edges.insert(Edge(svIndex1, svIndex2));
                lines[lvIndex].edges.insert(Edge(svIndex2, svIndex1));
                insertEdge(svIndex1, svIndex2);
            }
            svIndex1 = svIndex2;
        }

        bool flag = id=="id:" && name=="name:" && colour=="colour:" && fromTo=="fromTo:"
                && totalStations=="totalStations:" && ok && !in.atEnd();

//        qDebug()<< "ok="<<ok<<" flag="<<flag<<line.id<< " "<<station.name<< "\n";

        if(flag==false)
        {
            file.close();
            clearData();
            return false ;
        }
        in.readLine();
    }
    file.close();

    updateMinMaxLongiLati();

    return true;
}

//清空数据
void SubwayGraph::clearData()
{
    stations.clear();
    lines.clear();
    stationsHash.clear();
    linesHash.clear();
    edges.clear();
    graph.clear();
}

//插入一条边
bool SubwayGraph::insertEdge(int n1, int n2)
{
    if (edges.contains(Edge(n1, n2)) || edges.contains(Edge(n2, n1)))
    {
        return false;
    }
    edges.insert(Edge(n1, n2));
    return true;
}

//生成图结构
void SubwayGraph::makeGraph()
{
    graph.clear();
    graph=QVector<QVector<Node>>(stations.size(), QVector<Node>());
    for (auto &a : edges)
    {
        double dist=stations[a.first].distance(stations[a.second]);
        graph[a.first].push_back(Node(a.second, dist));
        graph[a.second].push_back(Node(a.first, dist));
    }
}


//获取线路颜色
QColor SubwayGraph::getLineColor(int l)
{
    return lines[l].color;
}

//获取线路名
QString SubwayGraph::getLineName(int l)
{
    return lines[l].name;
}

//获取线路hash值
int SubwayGraph::getLineHash(QString lineName)
{
    if(linesHash.contains(lineName))
    {
        return linesHash[lineName];
    }
    return -1;
}

//获取线路集合hash值
QList<int> SubwayGraph::getLinesHash(QList<QString> linesList)
{
    QList<int> hashList;
    for (auto &a:linesList)
    {
        hashList.push_back(getLineHash(a));
    }
    return hashList;
}

//获取线路名集合
QList<QString> SubwayGraph::getLinesNameList()
{
    QList<QString> linesNameList;
    for (auto a:lines)
    {
        linesNameList.push_back(a.name);
    }
    return linesNameList;
}

//获取线路的所有包含站点
QList<QString> SubwayGraph::getLineStationsList(int l)
{
    QList<QString> stationsList;
    for (auto &a:lines[l].stationsSet)
    {
        stationsList.push_back(stations[a].name);
    }
    return stationsList;
}



//更新边界经纬度
void SubwayGraph::updateMinMaxLongiLati()
{
    double minLongitude=200, minLatitude=200;
    double maxLongitude=0, maxLatitude=0;

    for (auto &s : stations)
    {
        minLongitude = qMin(minLongitude, s.longitude);
        minLatitude = qMin(minLatitude, s.latitude);
        maxLongitude = qMax(maxLongitude, s.longitude);
        maxLatitude = qMax(maxLatitude, s.latitude);
    }
    Station::minLongitude = minLongitude;
    Station::minLatitude = minLatitude;
    Station::maxLongitude = maxLongitude;
    Station::maxLatitude = maxLatitude;

//    qDebug("minLon=%.10lf, minLat=%.10lf\n", minLongitude, minLatitude);
//    qDebug("maxLon=%.10lf, maxLat=%.10lf\n", maxLongitude, maxLatitude);
}

 //获取站点最小坐标
QPointF SubwayGraph::getMinCoord()
{
    return QPointF(Station::minLongitude, Station::minLatitude);
}

//获取站点最大坐标
QPointF SubwayGraph::getMaxCoord()
{
    return QPointF(Station::maxLongitude, Station::maxLatitude);
}

//获取两个站点的公共所属线路
QList<int> SubwayGraph::getCommonLines(int s1, int s2)
{
    QList<int> linesList;
    for (auto &s : stations[s1].linesInfo)
    {
        if(stations[s2].linesInfo.contains(s))
            linesList.push_back(s);
    }
    return linesList;
}

//获取站点名
QString SubwayGraph::getStationName(int s)
{
    return stations[s].name;
}

//获取站点地理坐标
QPointF SubwayGraph::getStationCoord(int s)
{
    return QPointF(stations[s].longitude, stations[s].latitude);
}

//获取站点所属线路信息
QList<int> SubwayGraph::getStationLinesInfo(int s)
{
    return stations[s].linesInfo.toList();
}

//获取站点hash值
int SubwayGraph::getStationHash(QString stationName)
{
    if(stationsHash.contains(stationName))
    {
        return stationsHash[stationName];
    }
    return -1;
}

//获取站点集合hash值
QList<QString> SubwayGraph::getStationsNameList()
{
    QList<QString> list;
    for (auto &a: stations)
    {
        list.push_back(a.name);
    }
    return list;
}



//添加新线路
void SubwayGraph::addLine(QString lineName, QColor color)
{
    linesHash[lineName]=lines.size();
    lines.push_back(Line(lineName,color));
}

//添加新站点
void SubwayGraph::addStation(Station s)
{
    int hash=stations.size();
    stationsHash[s.name]=hash;
    stations.push_back(s);
    for (auto &a: s.linesInfo)
    {
        lines[a].stationsSet.insert(hash);
    }
    updateMinMaxLongiLati();
}

//添加站点连接关系
void SubwayGraph::addConnection(int s1, int s2, int l)
{
    insertEdge(s1,s2);
    lines[l].edges.insert(Edge(s1,s2));
    lines[l].edges.insert(Edge(s2,s1));
}



//获取网络结构,用于前端显示
void SubwayGraph::getGraph(QList<int>&stationsList, QList<Edge>&edgesList)
{
    stationsList.clear();
    for (int i=0; i<stations.size(); ++i)
    {
        stationsList.push_back(i);
    }
    edgesList=edges.toList();
    return ;
}

//获取最少时间的线路
bool SubwayGraph::queryTransferMinTime(int s1, int s2, QList<int>&stationsList, QList<Edge>&edgesList)
{
#define INF 999999999
    stationsList.clear();
    edgesList.clear();

    if(s1==s2)
    {
        stationsList.push_back(s2);
        stationsList.push_back(s1);
        return true;
    }
    makeGraph();

    std::vector<int> path(stations.size(), -1);
    std::vector<double> dist(stations.size(), INF);
    dist[s1]=0;
    std::priority_queue<Node, std::vector<Node>, std::greater<Node>> priQ;
    priQ.push(Node(s1, 0));
    while(!priQ.empty())
    {
        Node top=priQ.top();
        priQ.pop();
        if(top.stationID==s2)
        {
            break ;
        }

        for (int i=0; i<graph[top.stationID].size(); ++i)
        {
            Node &adjNode=graph[top.stationID][i];
            if(top.distance+adjNode.distance<dist[adjNode.stationID])
            {
                path[adjNode.stationID]=top.stationID;
                dist[adjNode.stationID]=top.distance+adjNode.distance;
                priQ.push(Node(adjNode.stationID, dist[adjNode.stationID]));
            }
        }
    }

    if(path[s2]==-1)
    {
        return false;
    }
    int p=s2;
    while(path[p]!=-1)
    {
        stationsList.push_front(p);
        edgesList.push_front(Edge(path[p],p));
        p=path[p];
    }
    stationsList.push_front(s1);

//    qDebug()<<"s1="<<s1<<" s2="<<s2<<" size= "<<stationsList.size()<<" "<<edgesList.size()<<"\n";
    return true;
}

//获取最少换乘的线路
bool SubwayGraph::queryTransferMinTransfer(int s1, int s2, QList<int>&stationsList, QList<Edge>&edgesList)
{
    stationsList.clear();
    edgesList.clear();

    if(s1==s2)
    {
        stationsList.push_back(s2);
        stationsList.push_back(s1);
        return true;
    }

    std::vector<bool> linesVisted(lines.size(),false);
    std::vector<int> path(stations.size(),-1);
    path[s1]=-2;
    std::queue<int> que;
    que.push(s1);

    while(!que.empty())
    {
        int top=que.front();
        que.pop();
        for (auto &l: stations[top].linesInfo)
        {
            if(!linesVisted[l])
            {
                linesVisted[l]=true;
                for (auto &s: lines[l].stationsSet)
                {
                    if(path[s]==-1)
                    {
                        path[s]=top;
                        que.push(s);
                    }
                }
            }
        }
    }

    if(path[s2]==-1)
    {
        return false;
    }
    int p=s2;
    while(path[p]!=-2)
    {
        stationsList.push_front(p);
        edgesList.push_front(Edge(path[p],p));
        p=path[p];
    }
    stationsList.push_front(s1);
    return true;
}


================================================
FILE: SubwayTransferSystem/subwaygraph.h
================================================
#ifndef SUBWAYGRAPH_H
#define SUBWAYGRAPH_H

#include "station.h"
#include "line.h"
#include <QString>
#include <QPoint>
#include <QVector>
#include <QHash>

//图的邻接点结构
class Node{
public:
    int stationID;      //邻接点ID
    double distance;    //两点距离

    //构造函数
    Node(){};
    Node(int s, double dist) :stationID(s), distance(dist)
    {};

    //">"运算重载,用于小顶堆
    bool operator > (const Node& n) const
    {
        return this->distance>n.distance;
    }
};

//后端管理类
class SubwayGraph
{
protected:
    QVector<Station> stations;          //存储所有站点
    QVector<Line> lines;                //存储所有线路
    QHash<QString, int> stationsHash;   //站点名到存储位置的hash
    QHash<QString, int> linesHash;      //线路名到存储位置的hash
    QSet<Edge> edges;                   //所有边的集合
    QVector<QVector<Node>> graph;       //地铁线路网络图

public:
    //构造函数
    SubwayGraph();

    //获取线路名
    QString getLineName(int l);
    //获取线路颜色
    QColor getLineColor(int l);
    //获取线路hash值
    int getLineHash(QString lineName);
    //获取线路集合hash值
    QList<int> getLinesHash(QList<QString> linesList);
    //获取线路名集合
    QList<QString> getLinesNameList();
    //获取线路的所有包含站点
    QList<QString> getLineStationsList(int l);

    //获取站点名
    QString getStationName(int s);
    //获取站点地理坐标
    QPointF getStationCoord(int s);
    //获取站点最小坐标
    QPointF getMinCoord();
    //获取站点最大坐标
    QPointF getMaxCoord();
    //获取站点所属线路信息
    QList<int> getStationLinesInfo(int s);
    //获取两个站点的公共所属线路
    QList<int> getCommonLines(int s1, int s2);
    //获取站点hash值
    int getStationHash(QString stationName);
    //获取站点集合hash值
    QList<QString> getStationsNameList();

    //添加新线路
    void addLine(QString lineName, QColor color);
    //添加新站点
    void addStation(Station s);
    //添加站点连接关系
    void addConnection(int s1, int s2, int l);

    //获取网络结构,用于前端显示
    void getGraph(QList<int>&stationsList, QList<Edge>&edgesList);
    //获取最少时间的线路
    bool queryTransferMinTime(int s1, int s2,
                              QList<int>&stationsList,
                              QList<Edge>&edgesList);
    //获取最少换乘的线路
    bool queryTransferMinTransfer(int s1, int s2,
                                  QList<int>&stationsList,
                                  QList<Edge>&edgesList);
    //从文件读取数据
    bool readFileData(QString fileName);

private:
    //清空数据
    void clearData();
    //插入一条边
    bool insertEdge(int s1, int s2);
    //更新边界经纬度
    void updateMinMaxLongiLati();
    //生成图结构
    void makeGraph();
};

#endif // SUBWAYGRAPH_H


================================================
FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/.qmake.stash
================================================
QMAKE_CXX.INCDIRS = \
    D:/software/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include \
    D:/software/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include-fixed \
    D:/software/Qt/Tools/mingw530_32/i686-w64-mingw32/include \
    D:/software/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++ \
    D:/software/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32 \
    D:/software/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/backward
QMAKE_CXX.LIBDIRS = \
    D:/software/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0 \
    D:/software/Qt/Tools/mingw530_32/lib/gcc \
    D:/software/Qt/Tools/mingw530_32/i686-w64-mingw32/lib \
    D:/software/Qt/Tools/mingw530_32/lib
QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 5
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
    QT_COMPILER_STDCXX \
    QMAKE_GCC_MAJOR_VERSION \
    QMAKE_GCC_MINOR_VERSION \
    QMAKE_GCC_PATCH_VERSION


================================================
FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/Makefile
================================================
#############################################################################
# Makefile for building: SubwayTransferSystem
# Generated by qmake (3.1) (Qt 5.9.1)
# Project:  ..\SubwayTransferSystem\SubwayTransferSystem.pro
# Template: app
# Command: D:\software\Qt\5.9.1\mingw53_32\bin\qmake.exe -o Makefile ..\SubwayTransferSystem\SubwayTransferSystem.pro -spec win32-g++
#############################################################################

MAKEFILE      = Makefile

first: release
install: release-install
uninstall: release-uninstall
QMAKE         = D:\software\Qt\5.9.1\mingw53_32\bin\qmake.exe
DEL_FILE      = del
CHK_DIR_EXISTS= if not exist
MKDIR         = mkdir
COPY          = copy /y
COPY_FILE     = copy /y
COPY_DIR      = xcopy /s /q /y /i
INSTALL_FILE  = copy /y
INSTALL_PROGRAM = copy /y
INSTALL_DIR   = xcopy /s /q /y /i
QINSTALL      = D:\software\Qt\5.9.1\mingw53_32\bin\qmake.exe -install qinstall
QINSTALL_PROGRAM = D:\software\Qt\5.9.1\mingw53_32\bin\qmake.exe -install qinstall -exe
DEL_FILE      = del
SYMLINK       = $(QMAKE) -install ln -f -s
DEL_DIR       = rmdir
MOVE          = move
SUBTARGETS    =  \
		release \
		debug


release: FORCE
	$(MAKE) -f $(MAKEFILE).Release
release-make_first: FORCE
	$(MAKE) -f $(MAKEFILE).Release 
release-all: FORCE
	$(MAKE) -f $(MAKEFILE).Release all
release-clean: FORCE
	$(MAKE) -f $(MAKEFILE).Release clean
release-distclean: FORCE
	$(MAKE) -f $(MAKEFILE).Release distclean
release-install: FORCE
	$(MAKE) -f $(MAKEFILE).Release install
release-uninstall: FORCE
	$(MAKE) -f $(MAKEFILE).Release uninstall
debug: FORCE
	$(MAKE) -f $(MAKEFILE).Debug
debug-make_first: FORCE
	$(MAKE) -f $(MAKEFILE).Debug 
debug-all: FORCE
	$(MAKE) -f $(MAKEFILE).Debug all
debug-clean: FORCE
	$(MAKE) -f $(MAKEFILE).Debug clean
debug-distclean: FORCE
	$(MAKE) -f $(MAKEFILE).Debug distclean
debug-install: FORCE
	$(MAKE) -f $(MAKEFILE).Debug install
debug-uninstall: FORCE
	$(MAKE) -f $(MAKEFILE).Debug uninstall

Makefile: ../SubwayTransferSystem/SubwayTransferSystem.pro ../../../software/Qt/5.9.1/mingw53_32/mkspecs/win32-g++/qmake.conf ../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/spec_pre.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/qdevice.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/device_config.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/g++-base.conf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/angle.conf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/sanitize.conf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/gcc-base.conf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/qconfig.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3danimation.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3danimation_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dcore.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dcore_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dextras.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dextras_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dinput.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dinput_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dlogic.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dlogic_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquick.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquick_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickextras.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickextras_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickinput.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickinput_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickrender.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickrender_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3drender.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3drender_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_accessibility_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axbase.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axbase_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axcontainer.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axcontainer_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axserver.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axserver_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_bluetooth.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_bluetooth_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_bootstrap_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_concurrent.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_concurrent_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_core.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_core_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_dbus.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_dbus_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_designer.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_designer_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_designercomponents_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_egl_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_fb_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gamepad.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gamepad_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gui.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gui_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_help.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_help_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_location.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_location_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimedia.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimedia_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_network.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_network_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_nfc.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_nfc_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_opengl.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_opengl_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_openglextensions.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_openglextensions_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_packetprotocol_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_positioning.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_positioning_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_printsupport.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_printsupport_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qml.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qml_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmldebug_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmldevtools_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmltest.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmltest_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quick.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quick_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickparticles_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickwidgets.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickwidgets_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_scxml.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_scxml_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sensors.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sensors_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialbus.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialbus_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialport.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialport_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sql.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sql_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_svg.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_svg_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_testlib.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_testlib_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_theme_support_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_uiplugin.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_uitools.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_uitools_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_webchannel.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_webchannel_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_websockets.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_websockets_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_widgets.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_widgets_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_winextras.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_winextras_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xml.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xml_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qt_functions.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qt_config.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/win32-g++/qmake.conf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/spec_post.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/exclusive_builds.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/toolchain.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/default_pre.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/win32/default_pre.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/resolve_config.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/exclusive_builds_post.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/default_post.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/precompile_header.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/warn_on.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qt.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/resources.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/moc.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/win32/opengl.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/uic.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qmake_use.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/file_copies.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/win32/windows.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/testcase_targets.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/exceptions.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/yacc.prf \
		../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/lex.prf \
		../SubwayTransferSystem/SubwayTransferSystem.pro \
		../../../software/Qt/5.9.1/mingw53_32/lib/qtmain.prl \
		../../../software/Qt/5.9.1/mingw53_32/lib/Qt5Widgets.prl \
		../../../software/Qt/5.9.1/mingw53_32/lib/Qt5Gui.prl \
		../../../software/Qt/5.9.1/mingw53_32/lib/Qt5Core.prl
	$(QMAKE) -o Makefile ..\SubwayTransferSystem\SubwayTransferSystem.pro -spec win32-g++
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/spec_pre.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/qdevice.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/device_config.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/g++-base.conf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/angle.conf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/sanitize.conf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/common/gcc-base.conf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/qconfig.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3danimation.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3danimation_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dcore.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dcore_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dextras.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dextras_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dinput.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dinput_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dlogic.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dlogic_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquick.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquick_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickextras.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickextras_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickinput.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickinput_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickrender.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickrender_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3drender.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_3drender_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_accessibility_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axbase.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axbase_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axcontainer.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axcontainer_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axserver.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_axserver_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_bluetooth.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_bluetooth_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_bootstrap_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_concurrent.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_concurrent_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_core.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_core_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_dbus.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_dbus_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_designer.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_designer_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_designercomponents_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_egl_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_fb_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gamepad.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gamepad_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gui.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_gui_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_help.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_help_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_location.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_location_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimedia.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimedia_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_network.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_network_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_nfc.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_nfc_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_opengl.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_opengl_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_openglextensions.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_openglextensions_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_packetprotocol_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_positioning.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_positioning_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_printsupport.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_printsupport_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qml.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qml_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmldebug_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmldevtools_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmltest.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qmltest_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quick.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quick_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickparticles_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickwidgets.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_quickwidgets_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_scxml.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_scxml_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sensors.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sensors_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialbus.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialbus_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialport.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_serialport_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sql.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_sql_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_svg.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_svg_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_testlib.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_testlib_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_theme_support_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_uiplugin.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_uitools.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_uitools_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_webchannel.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_webchannel_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_websockets.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_websockets_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_widgets.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_widgets_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_winextras.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_winextras_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xml.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xml_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qt_functions.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qt_config.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/win32-g++/qmake.conf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/spec_post.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/exclusive_builds.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/toolchain.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/default_pre.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/win32/default_pre.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/resolve_config.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/exclusive_builds_post.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/default_post.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/precompile_header.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/warn_on.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qt.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/resources.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/moc.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/win32/opengl.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/uic.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/qmake_use.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/file_copies.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/win32/windows.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/testcase_targets.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/exceptions.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/yacc.prf:
../../../software/Qt/5.9.1/mingw53_32/mkspecs/features/lex.prf:
../SubwayTransferSystem/SubwayTransferSystem.pro:
../../../software/Qt/5.9.1/mingw53_32/lib/qtmain.prl:
../../../software/Qt/5.9.1/mingw53_32/lib/Qt5Widgets.prl:
../../../software/Qt/5.9.1/mingw53_32/lib/Qt5Gui.prl:
../../../software/Qt/5.9.1/mingw53_32/lib/Qt5Core.prl:
qmake: FORCE
	@$(QMAKE) -o Makefile ..\SubwayTransferSystem\SubwayTransferSystem.pro -spec win32-g++

qmake_all: FORCE

make_first: release-make_first debug-make_first  FORCE
all: release-all debug-all  FORCE
clean: release-clean debug-clean  FORCE
distclean: release-distclean debug-distclean  FORCE
	-$(DEL_FILE) Makefile
	-$(DEL_FILE) .qmake.stash

release-mocclean:
	$(MAKE) -f $(MAKEFILE).Release mocclean
debug-mocclean:
	$(MAKE) -f $(MAKEFILE).Debug mocclean
mocclean: release-mocclean debug-mocclean

release-mocables:
	$(MAKE) -f $(MAKEFILE).Release mocables
debug-mocables:
	$(MAKE) -f $(MAKEFILE).Debug mocables
mocables: release-mocables debug-mocables

check: first

benchmark: first
FORCE:

$(MAKEFILE).Release: Makefile
$(MAKEFILE).Debug: Makefile


================================================
FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/Makefile.Debug
================================================
#############################################################################
# Makefile for building: SubwayTransferSystem
# Generated by qmake (3.1) (Qt 5.9.1)
# Project:  ..\SubwayTransferSystem\SubwayTransferSystem.pro
# Template: app
#############################################################################

MAKEFILE      = Makefile.Debug

####### Compiler, tools and options

CC            = gcc
CXX           = g++
DEFINES       = -DUNICODE -DQT_DEPRECATED_WARNINGS -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN
CFLAGS        = -fno-keep-inline-dllexport -pipe -g -Wextra -Wall -W $(DEFINES)
CXXFLAGS      = -fno-keep-inline-dllexport -pipe -g -std=gnu++11 -Wextra -Wall -W -fexceptions -mthreads $(DEFINES)
INCPATH       = -I..\SubwayTransferSystem -I. -I..\..\..\software\Qt\5.9.1\mingw53_32\include -I..\..\..\software\Qt\5.9.1\mingw53_32\include\QtWidgets -I..\..\..\software\Qt\5.9.1\mingw53_32\include\QtGui -I..\..\..\software\Qt\5.9.1\mingw53_32\include\QtANGLE -I..\..\..\software\Qt\5.9.1\mingw53_32\include\QtCore -Idebug -I. -I..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\win32-g++ 
LINKER      =        g++
LFLAGS        =        -Wl,-subsystem,windows -mthreads
LIBS        =        -lmingw32 -LD:\software\Qt\5.9.1\mingw53_32\lib D:\software\Qt\5.9.1\mingw53_32\lib\libqtmaind.a -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib -lshell32 D:\software\Qt\5.9.1\mingw53_32\lib\libQt5Widgetsd.a D:\software\Qt\5.9.1\mingw53_32\lib\libQt5Guid.a D:\software\Qt\5.9.1\mingw53_32\lib\libQt5Cored.a 
QMAKE         = D:\software\Qt\5.9.1\mingw53_32\bin\qmake.exe
IDC           = idc
IDL           = midl
ZIP           = zip -r -9
DEF_FILE      = 
RES_FILE      = 
COPY          = copy /y
SED           = $(QMAKE) -install sed
COPY_FILE     = copy /y
COPY_DIR      = xcopy /s /q /y /i
DEL_FILE      = del
DEL_DIR       = rmdir
MOVE          = move
CHK_DIR_EXISTS= if not exist
MKDIR         = mkdir
INSTALL_FILE    = copy /y
INSTALL_PROGRAM = copy /y
INSTALL_DIR     = xcopy /s /q /y /i
QINSTALL        = D:\software\Qt\5.9.1\mingw53_32\bin\qmake.exe -install qinstall
QINSTALL_PROGRAM = D:\software\Qt\5.9.1\mingw53_32\bin\qmake.exe -install qinstall -exe

####### Output directory

OBJECTS_DIR   = debug

####### Files

SOURCES       = ..\SubwayTransferSystem\main.cpp \
		..\SubwayTransferSystem\mainwindow.cpp \
		..\SubwayTransferSystem\graphics_view_zoom.cpp \
		..\SubwayTransferSystem\station.cpp \
		..\SubwayTransferSystem\subwaygraph.cpp \
		..\SubwayTransferSystem\managelines.cpp \
		..\SubwayTransferSystem\apphelp.cpp debug\qrc_resource.cpp \
		debug\moc_mainwindow.cpp \
		debug\moc_graphics_view_zoom.cpp \
		debug\moc_managelines.cpp \
		debug\moc_apphelp.cpp
OBJECTS       = debug/main.o \
		debug/mainwindow.o \
		debug/graphics_view_zoom.o \
		debug/station.o \
		debug/subwaygraph.o \
		debug/managelines.o \
		debug/apphelp.o \
		debug/qrc_resource.o \
		debug/moc_mainwindow.o \
		debug/moc_graphics_view_zoom.o \
		debug/moc_managelines.o \
		debug/moc_apphelp.o

DIST          =  ..\SubwayTransferSystem\mainwindow.h \
		..\SubwayTransferSystem\graphics_view_zoom.h \
		..\SubwayTransferSystem\station.h \
		..\SubwayTransferSystem\line.h \
		..\SubwayTransferSystem\subwaygraph.h \
		..\SubwayTransferSystem\managelines.h \
		..\SubwayTransferSystem\apphelp.h ..\SubwayTransferSystem\main.cpp \
		..\SubwayTransferSystem\mainwindow.cpp \
		..\SubwayTransferSystem\graphics_view_zoom.cpp \
		..\SubwayTransferSystem\station.cpp \
		..\SubwayTransferSystem\subwaygraph.cpp \
		..\SubwayTransferSystem\managelines.cpp \
		..\SubwayTransferSystem\apphelp.cpp
QMAKE_TARGET  = SubwayTransferSystem
DESTDIR        = debug\ #avoid trailing-slash linebreak
TARGET         = SubwayTransferSystem.exe
DESTDIR_TARGET = debug\SubwayTransferSystem.exe

####### Build rules

first: all
all: Makefile.Debug  $(DESTDIR_TARGET)

$(DESTDIR_TARGET): ui_mainwindow.h ui_managelines.h $(OBJECTS) 
	$(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) object_script.SubwayTransferSystem.Debug  $(LIBS)

qmake: FORCE
	@$(QMAKE) -o Makefile.Debug ..\SubwayTransferSystem\SubwayTransferSystem.pro -spec win32-g++

qmake_all: FORCE

dist:
	$(ZIP) SubwayTransferSystem.zip $(SOURCES) $(DIST) ..\SubwayTransferSystem\SubwayTransferSystem.pro ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\features\spec_pre.prf ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\qdevice.pri ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\features\device_config.prf ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\common\g++-base.conf ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\common\angle.conf ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\common\sanitize.conf ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\common\gcc-base.conf ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\qconfig.pri ..\..\..\software\Qt\5.9.1\mingw53_32\mkspecs\modules\qt_lib_
Download .txt
gitextract_5p2saq3a/

├── README.md
├── SubwayTransferSystem/
│   ├── SubwayTransferSystem.pro
│   ├── SubwayTransferSystem.pro.user
│   ├── apphelp.cpp
│   ├── apphelp.h
│   ├── data/
│   │   ├── demo.txt
│   │   ├── outLine.txt
│   │   └── subwayLine.txt
│   ├── graphics_view_zoom.cpp
│   ├── graphics_view_zoom.h
│   ├── html/
│   │   ├── helpAddByText.html
│   │   ├── helpAddConnection.html
│   │   ├── helpAddLine.html
│   │   ├── helpAddStation.html
│   │   ├── helpTransfer.html
│   │   └── helpWatch.html
│   ├── line.h
│   ├── main.cpp
│   ├── mainwindow.cpp
│   ├── mainwindow.h
│   ├── mainwindow.ui
│   ├── managelines.cpp
│   ├── managelines.h
│   ├── managelines.ui
│   ├── myview.cpp
│   ├── myview.h
│   ├── querytransfer.cpp
│   ├── querytransfer.h
│   ├── querytransfer.ui
│   ├── resource.qrc
│   ├── station.cpp
│   ├── station.h
│   ├── subwaygraph.cpp
│   └── subwaygraph.h
├── build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/
│   ├── .qmake.stash
│   ├── Makefile
│   ├── Makefile.Debug
│   ├── Makefile.Release
│   ├── object_script.SubwayTransferSystem.Debug
│   ├── object_script.SubwayTransferSystem.Release
│   ├── release/
│   │   ├── apphelp.o
│   │   ├── graphics_view_zoom.o
│   │   ├── main.o
│   │   ├── mainwindow.o
│   │   ├── managelines.o
│   │   ├── moc_apphelp.cpp
│   │   ├── moc_apphelp.o
│   │   ├── moc_graphics_view_zoom.cpp
│   │   ├── moc_graphics_view_zoom.o
│   │   ├── moc_mainwindow.cpp
│   │   ├── moc_mainwindow.o
│   │   ├── moc_managelines.cpp
│   │   ├── moc_managelines.o
│   │   ├── moc_predefs.h
│   │   ├── qrc_resource.cpp
│   │   ├── qrc_resource.o
│   │   ├── station.o
│   │   ├── subwaygraph.o
│   │   └── translations/
│   │       ├── qt_bg.qm
│   │       ├── qt_ca.qm
│   │       ├── qt_cs.qm
│   │       ├── qt_da.qm
│   │       ├── qt_de.qm
│   │       ├── qt_en.qm
│   │       ├── qt_es.qm
│   │       ├── qt_fi.qm
│   │       ├── qt_fr.qm
│   │       ├── qt_gd.qm
│   │       ├── qt_he.qm
│   │       ├── qt_hu.qm
│   │       ├── qt_it.qm
│   │       ├── qt_ja.qm
│   │       ├── qt_ko.qm
│   │       ├── qt_lv.qm
│   │       ├── qt_pl.qm
│   │       ├── qt_ru.qm
│   │       ├── qt_sk.qm
│   │       └── qt_uk.qm
│   ├── ui_mainwindow.h
│   └── ui_managelines.h
├── dealData/
│   ├── line.txt
│   ├── main.cpp
│   ├── outLine.txt
│   └── readme.md
├── osmXmlParser/
│   ├── readme.md
│   ├── route.osm
│   ├── src/
│   │   └── osmXmlParser/
│   │       └── MyOsmParser.java
│   ├── station.osm
│   ├── station.txt
│   └── subwayLine.osm
└── 设计说明书.docx
Download .txt
SYMBOL INDEX (52 symbols across 21 files)

FILE: SubwayTransferSystem/apphelp.h
  function class (line 10) | class AppHelp : public QWidget

FILE: SubwayTransferSystem/graphics_view_zoom.h
  function class (line 38) | class Graphics_view_zoom : public QObject {

FILE: SubwayTransferSystem/line.h
  type QPair (line 11) | typedef QPair<int,int> Edge;
  function class (line 17) | class Line

FILE: SubwayTransferSystem/main.cpp
  function main (line 6) | int main(int argc, char *argv[])

FILE: SubwayTransferSystem/mainwindow.cpp
  function QColor (line 122) | QColor MainWindow::getLinesColor(const QList<int>& linesList)
  function QString (line 137) | QString MainWindow::getLinesName(const QList<int>& linesList)
  function QPointF (line 151) | QPointF MainWindow::transferCoord(QPointF coord)

FILE: SubwayTransferSystem/mainwindow.h
  function namespace (line 14) | namespace Ui {
  function class (line 18) | class MainWindow : public QMainWindow

FILE: SubwayTransferSystem/managelines.h
  function namespace (line 14) | namespace Ui {
  function class (line 18) | class ManageLines : public QDialog

FILE: SubwayTransferSystem/querytransfer.h
  function namespace (line 6) | namespace Ui {
  function class (line 10) | class QueryTransfer : public QDialog

FILE: SubwayTransferSystem/station.cpp
  function rad (line 5) | double rad(double d)
  function calcuDistance (line 12) | int calcuDistance(double fLati1, double fLong1, double fLati2, double fL...

FILE: SubwayTransferSystem/station.h
  function class (line 12) | class Station

FILE: SubwayTransferSystem/subwaygraph.cpp
  function QColor (line 147) | QColor SubwayGraph::getLineColor(int l)
  function QString (line 153) | QString SubwayGraph::getLineName(int l)
  function QPointF (line 226) | QPointF SubwayGraph::getMinCoord()
  function QPointF (line 232) | QPointF SubwayGraph::getMaxCoord()
  function QString (line 250) | QString SubwayGraph::getStationName(int s)
  function QPointF (line 256) | QPointF SubwayGraph::getStationCoord(int s)

FILE: SubwayTransferSystem/subwaygraph.h
  function class (line 12) | class Node{
  function class (line 30) | class SubwayGraph

FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_apphelp.cpp
  function QT_BEGIN_MOC_NAMESPACE (line 20) | QT_BEGIN_MOC_NAMESPACE
  function QMetaObject (line 84) | const QMetaObject *AppHelp::metaObject() const

FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_graphics_view_zoom.cpp
  function QT_BEGIN_MOC_NAMESPACE (line 20) | QT_BEGIN_MOC_NAMESPACE
  function QMetaObject (line 94) | const QMetaObject *Graphics_view_zoom::metaObject() const

FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_mainwindow.cpp
  function QT_BEGIN_MOC_NAMESPACE (line 20) | QT_BEGIN_MOC_NAMESPACE
  function QMetaObject (line 196) | const QMetaObject *MainWindow::metaObject() const

FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_managelines.cpp
  function QT_BEGIN_MOC_NAMESPACE (line 20) | QT_BEGIN_MOC_NAMESPACE
  function QMetaObject (line 112) | const QMetaObject *ManageLines::metaObject() const

FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/qrc_resource.cpp
  type QT_NAMESPACE (line 3718) | namespace QT_NAMESPACE {
  type initializer (line 3746) | struct initializer {
    method initializer (line 3747) | initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_resource)(); }

FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/ui_mainwindow.h
  function QT_BEGIN_NAMESPACE (line 34) | QT_BEGIN_NAMESPACE
  function namespace (line 580) | namespace Ui {

FILE: build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/ui_managelines.h
  function QT_BEGIN_NAMESPACE (line 29) | QT_BEGIN_NAMESPACE
  function namespace (line 318) | namespace Ui {

FILE: dealData/main.cpp
  function dealData (line 8) | void dealData() {
  function main (line 45) | int main() {

FILE: osmXmlParser/src/osmXmlParser/MyOsmParser.java
  class Station (line 17) | class Station{
    method Station (line 24) | Station (String i, String n, String e, String la, String lo){
    method equals (line 32) | @Override
  class Route (line 42) | class Route{
    method Route (line 52) | Route(){
  class MyOsmParser (line 57) | public class MyOsmParser {
    method MyOsmParser (line 62) | MyOsmParser(){
    method parseStation (line 67) | public void parseStation(){
    method parseRoute (line 110) | public void parseRoute(){
    method main (line 189) | public static void main(String[] args) {
Condensed preview — 91 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,028K chars).
[
  {
    "path": "README.md",
    "chars": 2568,
    "preview": "## 上海地铁换乘指南系统(SubwayTransferSystem)\n\n#### 简介\n本项目是在2017年暑期所写的上海地铁换乘指南系统,是从零学QT,在两周左右无借鉴任何相同或相似程序全部由自己一人完成的小项目。\n\n个人觉得还是非常用"
  },
  {
    "path": "SubwayTransferSystem/SubwayTransferSystem.pro",
    "chars": 1305,
    "preview": "#-------------------------------------------------\n#\n# Project created by QtCreator 2017-08-03T12:33:22\n#\n#-------------"
  },
  {
    "path": "SubwayTransferSystem/SubwayTransferSystem.pro.user",
    "chars": 23618,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE QtCreatorProject>\n<!-- Written by QtCreator 4.3.1, 2017-08-22T18:44:29."
  },
  {
    "path": "SubwayTransferSystem/apphelp.cpp",
    "chars": 2982,
    "preview": "#include \"apphelp.h\"\n#include <QIcon>\n\n#include <QDesktopWidget>\n#include <QRect>\n#include <QPoint>\n#include <QHBoxLayou"
  },
  {
    "path": "SubwayTransferSystem/apphelp.h",
    "chars": 467,
    "preview": "#ifndef APPHELP_H\n#define APPHELP_H\n\n#include <QWidget>\n#include <QPushButton>\n#include <QTextBrowser>\n#include <QStacke"
  },
  {
    "path": "SubwayTransferSystem/data/demo.txt",
    "chars": 365,
    "preview": "id: 5\nname: 5号线\ncolour: #9253B2\nfromTo: 莘庄 闵行开发区\ntotalStations: 11\n1 莘庄\t121.385379,31.111193\n2 春申路\t121.385937,31.098112"
  },
  {
    "path": "SubwayTransferSystem/data/outLine.txt",
    "chars": 12982,
    "preview": "id: 1\nname: 1号线\ncolour: #E70012\nfromTo: 富锦路 莘庄\ntotalStations: 28\n1 富锦路\t121.424661,31.39226\n2 友谊西路\t121.427726,31.381227\n"
  },
  {
    "path": "SubwayTransferSystem/data/subwayLine.txt",
    "chars": 15734,
    "preview": "id: 1\nname: 1号线\ncolour: #E70012\nfrom: 富锦路\nto: 莘庄\ntotalStation: 28\n2584702105\t富锦路\t31.3933626\t121.4200409\n3800583782\t友谊西路"
  },
  {
    "path": "SubwayTransferSystem/graphics_view_zoom.cpp",
    "chars": 1905,
    "preview": "#include \"graphics_view_zoom.h\"\n#include <QMouseEvent>\n#include <QApplication>\n#include <QScrollBar>\n#include <qmath.h>\n"
  },
  {
    "path": "SubwayTransferSystem/graphics_view_zoom.h",
    "chars": 1927,
    "preview": "#ifndef GRAPHICS_VIEW_ZOOM_H\n#define GRAPHICS_VIEW_ZOOM_H\n\n#include <QObject>\n#include <QGraphicsView>\n\n/*!\n * This clas"
  },
  {
    "path": "SubwayTransferSystem/html/helpAddByText.html",
    "chars": 155,
    "preview": "<h3>文本方式简易添加方法</h3>\n<br>\n<br>\n\t点击 <img height=24 weight=24 src=\":/icon/icon/text.png\"> , 以文本方式快捷添加线路、站点、连接关系;\n<br>\n<p>\n"
  },
  {
    "path": "SubwayTransferSystem/html/helpAddConnection.html",
    "chars": 210,
    "preview": "<h3>新增站点连接方法</h3>\n<br>\n<br>\n\t点击 <img height=24 weight=24 src=\":/icon/icon/connect.png\"> , 添加连接;\n<br>\n<p>\n\t1.先添加新线路信息;\n\t"
  },
  {
    "path": "SubwayTransferSystem/html/helpAddLine.html",
    "chars": 207,
    "preview": "<h3>新增线路方法</h3>\n<br>\n<br>\n\t点击 <img height=24 weight=24 src=\":/icon/icon/subway.png\"> , 添加线路;\n<br>\n<p>\n\t1.先添加新线路信息;\n\t<br"
  },
  {
    "path": "SubwayTransferSystem/html/helpAddStation.html",
    "chars": 208,
    "preview": "<h3>新增站点方法</h3>\n<br>\n<br>\n\t点击 <img height=24 weight=24 src=\":/icon/icon/station.png\"> , 添加站点;\n<br>\n<p>\n\t1.先添加新线路信息;\n\t<b"
  },
  {
    "path": "SubwayTransferSystem/html/helpTransfer.html",
    "chars": 302,
    "preview": "<h3>地铁换乘指南</h3>\n<br>\n<p>\n\t视图右侧为换乘指南,选择相应线路站点即可换乘;\n\t<br>\n\t选择方式有;<strong>“最短时间”</strong>和;<strong>“最少换乘”</strong>;\n\t<br>\n"
  },
  {
    "path": "SubwayTransferSystem/html/helpWatch.html",
    "chars": 454,
    "preview": "<h3>查看地铁网络线路图</h3>\n<br>\n<p>\n\t地铁线路图根据上海现有地铁站的地理<strong>经纬度</strong>数据显现出来;\n\t<br>\n\t每条线路有不同的颜色,重叠的线路为颜色叠加显示,效果为<strong>正片叠"
  },
  {
    "path": "SubwayTransferSystem/line.h",
    "chars": 683,
    "preview": "#ifndef LINE_H\n#define LINE_H\n\n#include <QString>\n#include <QColor>\n#include <QPair>\n#include <QSet>\n#include <QVector>\n"
  },
  {
    "path": "SubwayTransferSystem/main.cpp",
    "chars": 393,
    "preview": "#include \"mainwindow.h\"\n#include <QApplication>\n#include <QSplashScreen>\n#include <QDesktopWidget>\n\nint main(int argc, c"
  },
  {
    "path": "SubwayTransferSystem/mainwindow.cpp",
    "chars": 18546,
    "preview": "#include \"ui_mainwindow.h\"\n#include \"ui_managelines.h\"\n#include \"mainwindow.h\"\n\n#include <QGraphicsItem>\n#include <QMess"
  },
  {
    "path": "SubwayTransferSystem/mainwindow.h",
    "chars": 2879,
    "preview": "#ifndef MAINWINDOW_H\n#define MAINWINDOW_H\n\n#include \"graphics_view_zoom.h\"\n#include \"subwaygraph.h\"\n#include \"manageline"
  },
  {
    "path": "SubwayTransferSystem/mainwindow.ui",
    "chars": 22109,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MainWindow</class>\n <widget class=\"QMainWindow\" name=\""
  },
  {
    "path": "SubwayTransferSystem/managelines.cpp",
    "chars": 5829,
    "preview": "#include \"ui_managelines.h\"\n#include \"managelines.h\"\n\n#include <QPixmap>\n#include <QColorDialog>\n#include <QFile>\n#inclu"
  },
  {
    "path": "SubwayTransferSystem/managelines.h",
    "chars": 1879,
    "preview": "#ifndef MANAGELINES_H\n#define MANAGELINES_H\n\n#include <QDialog>\n#include <QVector>\n#include <QTabWidget>\n#include <QList"
  },
  {
    "path": "SubwayTransferSystem/managelines.ui",
    "chars": 18985,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ManageLines</class>\n <widget class=\"QDialog\" name=\"Man"
  },
  {
    "path": "SubwayTransferSystem/myview.cpp",
    "chars": 604,
    "preview": "#include \"myview.h\"\n\nMyView::MyView(QWidget *parent) : QGraphicsView(parent)\n{\n//    setHorizontalScrollBarPolicy(Qt::Sc"
  },
  {
    "path": "SubwayTransferSystem/myview.h",
    "chars": 386,
    "preview": "#ifndef MYVIEW_H\n#define MYVIEW_H\n\n#include <QGraphicsView>\n#include <QWheelEvent>\n#include <QGraphicsItem>\n\nclass MyVie"
  },
  {
    "path": "SubwayTransferSystem/querytransfer.cpp",
    "chars": 236,
    "preview": "#include \"querytransfer.h\"\n#include \"ui_querytransfer.h\"\n\nQueryTransfer::QueryTransfer(QWidget *parent) :\n    QDialog(pa"
  },
  {
    "path": "SubwayTransferSystem/querytransfer.h",
    "chars": 306,
    "preview": "#ifndef QUERYTRANSFER_H\n#define QUERYTRANSFER_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass QueryTransfer;\n}\n\nclass QueryT"
  },
  {
    "path": "SubwayTransferSystem/querytransfer.ui",
    "chars": 7262,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>QueryTransfer</class>\n <widget class=\"QDialog\" name=\"Q"
  },
  {
    "path": "SubwayTransferSystem/resource.qrc",
    "chars": 1045,
    "preview": "<RCC>\n    <qresource prefix=\"/icon\">\n        <file>icon/enlarge.png</file>\n        <file>icon/shrink.png</file>\n        "
  },
  {
    "path": "SubwayTransferSystem/station.cpp",
    "chars": 1090,
    "preview": "#include \"station.h\"\n#include <math.h>\n\n// 角度转弧度\ndouble rad(double d)\n{\n    const double PI = 3.1415926535898;\n    retur"
  },
  {
    "path": "SubwayTransferSystem/station.h",
    "chars": 689,
    "preview": "#ifndef STATION_H\n#define STATION_H\n\n#include <QString>\n#include <QPointF>\n#include <QSet>\n\nclass SubwayGraph;\nclass QTe"
  },
  {
    "path": "SubwayTransferSystem/subwaygraph.cpp",
    "chars": 10094,
    "preview": "#include \"subwaygraph.h\"\n#include <QFile>\n#include <QTextStream>\n#include <QDebug>\n#include <queue>\n\n//构造函数\nSubwayGraph:"
  },
  {
    "path": "SubwayTransferSystem/subwaygraph.h",
    "chars": 2487,
    "preview": "#ifndef SUBWAYGRAPH_H\n#define SUBWAYGRAPH_H\n\n#include \"station.h\"\n#include \"line.h\"\n#include <QString>\n#include <QPoint>"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/.qmake.stash",
    "chars": 1012,
    "preview": "QMAKE_CXX.INCDIRS = \\\n    D:/software/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include \\\n    D:/software/Qt/T"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/Makefile",
    "chars": 27837,
    "preview": "#############################################################################\n# Makefile for building: SubwayTransferSys"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/Makefile.Debug",
    "chars": 125424,
    "preview": "#############################################################################\n# Makefile for building: SubwayTransferSys"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/Makefile.Release",
    "chars": 125648,
    "preview": "#############################################################################\n# Makefile for building: SubwayTransferSys"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/object_script.SubwayTransferSystem.Debug",
    "chars": 284,
    "preview": "INPUT(\n./debug\\main.o\n./debug\\mainwindow.o\n./debug\\graphics_view_zoom.o\n./debug\\station.o\n./debug\\subwaygraph.o\n./debug\\"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/object_script.SubwayTransferSystem.Release",
    "chars": 308,
    "preview": "INPUT(\n./release\\main.o\n./release\\mainwindow.o\n./release\\graphics_view_zoom.o\n./release\\station.o\n./release\\subwaygraph."
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_apphelp.cpp",
    "chars": 3463,
    "preview": "/****************************************************************************\n** Meta object code from reading C++ file "
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_graphics_view_zoom.cpp",
    "chars": 4060,
    "preview": "/****************************************************************************\n** Meta object code from reading C++ file "
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_mainwindow.cpp",
    "chars": 8655,
    "preview": "/****************************************************************************\n** Meta object code from reading C++ file "
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_managelines.cpp",
    "chars": 5153,
    "preview": "/****************************************************************************\n** Meta object code from reading C++ file "
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/moc_predefs.h",
    "chars": 9616,
    "preview": "#define __DBL_MIN_EXP__ (-1021)\n#define __cpp_attributes 200809\n#define __pentiumpro__ 1\n#define __UINT_LEAST16_MAX__ 0x"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/release/qrc_resource.cpp",
    "chars": 287004,
    "preview": "/****************************************************************************\n** Resource object code\n**\n** Created by: "
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/ui_mainwindow.h",
    "chars": 27741,
    "preview": "/********************************************************************************\n** Form generated from reading UI file"
  },
  {
    "path": "build-SubwayTransferSystem-Desktop_Qt_5_9_1_MinGW_32bit-Release/ui_managelines.h",
    "chars": 19710,
    "preview": "/********************************************************************************\n** Form generated from reading UI file"
  },
  {
    "path": "dealData/line.txt",
    "chars": 1245,
    "preview": "Ϻ1 · · · ´ · ͨ´ · ´ ˮ· ϺϷ ӳ· ɽ· Ϻվ · բ· 㳡 · · · ɽ· һ Ϻ · Ϻվ ԰ · ⻷· ݷׯ\nϺ2 ֶʻ · Զ · ɳ Ķ· ·  · · Ž߿ · ͹԰ ϺƼ ʹ · ½ Ͼ· 㳡 Ͼ· "
  },
  {
    "path": "dealData/main.cpp",
    "chars": 912,
    "preview": "#include <iostream>\n#include <fstream>\n#include <sstream>\n#include <string>\n#include <vector>\nusing namespace std;\n\nvoid"
  },
  {
    "path": "dealData/outLine.txt",
    "chars": 3388,
    "preview": "id: 1\nname: 1\nfromTo: · ݷׯ\ntotalStations: 28\n1 ·\n2 ·\n3 ·\n4 ´\n5 ·\n6 ͨ´\n7 ·\n8 ´\n9 ˮ·\n10 ϺϷ\n11 ӳ·\n12 ɽ·\n13 Ϻվ\n14 ·\n15 բ·\n16"
  },
  {
    "path": "dealData/readme.md",
    "chars": 1281,
    "preview": "### 获取数据模块\n\n本程序将线路数据进行规整,以便SubwayTransferSystem中使用,结果在outLine.txt文件中,最终文件在[SubwayTransferSystem/data/outLine.txt](https:"
  },
  {
    "path": "osmXmlParser/readme.md",
    "chars": 1796,
    "preview": "### 获取数据模块\n\n#### 数据来源\n\n[Open Street Map](https://www.openstreetmap.org/#map=5/47.725/21.138)   \nOSM是一款由网络大众共同打造的免费开源、可编辑"
  },
  {
    "path": "osmXmlParser/route.osm",
    "chars": 70003,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<osm version=\"0.6\" generator=\"Osmosis 0.45\">\n  <bounds minlon=\"120.69850\" minlat="
  },
  {
    "path": "osmXmlParser/src/osmXmlParser/MyOsmParser.java",
    "chars": 5339,
    "preview": "package osmXmlParser;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\nimport java.io.I"
  },
  {
    "path": "osmXmlParser/station.osm",
    "chars": 229276,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<osm version=\"0.6\" generator=\"Osmosis 0.45\">\n  <bounds minlon=\"120.69850\" minlat="
  },
  {
    "path": "osmXmlParser/station.txt",
    "chars": 27680,
    "preview": "29583117\tݷׯ\t31.1110347\t121.3798759\n266072852\tƽ·\t31.2629428\t121.4964404\n266073071\t·\t31.2609506\t121.4853185\n267197150\tʹ\t31"
  },
  {
    "path": "osmXmlParser/subwayLine.osm",
    "chars": 687136,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<osm version=\"0.6\" generator=\"Osmosis 0.45\">\n  <bounds minlon=\"120.69850\" minlat="
  }
]

// ... and 33 more files (download for full content)

About this extraction

This page contains the full source code of the BaiJiazm/SubwayTransferSystem GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 91 files (1.7 MB), approximately 812.0k tokens, and a symbol index with 52 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!