1. 前言
本文在中科大軟件學院孟寧老師的指導下完成,是一個基於對工程實踐選題中的12306火車售票系統分析,從而進行數據庫建模、接口設計等分析過程,最終形成概念原型的過程。
2. 項目介紹
該項目來自於學校與企業合作選題,意在模擬實現一個12306售票系統,盡可能覆蓋真實線上系統,要求實現但不限於以下功能:
- 用戶信息注冊
- 查詢余票
- 售票
- 退票
- 改簽
並在此基礎上,對一些讀寫接口的延遲以及並發請求做出了要求。
3. 需求分析概述
1. 用戶系統需求分析
-
- 用戶注冊
- 用戶登錄
- 用戶信息維護
- 查詢余票信息
- 查詢訂單信息
2. 車次查詢系統需求分析
-
- 根據用戶提供的起始站與終點站、時間數據返回相關的車次信息
- 根據用戶提供的車次、時間數據返回相關的車次信息
- 根據用戶提供的車站、時間數據返回當天停留的車次信息
3. 訂單系統需求分析
-
- 售票:根據用戶提交的信息生成訂單
- 改簽:根據用戶提交的訂單信息與改簽信息對訂單進行修改
- 退票:根據用戶提供的請求取消訂單
- 候補:根據用戶提交的信息生成候補訂單
4. 用例建模設計
用例是一個業務過程(business process),經過邏輯抽象得到的業務過程。而業務過程則是在軟件開發所處的領域內的一系列特定業務。
用例建模的基本步驟如下:
- 從需求表述中找出用例,一般是動名詞短語表示的抽象用例。
- 描述用例的開始和結束狀態。
- 對用例按照子系統或不同的方面進行分類,描述用例與用例、用例與參與者的上下文關系。
- 逐一分析參與者的詳細交互過程,完成用例建模。
在實現該項目時,考慮到方便分工合作降低耦合度,故而設計成三個大的模塊系統,得到以下用例:
5. 業務領域建模
業務領域建模即時開發團隊用於獲取業務領域知識的過程。在不同的項目里,開發者們一般工作的領域並不太相同,業務領域建模可以幫助開發團隊形成統一的業務認知。
業務領域建模的過程大致如下:
- 收集業務領域相關信息
- 執行團隊頭腦風暴
- 對業務領域相關的知識概念進行分類
- 用UML類圖將業務領域知識圖形化展示
在該系統中,可以得到大致如下的UML類圖:
6. 數據模型設計
數據模型是數據特征的抽象,從抽象層次上描述了系統的靜態特征、動態行為和約束條件,其為數據庫系統的信息表示與操作提宮了一個抽象框架。
數據模型由三部分組成:數據結構、數據操作、數據約束。
在本系統中,可以建立如下數據模型:
- 用戶表
字段名稱 | 字段類型 | 字段描述 |
username | varchar | 用戶名稱 |
userid | int | 用戶id(主鍵) |
password | varchar | 用戶密碼 |
name | varchar | 用戶姓名 |
sex | varchar | 用戶性別 |
varchar | 用戶郵箱 |
2. 訂單表
字段名稱 | 字段類型 | 字段描述 |
orderid | int | 訂單id(主鍵) |
userid | int | 用戶id(外鍵) |
trianid | varchar | 火車id(外鍵) |
sertid | varchar | 座位id |
status | varchar | 訂單狀態 |
ordertime | datetime | 訂單生成時間 |
3. 站點表
字段名稱 | 字段類型 | 字段描述 |
stationid | int | 站點id(主鍵) |
city | varchar | 站點城市 |
name | varchar | 站點名字 |
4. 列車表
字段名稱 | 類型 | 字段描述 |
trainid | int | 列車id(主鍵) |
traintype | varchar | 列車類型 |
started_station | varchar | 起始站(外鍵) |
arrived_station | varchar | 終點站(外鍵) |
5. 聯系人表
字段名稱 | 字段類型 | 字段描述 |
id | int | 聯系人信息id(主鍵) |
userid | int | 用戶id(外鍵) |
name | varchar | 姓名 |
id_number | varchar | 證件號碼 |
6. 車票表
字段名稱 | 字段類型 | 字段描述 |
id | int | 車票id(主鍵) |
traid_id | int | 車次id(外鍵) |
started_station | varchar | 出發站名稱(外鍵) |
arrived_station | varchar | 到達站名稱(外鍵) |
startd_time | datetime | 出發時間 |
seat_number | varchar | 座位號 |
7. 總結
本篇博客簡要地介紹了在實現12306系統過程中的概念模型分析、功能設計、概念原型設計的過程。在此過程中遇到了不少問題,通過解決這些問題對系統本身業務的理解上升了一個層次,也學習到了軟件工程的相關思想,在此感謝任課老師的指導。文中所涉及的具體實現細節仍待補充,擬在工程實踐的過程中不斷對其完善。