軟件系統設計方案
一.項目概述運行環境和技術選型說明
本項目主要是模仿12306平台,進行訂票系統的開發,客戶端分為安卓端和iOS端,后端用的是go語言,其中最核心的功能是,車票查詢,數據庫檢索,車票預定,退票,用戶服務,等功能。而登錄的用戶分為兩類,普通用戶和管理員,普通用戶是普通的訂票用戶,而管理員則承擔服務用戶的功能,以及對車票進行管理。
其中iOS端開發用的是xcode環境,語言為objective-c 用到foundation框架以及uikit框架.
二、系統架構
MVC的全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,是一種軟件設計典范。它是用一種業務邏輯、數據與界面顯示分離的方法來組織代碼,將眾多的業務邏輯聚集到一個部件里面,在需要改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯,達到減少編碼的時間。
MVC開始是存在於桌面程序中的,M是指業務模型,V是指用戶界面,C則是控制器。
使用的MVC的目的:在於將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如Windows系統資源管理器文件夾內容的顯示方式,下面兩張圖中左邊為詳細信息顯示方式,右邊為中等圖標顯示方式,文件的內容並沒有改變,改變的是顯示的方式。不管用戶使用何種類型的顯示方式,文件的內容並沒有改變,達到M和V分離的目的。
在網頁當中,V即View視圖是指用戶看到並與之交互的界面。比如由html元素組成的網頁界面,或者軟件的客戶端界面。MVC的好處之一在於它能為應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,它只是作為一種輸出數據並允許用戶操縱的方式。M即model模型是指模型表示業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,模型與數據格式無關,這樣一個模型能為多個視圖提供數據,由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。C即controller控制器是指控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。
接口舉例
注冊接口:
{ "username":"", "password":"" }
返回
{ "code":"", // 消息代碼 "msg": "", // 消息 說明是否注冊成功 "data":{} // 這里是無 }
查詢車票
{ "startCity":"", // 城市名或站名 "endCity":"", "date":"", "type":"" // 0 全類, 1高鐵動車票 }
訂單
{ "username":"",//用戶名 "token":"",//驗證信息 "date":"",//發車日期 "train_number":"",//車次 "start_station":"",//上車站 "end_station":"",//下車站 "passengers":{//乘客數據 "passenger_seq":"",//乘客序號 "seat_class":"",//座位等級 "seat_type":""//座位類型 } }
三、軟件系統概念原型視圖
系統功能模塊視圖
項目部署視圖
分解視圖
軟件用戶用例圖
工作分配視圖
成員 | 分工 |
A | 后端編寫,文檔撰寫,項目管理 |
B | 后端編寫,文檔撰寫,接口對接 |
C | 測試,文檔撰寫,接口對接 |
D | 前端編寫,文檔撰寫,頁面設計 |
支付依賴視圖
邏輯視圖
訂票執行視圖
執行視圖展示了系統運行時的時序結構特點,比如流程圖、時序圖等。執行視圖中的每一個執行實體,一般稱為組件,都是不同於其他組件的執行實體。如果有相同或相似的執行實體那么就把他們合並成一個。
執行實體可以最終分解到軟件的基本元素和軟件的基本結構,因而與軟件代碼具有比較直接的映射關系。在設計與實現過程中,我們一般將執行視圖轉換為偽代碼之后,再進一步轉換為實現代碼。
因此,執行視圖其實表現的是系統中間比較動態的那一部分。鑒於此,我們可以通過UML的流程圖來表示執行視圖:
四 項目實現視圖
用戶頁視圖
車站視圖
主頁視圖
時間視圖
項目架構
五 數據庫設計
person表
屬性名 | 類型 | 可否取空 | 注釋 |
ID | string | 否 | 賬號 |
name | string | 否 | 名字 |
是否學生 | bool | 否 | |
password | string | 否 | 密碼 |
phone | string | 否 | 聯系方式 |
學生表
屬性名 | 類型 | 可否為空 | 注釋 |
ID | string | 否 | 賬號 |
學校 | string | 否 | |
學號 | string | 否 |
ticket表
屬性名 | 類型 | 可否為空 | 注釋 |
ID | string | 否 | 賬號 |
車次 | string | 否 | 車次信息 |
時間 | string | 否 | |
價格 | string | 否 | |
座位 | string | 否 |
訂單表
屬性名 | 類型 | 可否為空 | 注釋 |
ID | string | 否 | 訂單ID |
personID | string | 否 | 用戶ID |
ticketID | string | 否 | 票的ID |
是否付款 | bool | 否 | |
售后信息 | string | 否 |
管理員表
屬性名 | 類型 | 可否為空 | 注釋 |
ID | string | 否 | |
name | string | 否 | |
權限 | string | 否 | 管理員可進行的操作 |
六 系統概念原型的核心工作機制
每個視圖都是從不同的角度對軟件架構進行描述和建模,比如從功能的角度、從代碼結構的角度、從運行時結構的角度、從目錄文件的角度,或者從項目團隊組織結構的角度。
軟件架構代表了軟件系統的整體設計結構,它應該是所有這些視圖的集合。但我們不會將不同角度的這些視圖整合起來,因為不便於閱讀和更新。不過我們會有意識地將不同角度的視圖之間的映射關系和重疊部分了然於胸,從而深刻理解軟件架構內在的一致性和完整性,這就是系統概念原型。
基於以上各視圖,我們就可以總結出此項目的概念原型,以下總結本系統的工作流程:
用戶通過點擊界面的訂票按鈕進入訂票頁面,查看出發地到目的地的車次和車票,可以進行時間段的排序和篩選,也可以重新輸入地點進行中轉,用戶定好訂單后可以再訂單頁面對訂單進行查看還可以進行退票操作,訂票退票查票都是數據庫數據經過后端傳遞到客戶端頁面進行展示,用戶動作也是通過客戶端經過后端處理,將數據更新到數據庫。