逐夢校友圈——項目系統設計與數據庫設計


這個作業屬於哪個課程 <班級的鏈接>
這個作業要求在哪里 <作業要求的鏈接>
這個作業的目標 1.項目系統設計
2.數據庫設計
3.《系統設計說明書》
4.《數據庫設計說明書》
5. 答辯ppt
其他參考文獻 1.阿里巴巴Mysql數據庫規約
2.數據庫設計說明書編寫規范(國標)
3.數據庫系統概論(第四版) 王珊,薩師煊編著 高等教育出版社
4.構建之法(第三版) 鄒欣編著 人民郵電出版社

預計開發計划

時間安排

周 數 任務目標 具體日期
第8周 全體成員:完成系統設計和數據庫設計任務(4.23止)
后續(增加知識儲備)
前端成員:跟進學習微信小程序開發知識,vue框架知識
后端成員:繼續跟進SpringBoot框架的學習
4.19~4.25
第9周 繼續學習開發框架,學習敏感詞驗證,審核策略等算法。
根據之前的分工,前后端開始進行開發
前端成員:1. 成員間做好任務分配
2. 完成部分微信小程序界面的開發,並做好簡單交互功能
3. Web端后台界面同步開發
后端成員:1. 成員間做好任務分配
2. 對之前設置的接口,數據庫進行編寫
3. 與前端多加交流,調整任務
4.26~5.2
第10周 1. 繼續完善上一周的任務
2. 對其他前面未完成的功能進行編寫
3. 進行前后端整合及測試,修復遇到的bug
4.發布alpha版本
5.3~5.9
第11周 1. 完善功能 ,修復存在的bug
2. 反思alpha版本開發存在的問題
3. 討論程序設計的問題或者缺陷,對程序進行必要的重新設計
5.10~5.16
第12周 1. 對上一次程序版本進行反思,尋求解決方案
2. 繼續加強對開發相關知識的學習
5.17~5.23
第13周 繼續加強對開發相關知識的學習 5.24~5.30
第14周 根據之前的反思結果方案進行再開發 5.31~6.6
第15周 編寫和完善代碼,對程序進行測試 6.7~6.13
第16周 1. 編寫和完善代碼,對程序進行測試
2. 發布beta版本
3. 事后總結
6.14-6.20

人員分工

學號 職位 工作內容
221801125 PM 項目進度安排,項目進度監督,項目文檔更進
221801104 美工 界面UI,界面美化
221801209 后端 權限設置,數據庫操作
221801215 后端 帖文頁面接口
221801222 前端 前后端對接
221801230 前端 貼文卡片,組局卡片,消息卡片
221801231 前端 界面框架,界面拼接
221801321 后端 組局頁面接口
221801411 后端 個人中心接口,微信認證

系統結構設計

結構設計

整個軟件共分為7個模塊,分別是

  1. 認證模塊

  2. 校友圈模塊

  3. 消息模塊

  4. 發帖模塊

  5. 拼局模塊

  6. 個人模塊

  7. 后台模塊

一、認證模塊

1.1學生基礎信息認證模塊

-提供學生基礎信息驗證

1.2學生個人證件認證模塊

-提供學生個人證件圖片上傳

二、校友圈模塊

2.1簽到模塊

-提供用戶進行每日簽到

2.2帖子搜索模塊

-提供用戶進行全局模糊搜索論文

2.3帖子詳情模塊

2.3.1評論帖子

-用戶對帖子進行評論相關操作

2.3.2點贊帖子

-用戶對帖子進行點贊相關操作

2.3.3贊賞帖子

-用戶對帖子進行贊賞相關操作

2.3.4收藏帖子

-用戶對帖子進行收藏相關操作

2.3.5拉黑帖子發布者

-用戶對帖子發布者進行拉黑,不看他的相關帖子並且不與他私聊

2.3.6舉報帖子

-用戶對含有不正當內容的帖子進行舉報

三、消息模塊

3.1查看我的相關評論

-提供用戶查看與其帖子相關的評論

3.2查看我的相關點贊

3.2.1查看我的相關贊賞

-提供用戶查看與其帖子相關的贊賞

3.2.2查看我的相關點賞

-提供用戶查看與其帖子相關的點賞

3.3查看我的相關拼局

-提供用戶查看與其拼局相關的信息

3.4查看我的相關私聊

-提供用戶與其他用戶進行私聊

四、發帖模塊

4.1帖子發布

4.1.1根據主題發布帖子

-提供用戶根據主題帖子發布

4.1.2根據地址發布帖子

-提供用戶根據地址帖子發布

