基于HTML + jQuery + Bootstrap 4實現(Web)地鐵票價信息生成系統

地鐵票價信息表生成系統

1. 需求分析

1.1 背景

地鐵已經成為大多數人出行的首選,北京地鐵有多條運營線路, 截至 2019 年 12 月,北京市軌道交通路網運營線路達 23 條、總里程 699.3 公里、車站 405 座。2019 年,北京地鐵年乘客量達到 45.3 億人次,日均客流為 1241.1 萬人次,單日客運量最高達 1327.46 萬人次。由于采用浮動票價,乘客在乘坐地鐵時需要知道出發站和目的站所需低票價以避免不必要的浪費,這就需要在乘客購票前夠告知此次乘車的票價。因此,每個車站,均要提供從該站出發,到其他所有地鐵站的最少票價信息表供乘客購票前查看。如果有新的地鐵線路的加入,就會導致價格表的變更,因此需要使用計算機軟件自動生成該票價表。

請設計一個地鐵票價信息表生成軟件,當輸入任意起始站后,能夠自動計算出以該站為起始點到其他所有各地鐵站點(僅限地鐵出行)的票價信息表。

1.2 用戶需求

1.2.1 文字輸入查詢

路徑查詢:用戶輸入起始站、終點站,點擊相應按鈕,系統查找輸出里程最短的路徑。

票價表查詢:用戶輸入起始站,點擊相應按鈕,系統查找并輸出以相應站點為起始站,到地鐵線路中每一站的票價、里程等信息。

1.2.2 圖形界面查詢

顯示完整的北京地鐵線路圖,用戶點擊選取自己旅程的起點、終點站,點擊相應查詢按鈕,系統在地鐵書上突出顯示最短路徑。

1.3 系統需求

1.3.1 地鐵信息數據結構

每個站點的名稱、線路等信息;站點之間的連接、距離等關系;最短路查詢算法中用到的標記信息等等,都需要被儲存在易于查找、更改的數據結構中。

1.3.2 最短路徑查詢算法

最短路徑問題是圖論研究中的一個經典算法問題,旨在尋找圖(由結點和路徑組成的)中兩結點之間的最短路徑。

在本任務中,輸入一個站時,需要能查找到整個圖中其他所有站點到他的最短路徑及其長度。

1.3.3 TXT 文件讀入地鐵信息

北京地鐵線路基礎信息數據通過一個名為“BaseSubWayInfo.txt”的文本文件讀入。需要有算法能夠讀取并切割提取該文本文檔中的內容,儲存在相應的地鐵信息數據結構中。

1.3.4 前端圖形界面

需要生成可通按鈕、輸入框等形式與用戶進行交互的 GUI(Graphical User Interface),通過點擊按鈕、上傳文件、輸入站點、提交表單等等方式完成用戶的查詢需求。

1.3.5 前后端交互

前端的圖形界面要與后端的數據、算法進行有效、可信的交互。把輸入的信息提取出來,作為參數傳遞給后端相應的算法,獲得結果再傳回前端圖形界面,使得用戶的操作能夠輸出正確的結果。這是本任務中最不好入門,也是我在上面耗費時間最長的部分。

2. 數據結構設計

由于本項目的數據結構由 JavaScript 語言寫就。

JavaScript 是 Web 的編程語言。所有現代的 HTML 頁面都使用 JavaScript。

2.1 Station 類

2.1.1 需求和思想

Name[]數組儲存站名,

2.1.2 代碼實現

