火車售票軟體系統的設計方案
- 2020 年 12 月 28 日
- 筆記
一、項目介紹
項目是模仿實現12306的部分功能,主要是售票系統的實現。這個系統的面向兩類人,一是用戶,二是系統管理員,其中系統設計主體部分是車次車票等資訊的存儲方式以及用戶與系統的交互對後台數據的影響。車次資訊與車票資訊以一種什麼樣的形式相互關聯尤其重要,用戶做出自己的行為後(購買車票,查看車票訂單資訊,退票,改簽等)怎麼影響著後台數據是本次部落格討論的重點。
二、系統架構
本系統的設計架構是MVC架構,即Model-View-Controller(模型-視圖-控制器),其中Model代表一個存儲數據的對象及數據模型;View代表模型包含的數據的表達方式,一般表達為可視化的介面介面;Controller作用於模型和視圖之上,控制數據流向模型對象,並在數據變化時更新視圖。控制器可以使視圖和模型分離開解耦合。
在本項目中,Model保存一些數據模型,如用戶的資訊,用戶的訂單資訊,系統中的車次資訊,車次的對應車票資訊,系統中的總的訂單資訊等等;控Controller則處理用戶做出行為後後端數據資訊的變更,還有前端數據資訊可視化的變更;View則是軟解介面的可視化,主要是面向用戶設計的UI。可以看到這種架構的一個顯著的好處就是前後端分離,數據模型和視圖的關聯是要通過控制器來進行,模型只要關心怎麼讓別人取值,怎麼根據控制器的資訊修改內部狀態,不用關係它的數據怎麼展現出來;視圖也不用受限於數據模型,而且同一個數據模型可以對應多個視圖,比如說用戶的歷史訂單資訊里會顯示所有的訂單,而當前訂單資訊里只顯示當前生效的車票資訊的等等。
三、介面API
介面名稱 | 介面功能 | 傳入參數 | 返回資訊 |
用戶註冊 | 為新用戶註冊一個帳號 | 用戶名,密碼 | 註冊成功或者失敗的資訊 |
用戶登錄 | 使已有帳號的用戶登錄系統 | 帳號,密碼,驗證碼 | 登錄是否成功 |
用戶個人資訊 | 用戶查看個人資訊 | 無 | 用戶個人資訊的數據結構指針 |
修改個人資訊 | 修改個人資訊 | 修改欄位, 修改資訊 | 修改是否成功 |
查看訂單 | 用戶查看自己的訂票資訊 | 無 | 用戶訂單資訊數據結構指針 |
查看車次資訊 | 查看車次資訊 | 出發站,終點站 | 車次資訊數據結構指針 |
查看車票資訊 | 查看車票的相關資訊 | 車次資訊數據結構指針 | 車票資訊數據結構指針 |
訂車票 | 用戶購買車票 | 車票資訊數據結構 | 購買是否成功的資訊 |
退票 | 用戶退票 | 訂單資訊數據結構指針 | 是否退票成功 |
改簽 | 用戶改簽 | 訂單資訊數據結構指針 | 是否改簽成功 |
三、軟體系統概念原型的不同視圖
1. 分解視圖
分解是構建軟體架構模型的關鍵步驟,分解視圖也是描述軟體架構模型的關鍵視圖,一般分解視圖呈現為較為明晰的分解結構(breakdown structure)特點。分解視圖用軟體模組勾划出系統結構,往往會通過不同抽象層級的軟體模組形成層次化的結構。
2. 執行視圖
執行視圖展示了系統運行時的時序結構特點,比如流程圖、時序圖等。執行視圖中的每一個執行實體,一般稱為組件(Component),都是不同於其他組件的執行實體。如果有相同或相似的執行實體那麼就把它們合併成一個。執行實體可以最終分解到軟體的基本元素和軟體的基本結構,因而與軟體程式碼具有比較直接的映射關係。在設計與實現過程中,我們一般將執行視圖轉換為偽程式碼之後,再進一步轉換為實現程式碼。
3. 工作分配視圖
工作分配視圖將系統分解成可獨立完成的工作任務,以便分配給各項目團隊和成員。工作分配視圖有利於跟蹤不同項目團隊和成員的工作任務的進度,也有利於在個項目團隊和成員之間合理地分配和調整項目資源,甚至在項目計劃階段工作分配視圖對於進度規劃、項目評估和經費預算都能起到有益的作用。
四、資料庫設計
用戶id |
名字 |
身份證 |
密碼 |
手機號 |
|
|
|
|
|
車次id |
出發站 |
終點站 |
出發時間 |
到達時間 |
|
|
|
|
|
車票id |
車次id |
價格 |
剩餘數量 |
|
|
|
|
訂單號 |
用戶id |
車票id |
訂票時間 |
|
|
|
|
五、源程式碼的目錄文件結構
|---src |---main |---model 資料庫中的數據模型 |---service 業務邏輯 |---util 主要用於處理對車票的操作 |---view 視圖 |---resources 配置文件 |---test 測試文件 |---java |---resources
六、項目概念原型的核心工作機制
用戶可以不登陸進入系統,也可以註冊後登錄系統,不登錄就不顯示個人資訊。
可以在主頁面根據首末地點查詢車票,或者點擊車次匯總資訊查看車站對用車次。
用戶可以在查詢車票後購買車票,然後可以在個人的訂單資訊中查看或者退票改簽。
用戶可以添加乘客,可以幫同行的人買車票。