五、拼局模塊

5.1組局詳情

5.1.1加入組局

-用戶加入已創建好的組局

5.1.2評論組局

-用戶評論已創建好的組局

5.2篩選組局信息

-用戶根據條件顯示想看到的組局內容

5.3發起組局

-用戶創建新的拼局

5.4搜索組局

-用戶搜索關鍵詞相關組局

六、個人模塊

6.1個人數據模塊

6.1.1人品值記錄模塊

-顯示用戶的人品值數與人品值進出記錄

6.1.2個人收藏模塊

-顯示用戶的個人收藏記錄

6.1.3個人帖子模塊

-顯示用戶的個人帖子記錄

6.1.3個人評論模塊

-顯示用戶的個人評論記錄

6.2附加功能模塊

6.2.1新手幫助

-為用戶提供使用該軟件的新手幫助說明

6.2.2社區規范

-為用戶提供使用該軟件的社區規范說明

6.2.3逐夢樹洞

-為用戶提供私人的信息交流空間

6.2.4邀請校友

-為用戶提供邀請校友進行分享

6.3系統模塊

6.3.1設置模塊

-對軟件進行基礎設置

6.3.2關於我們

-了解軟件開發者相關信息和聯系方式

6.3.3意見反饋模塊

-對用戶使用軟件體驗進行反饋

七、后台模塊

7.1.1審核模塊

-對用戶的帖子評論圖片等信息進行內容審核

7.1.2維護模塊

-對軟件的一些基礎功能進行調整

功能模塊層次圖

功能模塊層次圖

ER圖

從用戶角度出發,尋找用戶擁有的屬性,尋找用戶與其他類(帖文、組局等)的關聯,確定之間的關系:1對多、1對1等,再補充其他類的擁有的屬性。

用戶和管理員部分

用戶和管理員部分

帖文(post)部分

帖文

組局部分

組局

數據庫表結構

數據庫使用關系型數據庫。數據庫表結構設計在ER圖的基礎上,結合實體屬性的存儲方式,為各實體屬性賦予相應的數據類型。

此外,為表示ER圖中實體之間的一對多關系,數據庫表中使用新增外鍵屬性的方法對一對多的關系進行約束,例如帖子post與帖子的評論post_comment是一對多的關系,在post_comment中新增post_id屬性與對應帖子post的id屬性關聯,建立外鍵約束,表示帖子評論所屬的帖子,對帖子與帖子評論的一對多關系進行了刻畫和約束。ER圖中還出現了實體與自身的一對多約束,同樣,在數據庫設計時在表中建立了外鍵與自身關聯,例如,一條帖子評論下可能包含有多條評論(樓中樓),設計時新增pre_id外鍵關聯自身表的id屬性,建立外鍵,表示帖子評論所屬的上一級評論,對帖子評論與自身的一對多的關系進行了刻畫和約束。

ER圖中出現的多對多關系,考慮到要滿足范式減少數據冗余,關系型數據庫較難表示,與要對多對多關系進行轉換(實際在ER圖中已經轉換),新建一個額外的表,存儲多對多關聯,將多對多關聯分解為兩個一對多關聯,例如用戶和組局之間的多對多關系,新增組局人員表對多對多進行轉換,變為兩個一對多的關系。

以上兩種處理思路解決了系統的一對多和多對多約束。

為了符合一些行業規范,在各個表中新增加了gmt_create,gmt_modified對記錄創建時間和最近一次修改時間進行了存儲。還增加了deleted屬性用於實現邏輯刪除功能,方便后台管理查看記錄。

  • 用戶表
名稱 解釋
admittedYear 畢業年份
birthday 出生年月
certificateImageUrl 用戶證件照
city 城市
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 修改時間
id 用戶ID(使用微信提供的openID)
isGraduated 是否畢業
province 省份
rpValue 人品值
school 用戶學校
sex 性別(0為女,1為男,2為無)
status 用戶狀態(0為未審核,1為已審核)
userIconUrl 用戶頭像
username 用戶名

用戶表

  • 管理員表

管理員表

  • 黑名單表
名稱 解釋
beUserId 被拉黑用戶ID
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 修改時間
id 黑名單ID
userId 用戶ID

黑名單表

  • 組局表
名稱 解釋
deleted 邏輯刪除
description 組局描述
gmtCreate 創建時間
gmtModified 修改時間
id 組局ID
imageUrls 圖片url鏈接
partyTypeId 組局類型ID
peopleCnt 組局人數限定
publisherId 發布者ID

組局表

  • 組局評論表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id 組局評論ID