class Station  {constructor (name) {this.name = name;this.lines = [];//this.location = [0];this.toEdge = undefined;//this.isTransfer = false;//用于求最短路徑this.preStation = undefined;this.isVisited = false;this.distance = Number.MAX_SAFE_INTEGER;this.fare = Number.MAX_SAFE_INTEGER;}

2.2 Edge 類

2.2.1 需求和思想
2.2.2 代碼實現
class Edge {constructor(from, to, weight) {this.nextEdge = undefined; //指向鄰接表中的下一條邊this.from = from; this.to = to;this.weight = weight;}
}

2.3 StationGraph 類

2.3.1 需求和思想
2.3.2 代碼實現
class StationsGraph {//無向圖constructor() {//頂點this.stationArray = [];}StationAdd(stationName, lineNumber) {for (let element of this.stationArray) {if (element.name == stationName) {element.lines.push(lineNumber);element.isTransfer = true;return element;}};let stationNew = new Station(stationName);stationNew.lines.push(lineNumber);this.stationArray.push(stationNew);return stationNew;};StationGet(stationName) {for (const iterator of this.stationArray) {

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/78795.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78795.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/78795.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EtherNet/IP 轉 Modbus 協議網關

一、產品概述 1.1 產品用途 SG-EIP-MOD-210 網關可以實現將 Modbus 接口設備連接到 EtherNet/IP 網 絡中。用戶不需要了解具體的 Modbus 和 EtherNet/IP 協議即可實現將 Modbus 設 備掛載到 EtherNet/IP 接口的 PLC 上,并和 Modbus 設備進行數…

PostgreSQL:邏輯復制與物理復制

🧑 博主簡介:CSDN博客專家,歷代文學網(PC端可以訪問:https://literature.sinhy.com/#/?__c1000,移動端可微信小程序搜索“歷代文學”)總架構師,15年工作經驗,精通Java編…

騰訊云COS與ZKmall 開源商城的存儲集成方案

ZKmall 開源商城與騰訊云對象存儲(COS)的集成,可通過云端資源托管、自動化數據同步、高性能存儲架構實現本地存儲負載降低與訪問效率提升。以下是基于搜索結果的集成路徑與核心優化點: 一、存儲架構升級:本地與云端協同…

HTML — 浮動

浮動 HTML浮動(Float)是一種CSS布局技術,通過float: left或float: right使元素脫離常規文檔流并向左/右對齊,常用于圖文混排或橫向排列內容。浮動元素會緊貼父容器或相鄰浮動元素的邊緣,但脫離文檔流后可能導致父容器高…

【軟件測試學習day1】軟件測試概念

前言 本篇學習,測試相關基礎概念、常見的開發模型測和測試模型,搞懂4個問題: 什么是需求什么是 bug什么是測試用例開發模型和測試模型 目錄 1. 什么是需求 1.1 為什么要有需求 1.2 測試人員眼里的需求 1.3 如何深入了解需求 2. 測試用例…

Flutter常用組件實踐

Flutter常用組件實踐 1、MaterialApp 和 Center(組件居中)2、Scaffold3、Container(容器)4、BoxDecoration(裝飾器)5、Column(縱向布局)及Icon(圖標)6、Column/Row(橫向/橫向布局)+CloseButton/BackButton/IconButton(簡單按鈕)7、Expanded和Flexible8、Stack和Po…

劉火良FreeRTOS內核實現與應用學習之7——任務延時列表

在《劉火良FreeRTOS內核實現與應用學習之6——多優先級》的基礎上:關鍵是添加了全局變量:xNextTaskUnblockTime ,與延時列表(xDelayedTaskList1、xDelayedTaskList2)來高效率的實現延時。 以前需要在掃描就緒列表中所…

圖像預處理-插值方法

一.插值方法 當我們對圖像進行縮放或旋轉等操作時,需要在新的像素位置上計算出對應的像素值。 而插值算法的作用就是根據已知的像素值來推測未知位置的像素值。 1.1 最近鄰插值 CV2.INTER_NEAREST 其為 warpAffine() 函數的參數 flags 的其一,表示最近…

智能配電保護:公共建筑安全的新 “防火墻”

安科瑞劉鴻鵬 摘要 隨著城市建筑體量的不斷增長和電氣設備的廣泛使用,現代建筑大樓的用電安全問題日益突出。傳統配電方式面臨監測盲區多、響應滯后、火災隱患難發現等問題。為提升建筑電氣系統的安全性和智能化水平,智慧用電系統應運而生。本文結合安…

如何解決DDoS攻擊問題 ?—專業解決方案深度分析

本文深入解析DDoS攻擊面臨的挑戰與解決策略,提供了一系列防御技術和實踐建議,幫助企業加強其網絡安全架構,有效防御DDoS攻擊。從攻擊的識別、防范措施到應急響應,為網絡安全工作者提供了詳細的操作指引。 DDoS攻擊概覽&#xff1a…

構建靈活的接口抽象層:支持多種后端數據存取的實戰指南

構建靈活的接口抽象層:支持多種后端數據存取的實戰指南 引言 在現代軟件開發中,數據存取成為業務邏輯的核心組成部分。然而,由于后端數據存儲方式的多樣性(如關系型數據庫、NoSQL數據庫和文件存儲),如何設計一套能夠適配多種后端數據存取的接口抽象層,成為技術團隊關注…

OpenCV 圖形API(23)圖像和通道合成

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 1.算法描述 在OpenCV的G-API模塊中,圖像和通道合成(composition)函數允許用戶對圖像進行復雜的操作,如合并…

帝國cms導航淘客新聞下載多功能網站源碼 二次元風格自適應附教程

一、本模板使用帝國cms7.5 utf8版本,二次元導航新聞下載工具淘客自適應響應式帝國cms模板。 1、網站后臺有3個系統模型,新聞系統模型,下載系統模型,導航系統模型,商城系統模型,可以根據自己的需求不同&…

本地部署大模型(ollama模式)

分享記錄一下本地部署大模型步驟。 大模型應用部署可以選擇 ollama 或者 LM Studio。本文介紹ollama本地部署 ollama官網為:https://ollama.com/ 進入官網,下載ollama。 ollama是一個模型管理工具和平臺,它提供了很多國內外常見的模型&…

C# virtual 和 abstract 詳解

簡介 在 C# 中,virtual 和 abstract 關鍵字都用于面向對象編程中的繼承和多態,它們主要用于方法、屬性和事件的定義,但在用法上存在一些重要的區別。 virtual 關鍵字 virtual 表示可重寫的方法,但可以提供默認實現,…

自動駕駛的數據集以及yolov8和yolop

項目背景 網絡全部是分割了沒有檢測。 自動駕駛的車道線和可行駛區域在數據集中的表示 自動駕駛系統中的車道線和可行駛區域的表示方式主要有以下幾種: 基于幾何模型:使用幾何模型來描述車道線和可行駛區域的形狀和位置,例如直線、曲線、多…

Oracle DROP、TRUNCATE 和 DELETE 原理

在 Oracle 11g 中,DROP、TRUNCATE 和 DELETE 是三種不同的數據清理操作,它們的底層原理和適用場景有顯著差異 1. DELETE 的原理 類型:DML(數據操作語言) 功能:逐行刪除表中符合條件的數據,保留…

PCIe 5.0光學SSD原型問世!

近日,Kioxia Corporation(鎧俠)、AIO Core Co., Ltd. 和 Kyocera Corporation(京瓷)聯合宣布成功開發了一款支持 PCIe 5.0 接口的光學 SSD 原型。該技術旨在通過光接口替換傳統的電接口,從而顯著增加計算設…

SQL 查詢中涉及的表及其作用說明

SQL 查詢中涉及的表及其作用說明: 涉及的數據庫表 表名別名/用途關聯關系dbo.s_orderSO(主表)存儲訂單主信息(訂單號、日期、客戶等)dbo.s_orderdetailSoD(訂單明細)通過 billid SO.billid 關…

C++學習之金融類安全傳輸平臺項目git

目錄 1.知識點概述 2.版本控制工具作用 3.git和SVN 4.git介紹 5.git安裝 6.工作區 暫存區 版本庫概念 7.本地文件添加到暫存區和提交到版本庫 8.文件的修改和還原 9.查看提交的歷史版本信息 10.版本差異比較 11.刪除文件 12.本地版本管理設置忽略目錄 13.遠程git倉…