字節亂動-團隊作業四項目系統設計與數據庫設計


字節亂動對團隊作業四 — 項目系統設計與數據庫設計

字節亂動對團隊作業四 — 項目系統設計與數據庫設計

這個作業屬於哪個課程 2021春軟件工程實踐|s班
這個作業要求在哪里 作業要求
團隊名稱 字節亂動
這個作業的目標 完成需求分析,制定團隊項目的整體計划安排及明確的里程碑
作業正文 正文
其他參考文獻 《系統設計說明書》《數據庫設計說明書》國標規范文本

一、預期開發計划時間安排

項目主要分為 4階段:

  1. 系統與數據庫設計。
  2. 項目實現V.1.0版本。
  3. 項目實現思考與學習。
  4. 項目實現V2.0版本。

計划表格如下:

序號 計划 開始時間 結束時間 耗時 完成度
1 系統設計 2021-04-19 2021-04-23 5.0 日 100%
2 數據庫設計 2021-04-19 2021-04-23 5.0 日 100%
3 環境搭建 2021-04-23 2021-04-25 3.0 日 0%
4. 安卓端mvvm架構搭建 2021-04-23 2021-04-23 1.0 日 0%
5. springboot+thymeleaf+mybais搭建 2021-04-23 2021-04-23 1.0 日 0%
6. 前后端調試 2021-04-24 2021-04-25 2.0 日 0%
7. 項目實現V1.0-安卓: 2021-04-26 2021-05-05 10.0 日 0%
8. 用戶登錄,注冊(學生) 2021-04-26 2021-04-26 1.0 日 0%
9. 分數查看 2021-04-27 2021-04-27 1.0 日 0%
10 評分任務-組內評分 2021-04-28 2021-04-28 1.0 日 0%
11 評分任務-組間評分 2021-04-29 2021-04-30 2.0 日 0%
12 個人模塊-我的團隊 2021-05-01 2021-05-01 1.0 日 0%
13 個人模塊-退出登錄,反饋意見 2021-05-02 2021-05-02 1.0 日 0%
14 前后端對接 2021-05-03 2021-05-05 3.0 日 0%
15 項目實現V1.0-web前端: 2021-04-26 2021-05-09 14.0 日 0%
16 登錄模塊 2021-04-26 2021-04-26 1.0 日 0%
17 細則管理-新增細則 2021-04-27 2021-04-27 1.0 日 0%
18 細則管理-所有細則 2021-04-28 2021-04-28 1.0 日 0%
19 細則管理-細則詳情 2021-04-29 2021-04-29 1.0 日 0%
20 細則管理-刪改細則 2021-04-30 2021-04-30 1.0 日 0%
21 學生管理-新增學生 2021-05-01 2021-05-01 1.0 日 0%
22 學生管理-所有學生 2021-05-02 2021-05-02 1.0 日 0%
23 團隊管理-新增團隊 2021-05-03 2021-05-03 1.0 日 0%
24 團隊管理-所有團隊 2021-05-04 2021-05-04 1.0 日 0%
25 學生模塊-作業提交(鏈接版本) 2021-05-05 2021-05-05 1.0 日 0%
26 成績管理-博客評分(鏈接版本) 2021-05-06 2021-05-08 3.0 日 0%
27 成績管理-成績查詢 2021-05-09 2021-05-09 1.0 日 0%
28 項目實現V1.0-后端(): 2021-04-26 2021-05-09 14.0 日 0%
29 完成安卓部分接口 2021-04-26 2021-05-01 5.0日 0%
30 完成web前端部分接口 2021-05-02 2021-05-09 7.0日 0%
31 項目實現V1.0-前后端對接調試 2021-05-10 2021-05-11 2.0 日 0%
32 項目實現思考與學習: 2021-05-12 2021-05-24 13.0 日 0%
33 shiro權限管理與本項目對接 2021-05-12 2021-05-16 5.0 日 0%
34 其他問題 2021-05-17 2021-05-24 8.0日 0%
35 項目實現V2.0前端 2021-06-01 2021-06-15 15.0 日 0%
36 成績管理-成績查詢 2021-06-01 2021-06-02 2.0 日 0%
37 成績管理-成績改刪 2021-06-03 2021-06-05 3.0 日 0%
38 作業提交(本地markdown) 2021-06-06 2021-06-08 3.0 日 0%
39 學生模塊其他部分 2021-06-09 2021-06-11 3.0 日 0%
40 教師模塊其他部分 2021-06-12 2021-06-14 3.0 日 0%
41 助教模塊其他部分 2021-06-13 2021-06-15 3.0 日 0%
42 項目實現V2.0安卓: 2021-06-01 2021-06-15 15.0 日 0%
43 V.1.0問題解決 2021-06-01 2021-06-05 5.0 日 0%
44 權限與數據隔離 2021-06-11 2021-06-18 8.0 日 0%
45 組間評分細化 2021-06-19 2021-06-21 3.0 日 0%
45 項目實現V2.0后端(與前端一致) 2021-06-01 2021-06-12 12.0 日 0%
46 項目實現V2.0-前后端對接調試 2021-06-13 2021-06-20 8.0 日 0%

甘特圖如下:
image

二、預期開發計划分工安排

姓名 任務
王思皓 分數查看模塊,評分任務模塊(組內評分,組間評分) 安卓端
黃煒 個人模塊,登錄模塊 安卓端
李達明 助教模塊-細則管理 ,學生模塊。助教模塊-成績管理(博客評分) web端
李進明 助教模塊-成績管理,助教模塊-用戶管理。 web端
黃偉為 登錄模塊,統計模塊。 web端
鄭龍海 安卓個人模塊,評分任務模塊,分數查看模塊。 后端
牙舉韜 登錄模塊,統計模塊,助教模塊-細則管理。 后端
曹鑫 助教模塊-成績管理,助教模塊用戶管理。 后端

三、系統設計

1.體系結構設計

  • web端

    前端:采用Bootstrap進行網頁設計開發。

    后端:使用springboot整合mybatis、Thymeleaf模板引擎、easypoi表格框架、 Shiro框架
    mybatis: 實現對用戶的賬戶信息、學生的成績等持久化信息的存取。

    Thymeleaf: 采用Thymeleaf進行頁面編寫。

    Shiro: 采用Shiro框架進行用戶認證和權限管理,如學生、助教和教師的登錄, 教師和助教對學生作業操作權限的控制。

    easypoi: 基於easypoi,對Excel進行分析處理用於Excel的表格導入和導出,如學生信息的上傳。

  • 安卓端

    使用的是目前官方比較推崇的MVVM架構 Model View ViewModel 采用Jetpack庫提供的框架

2.功能模塊層次圖

img

3.設計類圖

​ 此圖展示了各個類相互之間的繼承、聚合關系:

​ l 助教、教師、學生繼承自用戶,組長又繼承自學生。

​ l 每一位助教和每一位都對應多個團隊,每一個團隊由一位組長和幾位隊員組成。

​ l 每一位學生和每一個團隊對應多次博客作業,每一次博客作業對應一份評分細則和一項成績。

​ l 每一條評分細則由多個評分項聚合而成。

img

4.ER分析 & 表結構設計

1.E-R圖

  • 總覽E-R圖

  • 團隊管理E-R圖

  • 作業管理E-R圖

  • 學生管理E-R圖

2.表設計結構

user表結構:

列名 數據類型 長度 主鍵 非空 自增 注釋
id int 11
user_name varchar 128 用戶名
account varchar 15 實際賬號(助教號:A001,教師號:T001 ,學號:221801112)
password varchar 128 密碼
perms varchar 128 權限
salt varchar 255
total_score double 11 個人累積總成績
team_id int 11 所屬團隊Id
team_change_history varchar 255 所屬團隊變更記錄(如1,2)
class_id int 11 班級id

blog_work表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
blog_work_name varchar 128 博客名稱
blog_work_content text 博客內容
user_id int 11 發布者id(團隊作業時該項為空)
team_id int 11 發布團隊id(個人作業時該項為空)
task_id int 11 該博客對應的作業id
blog_work_type varchar 128 博客類型(個人作業,團隊作業,結對作業)

class表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
class_name varchar 128 班級名稱
grade varchar 128 年級
teacher_id int 11 教師id

details表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
details_name varchar 255 評分細則項名稱
score_ratio double 11 評分項分值比例
create_user_id int 11 創建人
create_time datetime 創建時間
task_id int 11 所屬作業id

pair_score表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
user1_id int 11 結對隊友1ID
user2_id int 11 結對隊友2ID
task_id int 11 所屬作業ID
sys_score double 11 本對本次作業總得分

pair_score_details表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
pair_score_id int 11 結對成績的ID
details_id int 11 評分細則項ID
score int 11 該項得分

perms表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
id int 11
permsname varchar 64 權限名
url varchar 64 可訪問地址

role 表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
id int 11
rolename int 11 角色名

role_perms表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
id int 11
roleid int 11 角色ID
permsid int 11 權限ID

task表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11 主鍵
task_name varchar 255 作業名稱
task_content text 作業內容
create_user int 11 創建人
create_time datetime 創建時間
begine_time datetime 開始時間
deadline datetime 截止日期

team表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11 主鍵
sys_team_name varchar 255 團隊名稱
sys_team_slogan varchar 255 團隊口號

team_score表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
sys_score int 11 一次作業總成績
team_id int 11 成績所屬者ID(團隊)
task_id int 11 成績所屬作業ID
contributions varchar 128 成員貢獻度(22991:10,22992:20,22993:70)

team_score_details表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
team_score_id int 11 團隊成績的ID
details_id int 11 評分細則項ID
score int 11 該項得分

user_role表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
id int 11
userid int 11 用戶ID
roleid int 11 角色ID

user_score表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
user_id int 11 所屬用戶ID
task_id int 11 所屬作業ID
sys_score double 11 該用戶該次作業總得分

user_score_details表結構

列名 數據類型 長度 主鍵 非空 自增 注釋
sys_id int 11
user_score_id int 11 個人成績的ID
details_id int 11 評分細則項ID
score int 11 該項得分

5.系統安全和權限設計

5.1系統安全設計

1.教師和助教不提供注冊功能,教師賬號需在數據庫中手動添加,助教賬號可以由教師通過新增功能添加,也可以直接在數據庫中添加。

2.數據庫可以自動定期備份,每天0點進行一次備份,數據出現丟失或其他異常后可以通過備份恢復,當然也可以進行事務回滾,在操作發生異常后回滾數據庫操作,保證數據的安全性和完整性。

3.對用戶的密碼使用MD5或SHA加密,可以避免密碼被直接截獲破解。

4.使用正則表達式過濾傳入的參數,防止SQL注入

5.后端添加了攔截器后設定攔截規則,獲取請求主機IP地址,如果通過代理進來,則透過防火牆獲取真實IP地址,在獲取用戶真實IP地址后,如果某ip的訪問太過頻繁,則用攔截器攔截掉IP並將其加入黑名單。

6.通過RBAC進行權限管理,所有用戶不能越權操作不能訪問權限以外的數據。

7.前端進行數據校驗后,后端對前端參數進行校驗,前端驗證減少了對服務器的不必要的不合法的請求,后端校驗保證了對於一些敏感數據比如用戶登錄數據進行了雙重驗證,另外可以用許多工具來繞過前端,修改前端的方式避開js的處理驗證,所以后端的驗證可以保證安全性

5.2系統權限設計

安卓端

權限 登陸 注冊 查看分數 組間評分 個人中心 組間互評 產看成員信息
學生
老師
助教

Web端

權限 登錄 分數查詢 作業提交 助教管理 評分細則管理 答辯評分 博客評分 學生成績管理(增刪改) 學生管理 公共統計信息
學生
老師
助教
權限 團隊管理 博客作業列表管理 助教學生總覽 助教學生新增 細則表管理 細則信息搜索 細則詳情管理 學生總成績管理
學生
老師
助教

6.設計思路

四、問題與改進

問題 改進
未能使用項目管理工具,團隊間分工合作不明確 通過預先對作業進行分析,將作業明確分為多個小任務,由組員自由選擇任務,再根據助教發的github教程,使用Github Project,Issue,Milestone來管理項目。
需求分析不夠詳細 對用例圖進行修改,再次細化類圖,並添加活動圖、狀態圖輔助理解
各個模塊還可細化 我們會在團隊內部交流,並與實現開發的部分負責人就實現可行性進行討論。
原型設計中未考慮到學期和班級 一開始原型設計的時候,界面沒有考慮到,但是目前我們的數據庫設計已經考慮到了班級和年級(我們的課程應該是一學年一次),接下來,我們會考慮如何再界面,具體開發上,實現對已結束的學期,進行訪問。
系統設計上仍應保留最完整的方案 我們不應該在一開始就對系統進行削減,而是要做出最完整的方案,在時間有限的條件下,才進行迭代,所以對原本削減的內容再次添加(如安卓端的結對功能)

五、工作流程、組員分工、貢獻比例

1.工作流程

  1. 根據對博客園發布的作業進行分析,列出需要完成的任務清單,定好時間節點需要交付或完成的任務,發布到qq群中, 讓大家自己選擇任務
  2. 大家各自選擇完任務后開始各自開展工作,遇到問題及時在 QQ 群中反饋
  3. 使用Github Project,Issue,Milestone來管理項目,分配各自已選擇的任務
  4. 完成任務后,在 Github 上把任務狀態改為已完成,將待交付成果發布到群里,由專人審核,遇到問題時拋到群里,大家一起討論

2.組員分工與貢獻比例

學號 姓名 工作內容 貢獻度
221801101 王思皓 設計類圖 12
221801103 牙舉韜 系統設計、數據庫設計答辯PPT和評審表 10
221801106 鄭龍海 接口設計 12
221801112 曹鑫 任務分配、ER分析和表結構設計、甘特圖 14
221801121 黃煒 安全和權限設計 12
221801225 李進明 整合、博客隨筆 11
221801237 黃偉為 功能模塊層次設計 9
221801305 陳曉漢 體系結構設計 9
221801332 李達明 ER分析和表結構設計 11

六、附件鏈接


免責聲明!

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



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