idFrom 評論者ID
information 內容
partyId 對應組局ID
preId 父評論ID
status 評論狀態0(正常狀態),1(舉報過多被掛起),2(已被刪除)

組局評論表

  • 組局成員表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id 組局參與表ID
participantId 參與者ID
partyId 對應組局ID

組局成員表

  • 組局類型表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id 組局類型ID
name 組局類型名

組局類型表

  • 帖文表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id 帖文ID
imageUrls 帖子圖片URL
message 帖子文本內容
postTypeId 帖子類型ID,外鍵
publisherId 發布者ID,外鍵
status 帖子狀態:0(正常狀態),1(舉報過多被掛起),2(已被刪除)

帖文表

  • 帖文評論表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id ID
idFrom 發布評論用戶ID,外鍵
message 內容
postId 所屬帖子ID,外鍵
preId 所屬評論ID,外鍵
status 評論狀態:0(正常狀態),1(舉報過多被掛起),2(已被刪除)

帖文評論表

  • 帖文審核表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id ID
idFrom 發布評論用戶ID,外鍵
postId 所屬帖子ID,外鍵

帖文審核表

  • 帖文收藏表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id ID
idFrom 關注用戶ID,外鍵
postId 帖子ID,外鍵

帖文收藏表

  • 帖文贊賞表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id ID
idFrom 發布評論用戶ID,外鍵
postId 贊賞用戶ID,外鍵
amount 贊賞數量

帖文贊賞表

  • 帖文類型表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id ID
name 帖子類型名
pre_id 帖子類型父類ID,外鍵

帖文類型表

  • 私聊表
名稱 解釋
deleted 邏輯刪除
fromId 發送用戶ID
gmtCreate 創建時間
gmtModified 修改時間
id 私聊ID
message 私聊信息
toId 接收用戶ID

私聊表

  • 舉報表
名稱 解釋
deleted 邏輯刪除
gmtCreate 創建時間
gmtModified 最近一次修改時間
id ID
userId 舉報用戶ID,外鍵
postId 被舉報帖子ID,外鍵

舉報表

  • 樹洞表
名稱 解釋
deleted 邏輯刪除
fromId 用戶ID
gmtCreate 創建時間
gmtModified 修改時間
id 樹洞ID
message 樹洞內容

樹洞表

類圖

UML 類圖用於描述系統中所包含的類以及它們之間的相互關系,幫助人們簡化對系統的理解,它是系統分析和設計階段的重要產物,也是系統編碼和測試的重要模型依據。一個好的類圖設計能夠給編碼開發一個好的開始。我們按照系統的功能模塊划分,將類圖設計部分分為4個部分單獨設計(用戶部分、管理員部分、貼文部分和組局部分),之后進行整合。當然,能夠這樣進行划分設計的前提是各個模塊之間的關聯並非很多,往往只是一個模塊和另一個模塊中的某個類有關聯。所以,模塊化的好處在於能夠更清晰地發現類和擬定類的方法,並且不至於使類圖過於龐大而影響最終的閱讀。

我們在類圖設計中結合了開發階段所利用的語言、框架、操作系統等等因素。在這些開發環境的基礎上組織我們的類。依據SpringBoot框架,我們將類分為Model,Dao,Service和Controller四大部分。其中,Model是系統中的實體類,負責規范數據結構,方便數據的傳輸和使用;Dao部分則為與數據庫交互的接口,一個Model往往對應一個Dao;Service類則是系統的處理核心,負責起系統的大部分計算;Controller類則為前端提供接口。我們遵循設計為開發原則,杜絕無用功。

此外,我們在類圖中加入了包,是類圖組織有序,更易於觀看

用戶類圖

用戶類圖

發帖類圖

發帖類圖

組局類圖

組局類圖

管理員類圖

管理員類圖

系統安全

不同需求對安全產生不同的定義,安全對我們來說就是數據安全,即數據不被竊取,數據不被篡改,數據不被偽造。安全設計的核心是信任域的划分,而基於安全域的原子權限則是數據的堅實保護。原子權限正是這次安全設計的核心思路。

系統(平台)層面的安全

軟件運行所需的基礎環境既是此處的系統,包括以下內容:操作系統,WEB服務器中間件,軟件運行所需的程序語言環境。

