火車票售票系統設計方案


一、軟件結構特點

1.1設計模式

在工程實踐中,我們選用MVC架構座位本次設計的架構。MVC中M、V和C所代表的含義如下:

  • Model(模型)代表一個存取數據的對象及其數據模型。在MVC架構下,模型用來封裝核心數據和功能,它獨立於特定的輸出表示和輸入行為,是執行某些任務的代碼,至於這些任務以什么形式顯示給用戶,並不是模型所關注的問題。模型只有純粹的功能性接口,也就是一系列的公開方法,這些方法有的是取值方法,讓系統其它部分可以得到模型的內部狀態,有的則是寫入更新數據的方法,允許系統的其它部分修改模型的內部狀態。
  • View(視圖)代表模型包含的數據的表達方式,一般表達為可視化的界面接口。在MVC架構下,視圖用來向用戶顯示信息,它獲得來自模型的數據,決定模型以什么樣的方式展示給用戶。同一個模型可以對應於多個視圖,這樣對於視圖而言,模型就是可重用的代碼。一般來說,模型內部必須保留所有對應視圖的相關信息,以便在模型的狀態發生改變時,可以通知所有的視圖進行更新。
  • Controller(控制器)作用於模型和視圖上,控制數據流向模型對象,並在數據變化時更新視圖。控制器可以使視圖與模型分離開解耦合。在MVC架構下,控制器是和視圖聯合使用的,它捕捉鼠標移動、鼠標點擊和鍵盤輸入等事件,將其轉化成服務請求,然后再傳給模型或者視圖。軟件的用戶是通過控制器來與系統交互的,他通過控制器來操縱模型,從而向模型傳遞數據,改變模型的狀態,並最后導致視圖的更新。

在售票系統中,Model層中存儲着用戶的個人信息,訂票信息,列車調度信息和出售信息等等;View層中是售票系統的前端部分;Controller層中控制着車票的售票管理等信息。在這種架構下,前后端可以很好地分離出來,通過控制器鏈接模型和視圖,讓模型層能專注於處理數據的存儲,視圖層能專注於處理前端方面的業務,讓控制器專注於處理數據,並通過制定的方式傳輸到視圖。

 

 1.2軟件架構風格與策略

在工程實踐中,我們選用B/S風格,即瀏覽器/服務器模式。

 

B/S的優點如下:

1)客戶端無需安裝,有Web瀏覽器即可。
2)BS架構可以直接放在廣域網上,通過一定的權限控制實現多客戶訪問的目的,交互性較強。
3)BS架構無需升級多個客戶端,升級服務器即可。

 

二、接口設計

1、注冊接口:

{
    "username":"",
    "password":""
}
返回:
{
    "code":"", // 消息代碼
    "msg": "", // 消息 說明是否注冊成功
    "data":{} // 這里是無
}

2、登錄接口:

{
    "username":"",
    "password":""
}

返回:

{
    "code":"", // 消息代碼
    "msg": "", // 消息
    "data":{
        "token":""
    }
}

3、查詢余票請求:

{
    "startCity":"", // 城市名或站名
    "endCity":"",
    "date":"",
    "type":"" // 0 全類, 1高鐵動車票  
}

返回:

{
    "code":"",
    "msg":"",
    "data":{
        "list": [
           {
               "train_number":"", // 列次 字符串
                "start_station":"",
                "end_station":"",
                "start_time":"", // 出發時間
                "arrival_time":"", // 達到時間
                "start_station_type":"", //起始站類型, 是否始發站還是過站, 0, 1
                "end_station_type":"", //到達站類型, 是否是過站還是終點站, 1,2
                "train_type":"", // 列車類型, 
                "business_seats_number": , // 商務座余數
                "first_seats_number": , // 一等座
                "second_seats_number": , // 二等座
                "no_seats_number": , //無座
                "hard_seats_number": , // 硬座數量
                "hard_berth_number": ,// 硬卧
                "soft_berth_number": ,// 軟卧
                "senior_soft_berth_number": , // 高軟
           }     
        ]
    }
}

