位元組亂動對團隊作業四 — 項目系統設計與資料庫設計
這個作業屬于哪個課程 | 2021春軟體工程實踐|s班 |
---|---|
這個作業要求在哪裡 | 作業要求 |
團隊名稱 | 位元組亂動 |
這個作業的目标 | 完成需求分析,制定團隊項目的整體計劃安排及明确的裡程碑 |
作業正文 | 正文 |
其他參考文獻 | 《系統設計說明書》《資料庫設計說明書》國标規範文本 |
目錄
-
- 一、預期開發計劃時間安排
- 二、預期開發計劃分工安排
- 三、系統設計
- 1.體系結構設計
- 2.功能子產品層次圖
- 3.設計類圖
- 4.ER分析 & 表結構設計
- 1.E-R圖
- 2.表設計結構
- 5.系統安全和權限設計
- 6.設計思路
- 四、問題與改進
- 五、工作流程、組員分工、貢獻比例
- 1.工作流程
- 2.組員分工與貢獻比例
- 六、附件連結
項目主要分為 4階段:
- 系統與資料庫設計。
- 項目實作V.1.0版本。
- 項目實作思考與學習。
- 項目實作V2.0版本。
計劃表格如下:
序号 | 計劃 | 開始時間 | 結束時間 | 耗時 | 完成度 |
---|---|---|---|---|---|
1 | 系統設計 | 2021-04-19 | 2021-04-23 | 5.0 日 | 100% |
2 | 資料庫設計 | ||||
3 | 環境搭建 | 2021-04-25 | 3.0 日 | 0% | |
4. | 安卓端mvvm架構搭建 | 1.0 日 | |||
5. | springboot+thymeleaf+mybais搭建 | ||||
6. | 前後端調試 | 2021-04-24 | 2.0 日 | ||
7. | 項目實作V1.0-安卓: | 2021-04-26 | 2021-05-05 | 10.0 日 | |
8. | 使用者登入,注冊(學生) | ||||
9. | 分數檢視 | 2021-04-27 | |||
10 | 評分任務-組内評分 | 2021-04-28 | |||
11 | 評分任務-組間評分 | 2021-04-29 | 2021-04-30 | ||
12 | 個人子產品-我的團隊 | 2021-05-01 | |||
13 | 個人子產品-登出,回報意見 | 2021-05-02 | |||
14 | 前後端對接 | 2021-05-03 | |||
15 | 項目實作V1.0-web前端: | 2021-05-09 | 14.0 日 | ||
16 | 登入子產品 | ||||
17 | 細則管理-新增細則 | ||||
18 | 細則管理-所有細則 | ||||
19 | 細則管理-細則詳情 | ||||
20 | 細則管理-删改細則 | ||||
21 | 學生管理-新增學生 | ||||
22 | 學生管理-所有學生 | ||||
23 | 團隊管理-新增團隊 | ||||
24 | 團隊管理-所有團隊 | 2021-05-04 | |||
25 | 學生子產品-作業送出(連結版本) | ||||
26 | 成績管理-部落格評分(連結版本) | 2021-05-06 | 2021-05-08 | ||
27 | 成績管理-成績查詢 | ||||
28 | 項目實作V1.0-後端(): | ||||
29 | 完成安卓部分接口 | 5.0日 | |||
30 | 完成web前端部分接口 | 7.0日 | |||
31 | 項目實作V1.0-前後端對接調試 | 2021-05-10 | 2021-05-11 | ||
32 | 項目實作思考與學習: | 2021-05-12 | 2021-05-24 | 13.0 日 | |
33 | shiro權限管理與本項目對接 | 2021-05-16 | |||
34 | 其他問題 | 2021-05-17 | 8.0日 | ||
35 | 項目實作V2.0前端 | 2021-06-01 | 2021-06-15 | 15.0 日 | |
36 | 2021-06-02 | ||||
37 | 成績管理-成績改删 | 2021-06-03 | 2021-06-05 | ||
38 | 作業送出(本地markdown) | 2021-06-06 | 2021-06-08 | ||
39 | 學生子產品其他部分 | 2021-06-09 | 2021-06-11 | ||
40 | 教師子產品其他部分 | 2021-06-12 | 2021-06-14 | ||
41 | 助教子產品其他部分 | 2021-06-13 | |||
42 | 項目實作V2.0安卓: | ||||
43 | V.1.0問題解決 | ||||
44 | 權限與資料隔離 | 2021-06-18 | 8.0 日 | ||
45 | 組間評分細化 | 2021-06-19 | 2021-06-21 | ||
項目實作V2.0後端(與前端一緻) | 12.0 日 | ||||
46 | 項目實作V2.0-前後端對接調試 | 2021-06-20 | |||
甘特圖如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLyIDMyUjM1UTOx0CN3ITO0MTMwADNyQDMxIDMy0iMwcDNzMjMvwFNwEjMwIzLcJDM3QzMzIzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
姓名 | 任務 | |
---|---|---|
王思皓 | 分數檢視子產品,評分任務子產品(組内評分,組間評分) | 安卓端 |
黃炜 | 個人子產品,登入子產品 | |
李達明 | 助教子產品-細則管理 ,學生子產品。助教子產品-成績管理(部落格評分) | web端 |
李進明 | 助教子產品-成績管理,助教子產品-使用者管理。 | |
黃偉為 | 登入子產品,統計子產品。 | |
鄭龍海 | 安卓個人子產品,評分任務子產品,分數檢視子產品。 | 後端 |
牙舉韬 | 登入子產品,統計子產品,助教子產品-細則管理。 | |
曹鑫 | 助教子產品-成績管理,助教子產品使用者管理。 |
-
前端:采用Bootstrap進行網頁設計開發。
後端:使用springboot整合mybatis、Thymeleaf模闆引擎、easypoi表格架構、 Shiro架構
mybatis: 實作對使用者的賬戶資訊、學生的成績等持久化資訊的存取。
Thymeleaf: 采用Thymeleaf進行頁面編寫。
Shiro: 采用Shiro架構進行使用者認證和權限管理,如學生、助教和教師的登入, 教師和助教對學生作業操作權限的控制。
easypoi: 基于easypoi,對Excel進行分析處理用于Excel的表格導入和導出,如學生資訊的上傳。
位元組亂動-團隊作業四項目系統設計與資料庫設計 位元組亂動對團隊作業四 — 項目系統設計與資料庫設計 - 使用的是目前官方比較推崇的MVVM架構 Model View ViewModel 采用Jetpack庫提供的架構
位元組亂動-團隊作業四項目系統設計與資料庫設計 位元組亂動對團隊作業四 — 項目系統設計與資料庫設計
此圖展示了各個類互相之間的繼承、聚合關系:
l 助教、教師、學生繼承自使用者,組長又繼承自學生。
l 每一位助教和每一位都對應多個團隊,每一個團隊由一位組長和幾位隊員組成。
l 每一位學生和每一個團隊對應多次部落格作業,每一次部落格作業對應一份評分細則和一項成績。
l 每一條評分細則由多個評分項聚合而成。
- 總覽E-R圖
位元組亂動-團隊作業四項目系統設計與資料庫設計 位元組亂動對團隊作業四 — 項目系統設計與資料庫設計 - 團隊管理E-R圖
位元組亂動-團隊作業四項目系統設計與資料庫設計 位元組亂動對團隊作業四 — 項目系統設計與資料庫設計 - 作業管理E-R圖
位元組亂動-團隊作業四項目系統設計與資料庫設計 位元組亂動對團隊作業四 — 項目系統設計與資料庫設計 - 學生管理E-R圖
位元組亂動-團隊作業四項目系統設計與資料庫設計 位元組亂動對團隊作業四 — 項目系統設計與資料庫設計
user表結構:
列名 | 資料類型 | 長度 | 主鍵 | 非空 | 自增 | 注釋 |
---|---|---|---|---|---|---|
id | int | 是 | ||||
user_name | varchar | 128 | 使用者名 | |||
account | 實際賬号(助教号:A001,教師号:T001 ,學号:221801112) | |||||
password | 密碼 | |||||
perms | 權限 | |||||
salt | 255 | 鹽 | ||||
total_score | double | 個人累積總成績 | ||||
team_id | 所屬團隊Id | |||||
team_change_history | 所屬團隊變更記錄(如1,2) | |||||
class_id | 班級id |
blog_work表結構
sys_id | ||||||
blog_work_name | 部落格名稱 | |||||
blog_work_content | text | 部落格内容 | ||||
user_id | 釋出者id(團隊作業時該項為空) | |||||
釋出團隊id(個人作業時該項為空) | ||||||
task_id | 該部落格對應的作業id | |||||
blog_work_type | 部落格類型(個人作業,團隊作業,結對作業) |
class表結構
class_name | 班級名稱 | |||||
grade | 年級 | |||||
teacher_id | 教師id | |||||
details表結構
details_name | 評分細則項名稱 | |||||
score_ratio | 評分項分值比例 | |||||
create_user_id | 建立人 | |||||
create_time | datetime | 建立時間 | ||||
所屬作業id |
pair_score表結構
user1_id | 結對隊友1ID | |||||
user2_id | 結對隊友2ID | |||||
所屬作業ID | ||||||
sys_score | 本對本次作業總得分 |
pair_score_details表結構
pair_score_id | 結對成績的ID | |||||
details_id | 評分細則項ID | |||||
score | 該項得分 | |||||
perms表結構
permsname | 64 | 權限名 | ||||
url | 可通路位址 | |||||
role 表結構
rolename | 角色名 | |||||
role_perms表結構
roleid | 角色ID | |||||
permsid | 權限ID | |||||
task表結構
task_name | 作業名稱 | |||||
task_content | 作業内容 | |||||
create_user | ||||||
begine_time | ||||||
deadline | 截止日期 |
team表結構
sys_team_name | ||||||
sys_team_slogan | 團隊口号 | |||||
team_score表結構
一次作業總成績 | ||||||
成績所屬者ID(團隊) | ||||||
成績所屬作業ID | ||||||
contributions | 成員貢獻度(22991:10,22992:20,22993:70) |
team_score_details表結構
team_score_id | 團隊成績的ID | |||||
user_role表結構
userid | 使用者ID | |||||
user_score表結構
所屬使用者ID | ||||||
該使用者該次作業總得分 | ||||||
user_score_details表結構
user_score_id | 個人成績的ID | |||||
5.1系統安全設計
1.教師和助教不提供注冊功能,教師賬号需在資料庫中手動添加,助教賬号可以由教師通過新增功能添加,也可以直接在資料庫中添加。
2.資料庫可以自動定期備份,每天0點進行一次備份,資料出現丢失或其他異常後可以通過備份恢複,當然也可以進行事務復原,在操作發生異常後復原資料庫操作,保證資料的安全性和完整性。
3.對使用者的密碼使用MD5或SHA加密,可以避免密碼被直接截獲破解。
4.使用正規表達式過濾傳入的參數,防止SQL注入
5.後端添加了攔截器後設定攔截規則,擷取請求主機IP位址,如果通過代理進來,則透過防火牆擷取真實IP位址,在擷取使用者真實IP位址後,如果某ip的通路太過頻繁,則用攔截器攔截掉IP并将其加入黑名單。
6.通過RBAC進行權限管理,所有使用者不能越權操作不能通路權限以外的資料。
7.前端進行資料校驗後,後端對前端參數進行校驗,前端驗證減少了對伺服器的不必要的不合法的請求,後端校驗保證了對于一些敏感資料比如使用者登入資料進行了雙重驗證,另外可以用許多工具來繞過前端,修改前端的方式避開js的處理驗證,是以後端的驗證可以保證安全性
5.2系統權限設計
登陸 | 注冊 | 檢視分數 | 組間評分 | 個人中心 | 組間互評 | 産看成員資訊 | |
---|---|---|---|---|---|---|---|
學生 | √ | ||||||
老師 | |||||||
助教 |
Web端
登入 | 分數查詢 | 作業送出 | 助教管理 | 評分細則管理 | 答辯評分 | 部落格評分 | 學生成績管理(增删改) | 學生管理 | 公共統計資訊 | |
---|---|---|---|---|---|---|---|---|---|---|
團隊管理 | 部落格作業清單管理 | 助教學生總覽 | 助教學生新增 | 細則表管理 | 細則資訊搜尋 | 細則詳情管理 | 學生總成績管理 | |||
問題 | 改進 |
---|---|
未能使用項目管理工具,團隊間分工合作不明确 | 通過預先對作業進行分析,将作業明确分為多個小任務,由組員自由選擇任務,再根據助教發的github教程,使用Github Project,Issue,Milestone來管理項目。 |
需求分析不夠詳細 | 對用例圖進行修改,再次細化類圖,并添加活動圖、狀态圖輔助了解 |
各個子產品還可細化 | 我們會在團隊内部交流,并與實作開發的部分負責人就實作可行性進行讨論。 |
原型設計中未考慮到學期和班級 | 一開始原型設計的時候,界面沒有考慮到,但是目前我們的資料庫設計已經考慮到了班級和年級(我們的課程應該是一學年一次),接下來,我們會考慮如何再界面,具體開發上,實作對已結束的學期,進行通路。 |
系統設計上仍應保留最完整的方案 | 我們不應該在一開始就對系統進行削減,而是要做出最完整的方案,在時間有限的條件下,才進行疊代,是以對原本削減的内容再次添加(如安卓端的結對功能) |
- 根據對部落格園釋出的作業進行分析,列出需要完成的任務清單,定好時間節點需要傳遞或完成的任務,釋出到qq群中, 讓大家自己選擇任務
- 大家各自選擇完任務後開始各自開展工作,遇到問題及時在 QQ 群中回報
- 使用Github Project,Issue,Milestone來管理項目,配置設定各自已選擇的任務
- 完成任務後,在 Github 上把任務狀态改為已完成,将待傳遞成果釋出到群裡,由專人稽核,遇到問題時抛到群裡,大家一起讨論
學号 | 工作内容 | 貢獻度 | |
---|---|---|---|
221801101 | 設計類圖 | ||
221801103 | 系統設計、資料庫設計答辯PPT和評審表 | ||
221801106 | 接口設計 | ||
221801112 | 任務配置設定、ER分析和表結構設計、甘特圖 | ||
221801121 | 安全和權限設計 | ||
221801225 | 整合、部落格随筆 | ||
221801237 | 功能子產品層次設計 | ||
221801305 | 陳曉漢 | 體系結構設計 | |
221801332 | ER分析和表結構設計 |
- GitHub 團隊倉庫連結
- 系統設計說明書
- 資料庫設計說明書