在這個層面主要從這幾個方面進行防護:

  • 最小服務,通過減少與外界的接觸面來降低入侵發生的可能性,只開放必要的服務端口
  • 安全版本,使用各種應用的最新stable版本來防止入侵
  • 合理的iptables設置,通過設置嚴格的出網規則來提高入侵的成本和難度
  • 合理的配置,對於各種應用的配置不應當直接復制網上的demo,而應該了解每一個配置會產生的行為后進行設計
  • Firewall的配置,禁止所有非TCP通信
  • 安裝安全軟件識別已有特征的惡意軟件和行為
  • 根據入侵常用手段配置蜜罐,使得我們有可能在被入侵的時候得知
  • 數據與程序環境的分離,保證在得到程序環境的時候無法直接得到數據,對各種密鑰進行加密
  • 合理的文件系統權限配置,保證得到網站權限無法修改網站代碼

框架層面的安全

框架層面的安全即我們為了快速開發使用的框架

在這個層面從以下方面做好防范:

  • 不要從網上copy配置項,應當了解每一個配置會產生的行為,再進行框架的設置
  • 對於自己所使用的框架接口應當清楚會產生怎樣的行為,而不是關注會產生怎樣的結果
  • 在使用框架開發時應對開發環境和生產環境進行區分,在生產環境去除一切其他不必要的功能,比如報錯

代碼層面的安全

在開發時我們應當遵守以下簡單的規則進行安全防護:

  • 簡單了解owasptop10 后進行開發
  • 使用框架提供的或團隊提供的安全操作函數
  • 在代碼開發時應遵守OWASP安全編碼指南
  • 對所有web接口進行
  • 在代碼上線前使用白盒安全掃描工具進行測試,比如codeql
  • 一切用戶資源文件都上傳至OSS中

傳輸層面的安全

在數據傳輸我們使用以下方法進行防御:

  • 部署CDN防止發現真實IP
  • 負載均衡增加入侵難度
  • 部署雲WAF防御惡意攻擊
  • 配置訪問頻率防止DDOS和拆解攻擊
  • 使用HTTPS加密傳輸數據
  • 前端對敏感數據比如密碼使用ECDH密鑰交換+AES加密

客戶端層面的安全

在客戶端層面我們要做好以下防護:

  • Csrf token 防止跨站請求偽造
  • 驗證碼防止暴力拆解,資源濫用
  • CSP防止惡意js腳本
  • Httponly防止cookie竊取

安全設計結構圖

處於成本考慮,以docker 為單元進行服務隔離

以docker 為單元進行服務隔離

權限設計

權限管理是所有后台系統的都會涉及的一個重要組成部分,主要目的是對不同的人訪問資源進行權限的控制,避免因權限控制缺失或操作不當引發的風險問題,如操作錯誤,隱私數據泄露等問題。

迄今為止最為普及的權限設計模型是RBAC 模型,基於角色的訪問控制。由於我們的記賬系統是為已注冊登錄的用戶提供服務

頁面權限

  • 普通用戶 : 校友圈頁面,個人頁面,拼局頁面
  • 認證用戶:校友圈頁面,個人頁面,拼局頁面
  • 管理員用戶:認證驗證頁面,組局驗證頁面,貼文驗證頁面

功能權限

  • 普通用戶:修改個人資料,查看校友圈內容,參與個人認證,參與簽到
  • 認證用戶:修改個人資料,查看校友圈內容,參與個人認證,查看消息,發送帖子,發起組局,匿名帖文,參與簽到
  • 管理員用戶:通過驗證,不通過驗證

遺留問題

審核機制

手動寫自動篩選功能,管理員在后期可以對這些帖文組局進行再篩查,從而做到自動化。同時發布相關公約約定,一旦發現違規行為將進行封號處理

認證機制

考慮到認證機制的要素過多但是同時不保證人員虛假,我們選擇使用拍攝學生證上傳,同時增強對數據方面的保護,保證人員的簡單性

匿名功能

匿名功能沒有作為我們的主打功能,但是是存在在我們的系統功能當中的,匿名發布消息需要消耗一定的人品值

本次作業貢獻

學號 工作內容 貢獻度
221801104 項目功能思維導圖及分析 10.2
221801125 文檔歸納,ppt,博客園文檔 11.6
221801209 系統安全性分析,系統權限分析 10.4
221801215 類圖,接口文檔,數據庫表,ER圖 11.9
221801222 類圖,接口文檔,數據庫表,ER圖 12.1
221801230 數據流圖,項目規划 10.4
221801231 功能模塊層次圖,接口文檔 11.3
221801321 類圖包圖,接口文檔,數據庫表,ER圖 11.8
221801411 泳道圖 10.3

鏈接

在線鏈接

github倉庫

逐夢校友圈_系統設計說明書.pdf

逐夢校友圈_數據庫設計說明書.pdf

逐夢校友圈_系統設計和數據庫設計答辯PPT


免責聲明!

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



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