4、購票請求:

{
    "username":"",//用戶名
    "token":"",//驗證信息
    "date":"",//發車日期
    "train_number":"",//車次
    "start_station":"",//上車站
    "end_station":"",//下車站
    "passengers":{//乘客數據
        "passenger_seq":"",//乘客序號
        "seat_class":"",//座位等級
        "seat_type":""//座位類型
    }
}

返回:

{
    "code":"",//返回代碼
    "msg":"",//返回的消息
    "data":{//返回的數據
        "order_outer_id":"",//訂單外部
        "train_number":"",//車次號
        "start_station":"",//上車站
        "start_time":"",//列車在上車站發出時間
        "end_station":"",//下車站
        "arrival_time":"",//列車到達下車站時間
        "duration":"",//中間用時
        "start_time":"",//發車日期
        "total_money":"",//總金額
        "tickets":{//乘客的票據信息
            "passenger_name":"",//乘車人姓名
            "passenger_id":"",//乘車人身份證號
            "carriage_number":"",//車廂號
            "seat":"",//座位號
            "money":"",//票價
        }
    }
}

  

三、軟件系統概念原型的各類視圖

1、分解視圖

 

 

2、執行視圖

 

 

3、用例視圖

用戶用例視圖:

 

管理員用例視圖:

 

4、UML圖

 

5、實現視圖

我們的項目根據模塊進行分包,最終的實現視圖如下:

四、數據庫設計

1、用戶表:

變量名稱 變量類型 備注
id varchar 賬戶名
password varchar 密碼
name varchar 姓名
nickname varchar 昵稱
credential_type varchar 證件類型
credential_number varchar 證件號
telephone varchar 手機號
member varchar 會員信息

 

2、車次表:

變量名稱 變量類型 備注
 train_id  int 車次編號
 train_number varchar 車次號
 train_identification varchar  列車編號
 begin_place varchar  起點
 end_place varchar  終點
 begin_time datetime 開車時間
 end_time datetime 到達時間

 

3、列車表:

變量名稱 變量類型 備注
train_identification varchar 列車編號
train_type varchar 列車類型
carriage_sum varchar 車廂數量
carriage_type varchar 列車狀態

 

4、車廂表:

變量名稱 變量類型 備注
carriage_id varchar 車廂編號
train_identification varchar 列車編號
carriage_number int 車廂號
carriage_type varchar 車廂類型
seat_number int 車廂座位數
seat_price double 車廂座位價格系數

 

5、座位表:

變量名稱 變量類型 備注
seat_id varchar 座位編號
carriage_id varchar 車廂編號
train_identification varchar 列車編號
seat_number varchar 座位號
seat_use varchar 座位使用情況

 

6、站點表:

變量名稱 變量類型 備注
station_id varchar 站點編號
station_name varchar 站點名稱
train_id varchar 車次編號
begin_time datetime 列車到站時間
end_time datetime 列車出發時間

 

7、訂單表:

變量名稱 變量類型 備注
order_id varchar 訂單編號
order_time varchar 訂單時間
order_person varchar 訂單聯系人
seat_id varchar 訂單座位號
order_status varchar 訂單狀態

 

 五、運行環境和技術選型

開發語言:Golang

后端框架:Gin

數據庫:Mysql

緩存技術:Redis

部署緩解:Linux+Docker

 

 六、系統概念原型核心工作機制

用戶可以通過系統注冊自己的賬戶,然后登錄自己的賬戶,完善個人信息。在系統首頁選擇出發城市、到達城市和日期,然后在篩選出的車次中選擇一個具體的車次,選擇座位,然后系統生成訂單,用戶支付訂單。用戶可以通過訂單頁面選擇改簽或退票。

管理員可以登錄系統,增加或刪除某天的車次、某種車型,還可以增加和刪除某個具體的站點及站點信息。

 

 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM