| 這個作業屬於哪個課程 | 班級鏈接 |
|---|---|
| 這個作業要求在哪里 | 團隊作業第四次—項目系統設計與數據庫設計 |
| 團隊名稱 | 鐵華組 |
| 這個作業的目標 | <完成項目系統設計及數據庫設計> |
| 作業正文 | 就是這里 |
| 其他參考文獻 | ... |
一、團隊項目的預期開發計划時間安排
| 時間 | 具體安排 |
|---|---|
| 第8周(4.4-4.10) | 系統設計與數據庫設計 |
| 第9周(4.11-4.17) | 編寫數據庫與實體類,初步分析所需要的接口類並且攥寫相應代碼 |
| 第10周(4.18-4.24) | 完善類操作,按照原型設計界面逐步完成前端界面 |
| 第11周(4.25-5.1) | 完成項目1.0版本,用戶商家買賣評論等相關功能的基本實現 |
| 第12周(5.2-5.8) | 管理員相關的審核等功能的實現 |
| 第13周(5.9-5.15) | 增加模糊搜索等功能,問卷調查意見反饋 |
| 第14周(5.16-5.22) | 實現首頁等區域推廣 |
| 第15周(5.23-5.29) | 前端美化 |
| 第16周(5.30-6.5) | 測試,糾錯 |
二、團隊項目的預期開發計划分工安排
| 學號 | 具體安排 |
|---|---|
| 081700308 | 用戶端首頁、搜索頁、菜品評論頁、商家評價頁、登錄頁(用戶、商家、管理員) |
| 221701140 | 用戶端商家頁(商家端預覽頁)、菜品詳細信息頁、店鋪介紹頁面、菜品信息編輯/新增頁面 |
| 221701130 | 訂單詳情以及購物車相關頁面、用戶個人主頁、商家個人主頁、管理員管理頁(評論、用戶、商家) |
| 221701111 | 商家信息接口、菜品信息接口;搜索頁、首頁內功能模塊的邏輯代碼編寫、過濾器 |
| 041701602 | 用戶信息、管理員信息、評論信息接口;評論頁、登錄頁、管理頁功能模塊的邏輯代碼編寫 |
| 021700915 | 代金券、訂單、購物車接口、數據庫建立;購物車、訂單頁功能模塊的邏輯代碼編寫 |
三、各種設計相關圖
結構層次圖

基於原型很快就完成了功能模塊層次圖
類圖

思路:
我們根據日常的點餐app點餐的流程提取出其中的類。並且根據了老師和助教們的建議新增和修改了部分類和關聯。
首先從使用者中我們建立了用戶類、商家類、管理員類,然后根據各自的用例建立其他相關的類,比如從最核心的用戶點餐用例,建立了訂單、訂單項目、購物車三個類。
從商家使用者的角度建立了菜品,菜品預覽圖、菜單類。根據不同的權限我們也從管理員父類派生出了四個管理員子類。
根據評論功能建立了評論類,根據優惠券功能建立了優惠券類。
然后我們根據實際使用情況和上次答辯的建議改進了各個類之間的關聯。
修改如下:
新增了購物車類、菜品類、菜品預覽圖類,調整了訂單類、訂單項目的屬性以及訂單類、訂單項目類和用戶類的關聯。
現在商家對應若干菜品,一個商家的所有菜品組成該商家的菜單。
購物車類對應若干不同商家的訂單,也對應若干不同的菜品。
因為一個菜品可能有多於一張圖片所以新增了菜品預覽圖類存儲菜品圖片。
刪除了預約類。
ER圖

ER圖做了相應調整。
數據流圖

泳道圖

表結構設計
設計了十張表,具體如下:
用戶表(customer)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 學號 | studentid | varchar(8) | 否 | 否 | |
| 賬號名 | name | varchar(20) | 否 | 否 | |
| 密碼 | password | varchar(20) | 否 | 否 | |
| 積分 | point | Int | 否 | 否 | |
| 狀態 | State | bit | 否 | 否 | 1:可用,0禁封 |
商家表(merchant)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 賬號名 | name | varchar(20) | 否 | 否 | |
| 密碼 | password | varchar(20) | 否 | 否 | |
| 電話 | phonenumber | varchar(11) | 否 | 否 | |
| 狀態 | State | bit | 否 | 否 | 1:可用,0:禁封 |
管理員表(administrator)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 賬號名 | name | varchar(20) | 否 | 否 | |
| 密碼 | password | varchar(20) | 否 | 否 | |
| 評論管理 | commentmanage | bit | 否 | 否 | 1:可用,0:無權 |
| 用戶管理 | usermanage | bit | 否 | 否 | 1:可用,0:無權 |
| 商家管理 | merchantmanage | bit | 否 | 否 | 1:可用,0:無權 |
| 權限管理 | privilegemanage | bit | 否 | 否 | 1:可用,0:無權 |
食物表(food)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 食物名 | name | varchar(20) | 否 | 否 | |
| 商家編號 | merchantid | int | 否 | 否 | 關聯merchant表主鍵 |
| 簡單描述 | description | varchar(255) | 否 | 是 | |
| 價格 | price | double | 否 | 否 | |
| 剩余數量 | quantity | Int | 否 | 否 |
食物圖片表(foodimage)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 食物編號 | foodid | int | 否 | 否 | 關聯food表主鍵 |
| 圖片地址 | url | varchar(255) | 否 | 否 |
評論表(comment)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 用戶編號 | customerid | int | 否 | 否 | 關聯customer表主鍵 |
| 商家編號 | merchantid | int | 否 | 否 | 關聯merchant表主鍵 |
| 食物編號 | foodid int | 否 | 否 | 關聯food表主鍵 | |
| 評價內容 | content | varchat(255) | 否 | 否 | |
| 發送時間 | sendtime | varchat(12) | 否 | 是 | |
| 總體評價 | overallscore | bit | 否 | 否 | |
| 態度評價 | attitudescore | bit | 否 | 否 | |
| 美味評價 | tastescore | bit | 否 | 否 | |
| 價格評價 | pricescore | bit | 否 | 否 | |
| 等待時間 | waitingtime | int | 否 | 否 | |
| 可見狀態 | State | bit | 否 | 否 | 1:可見,0:不可見 |
代金券表(coupon)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 商家編號 | merchantid | int | 否 | 否 | 關聯merchant表主鍵 |
| 用戶編號 | customerid | int | 否 | 否 | 關聯customer表主鍵 |
| 使用門檻 | threshold | double | 否 | 否 | |
| 價值 | voucher | double | 否 | 否 | |
| 使用期限 | servicelife | varchar(12) | 否 | 否 |
訂單表(order)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id int | 是 | 否 | 自增ID | |
| 用戶編號 | customerid | int | 否 | 否 | 關聯customer表主鍵 |
| 商家編號 | merchantid | int | 否 | 否 | 關聯merchant表主鍵 |
| 下單時間 | ordertime | varchar(12) | 否 | 否 | |
| 預約時間 | appointment | varchar(12) | 否 | 是 | |
| 取消訂單 | cancel | bit | 否 | 否 | 1:未取消,0:取消 |
| 關閉時間 | closetime | varchar(12) | 否 | 否 |
訂單項表(orderitem)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 訂單編號 | orderid | int | 否 | 否 | 關聯order表主鍵 |
| 食物編號 | foodid | int | 否 | 否 | 關聯food表主鍵 |
| 數量 | number | int | 否 | 否 |
購物車表(shoppingcart)
| 項目 | 字段名 | 類型寬度 | 主鍵 | 允許空值 | 備注 |
|---|---|---|---|---|---|
| 編號 | id | int | 是 | 否 | 自增ID |
| 用戶編號 | customerid | int | 否 | 否 | 關聯customer表主鍵 |
| 商家編號 | merchantid | int | 否 | 否 | 關聯merchant表主鍵 |
| 食物編號 | foodid | int | 否 | 否 | 關聯food表主鍵 |
| 數量 | number | int | 否 | 否 |
除了菜單類其他有獨自的屬性的類都建立了對應的表。菜單由查詢食物表中商家編號對應的記錄得到所以不建立表。
系統安全和權限設計
1.網絡安全設計
1.1網絡設備與訪問控制
在網絡邊界部署訪問控制設備,采用分級管理,可能會啟用訪問控制功能對登錄網絡設備的用戶進行身份鑒別,對網絡設備的管理員登錄地址進行限制。對口令設置必須在8位以上且為字母和數字組合,限制非法登錄次數為3次,必要時采取加密措施防止鑒別信息在網絡傳輸過程中被竊聽。
1.2安全審計
對網絡系統采用網絡安全審計系統,對網絡設備運行狀況、網絡流量、用戶行為等進行日志記錄。記錄包括:事件的日期和時間、用戶、事件類型、事件是否成功等審計相關的信息。可以根據記錄數據進行分析,並生成審計報表,系統對審計記錄進行保護,避免受到未預期的刪除、修改或覆蓋等
情況。
1.3結構安全
保證網絡設備的性能具有一定的冗余以應對突發情況,采用高速寬帶並設計合理的網絡拓撲結構。
1.4入侵防范
如果有可能將使用一些入侵檢測及防火牆的產品來保證網絡安全。
1.5漏洞掃描
如果技術上允許將采用漏洞掃描系統對系統漏洞進行掃描
2.主機安全設計
2.1身份鑒別
對登錄后台的管理員和前台登錄用戶、商家進行身份識別和鑒別。未經過鑒別的用戶不能對數據庫進行對部分數據查,不能對所有數據增刪改。多次輸錯用戶名或者密碼、登錄異常的用戶身份鑒別也將失敗。系統會采取必要的措施防止用戶賬戶信息泄露,如對用戶密碼加密等。
2.2訪問控制
根據管理用戶的角色分配權限,實現管理用戶的權限分離,僅授予管理用戶所需的最小權限,如用戶和商家無法刪除評價。及時刪除多余的、過期的帳戶,避免共享帳戶的存在,安全策略設置登錄終端的操作超時鎖定;設定終端接入方式、網絡地址范圍等條件限制終端登錄。
2.3安全審計
審計用戶行為、系統資源的異常使用和重要系統命令的使用等系統內重要的安全相關事件。
2.4入侵防范和反病毒
采用防毒軟件進行病毒防范
3.應用安全設計
3.1應用安全措施
強制要求用戶密碼滿足相應的用戶密碼復雜度策略密碼,登陸時強制用戶修改密碼,並不能和上次密碼一樣密碼連續三次輸入錯誤就凍結帳戶十分鍾。
3.2通信完整性和保密性
采用加密技術和校驗技術保障通信完整性和保密性
4.數據安全設計
4.1數據完整性和保密性
釆用數據傳輸加密技術,對傳輸中的數據流加密,以防止通信線路上的竊聽、泄漏、篡改和破壞。數據傳輸的完整性通過數字簽名的方式來實現,數據的發送方在發送數據的同時利用單向的不可逆加密算法Hash函數或者其它信息文摘算法計算出所傳輸數據的消息文摘,並把該消息文摘作為數字簽名隨數據一同發送。接收方在收到數據的同時也收到該數據的數字簽名,接收方使用相同的算法計算出接收到的數據的數字簽名,並把該數字簽名和接收到的數字簽名進行比較,若二者相同,則說明數據在傳輸過程中未被修改,數據完整性得到了保證。
4.2數據庫安全
數據庫系統是整個系統的核心,是所有業務管理數據以及清算數據等數據存放的中心。數據庫的安全直接關系到整個系統的安全。控制對數據庫中每個對象的讀寫權限利用數據庫的審計功能,以對用戶的某些操作進行記錄。使用視圖以及存儲過程,保護基礎數據表。對於不同的應用系統應建立不同的數據庫用戶,分配不同的權限。
4.3備份恢復
會定期備份數據庫中的數據到其他地方,防止數據丟失、損壞等意外
四、上次作業中老師助教和其他隊伍在評審中給項目提出的問題
問:類圖中有錯誤的類操作
答:我們將預約訂單、取消訂單放到了訂單類中,新增了評論類來存放發表評價、修改評價、刪除操作,新增了優惠券類來存放兌換優惠券、使用優惠券操作。
問:一個訂單只能訂購一種菜品嗎?如果一個學生在一個攤位買兩種菜品,目前的類圖能支持嗎?
答:經老師提醒,我們添加了一個訂單項類關聯訂單類來解決這個問題。
問:預約就餐功能有哪些類支持?不需要增加預約類嗎?
答:小組討論后目前還是認為可以將預約操作放到訂單類中,不額外增加預約預約類。可能這個討論結果有一些錯誤的地方還希望老師能指點迷津
五、作業的工作流程、組員分工、組員貢獻度比
首先是改進上次作業的類圖,再由類圖衍生制作其他圖,完成數據庫部分的相關設計,這些工作基本完成后開始系統設計的相關工作,最后花一些時間整合一下兩個部分的工作
| 學號 | 工作內容 | 貢獻度 |
|---|---|---|
| 221701111 | 改進類圖、制作ER圖、制作泳道圖、制作數據流圖 | 16.5 |
| 041701602 | 小組匯報與答辯、制作《數據庫使用說明書》、校對類圖、部分博客編輯 | 17.5 |
| 081700308 | 制作數據庫設計部分答辯PPT 、部分博客編輯、校對類圖 | 16.5 |
| 021700915 | 制作系統設計部分答辯PPT、系統安全和權限設計、校對功能模塊層次圖 | 16 |
| 221701130 | 編輯博客及完成《系統設計說明書》、校對功能模塊層次圖 | 17 |
| 221701140 | 制作功能模塊層次圖 、部分博客內容編輯、《系統設計說明書》部分編輯 | 16.5 |
六、附件列表
| 附件 | 下載地址 |
|---|---|
| github團隊倉庫鏈接 | github團隊倉庫 |
| 系統設計說明書 | 鐵華組_系統設計說明書.pdf |
| 數據庫設計說明書 | 鐵華組_數據庫設計說明書.pdf |
| 系統設計和數據庫設計答辯PPT | 鐵華組_系統設計和數據庫設計答辯PPT.pdf |
