天天看點

評了麼-團隊作業四——系統設計和資料庫設計

這個作業屬于哪個課程 2021春軟體工程實踐S班
這個作業要求在哪裡 團隊作業四——系統設計和資料庫設計
這個作業的目标

1.完善設計類圖;

2.設計好系統和資料庫;

3.制定好團隊計劃和分工;

4.為下一次的團隊Alpha沖刺作業提前做好準備。

其他參考文獻

《建構之法(第三版)》、UML之類圖、UML類圖詳解、

詳解設計模式六大原則、資料庫表結構設計的幾條準則、

資料庫表設計(一對多、多對多)、

常見web攻擊方法及防禦手段總結、使用者密碼加密、

JavaWeb項目前後端分離、RBAC使用者、角色、權限、組設計方案

...

目錄

  • 一、預期開發計劃時間安排
  • 二、預期開發計劃分工安排
    • 2.1 後端分工安排
    • 2.2 前端分工安排
  • 三、體系結構設計
  • 四、功能子產品層次圖
    • 4.1 功能子產品層次設計思路
    • 4.2 功能子產品層次圖展示
  • 五、ER分析
    • 5.1 ER設計思路
    • 5.2 ER圖展示
  • 六、表結構設計
  • 七、設計類圖
    • 7.1 設計類圖展示
    • 7.2 類圖設計思路
  • 八、系統安全
  • 九、權限設計
  • 十、問題回答&改進
  • 十一、績效
  • 十二、連結合集
    • 12.1 github團隊倉庫連結
    • 12.2 團隊名稱_系統設計說明書.pdf
    • 12.3 團隊名稱_資料庫設計說明書.pdf
    • 12.4 團隊名稱_系統設計和資料庫設計答辯PPT.pdf

項目開發計劃 最晚完成日期 完成情況
完成系統設計和資料庫設計,确定前後端要使用的架構 2021-4-23 完成
學習架構,前端編寫實作靜态頁面,後端實作對所有接口的資料處理邏輯 2021-4-30 未完成
前端完善頁面的設計和調整改進,後端完成資料的測試以及安全性測試,前後端實作對接 2021-5-7
對每個功能完成測試,修複目前每個功能出現的bug 2021-5-14
釋出正式版本1.0,将項目部署到伺服器上,撰寫項目使用手冊 2021-5-21
對整個開發過程進行總結,完善各個部分細節的工作 2021-5-28

姓名 任務分工
鄭麟軒 搭建後端架構、釋出架構學習任務、實作系統安全的保護,參與測試
吳涵 編碼model子產品、編寫使用者管理相關子產品、實作角色權限管理
鄭嘉晖 參與編碼API、編碼成績管理子產品、實作評分子產品
張孝勇 編碼model子產品、測試系統功能、編寫使用者管理相關子產品
洪世燦 參與編碼API、測試系統功能、實作評分子產品

丁宇凡 完成學生界面,使用者登入界面的靜态界面。完成登入、學生界面的資料互動
毛依婷 完成教師界面的靜态界面以及資料互動
陳修慶 完成隊長,評分等界面的靜态界面和資料互動
廖其昌 完成管理者界面的靜态界面和資料互動

 本系統使用MVC模式設計架構,進行前後端分離。視圖層和業務層分離,這樣就允許更改視圖層代碼而不用重新編譯模型和控制器代碼,業務流程或者規則的改變隻需要對前端代碼進行改動即可。也可以很容易地改變應用程式的資料層和業務規則。

根據MVC模式,本系統主要可分為Model(模型),View(視圖),Controller(控制器)三個層次。

(1)Model層

本層主要負責資料庫的結構映射,資料庫增删改查等直接對資料庫進行操作的行為。向提供接口的方式允許其他層間接地通路資料庫。

(2)View層

本層的分為前端與後端兩個部分。前端負責Web界面的顯示與邏輯。後端負責接收前端請求并根據前端請求傳回前端所需的資料。

(3)Controller層

本層負責絕大多數的業務邏輯。在接收到前端請求的時候,對請求進行處理。處理業務邏輯過程中,通過Model層間接對資料庫進行通路,并且通過View層将處理結果傳回給前端,并在前端展示給使用者。

評了麼-團隊作業四——系統設計和資料庫設計

1. 超級管理者

 超級管理者子產品由登入、教師管理、密碼重置組成。超級管理者子產品主要負責危險資料的通路,如增加教師與密碼重置。

2. 教師/助教

 教師/助教子產品由學生管理,班級管理,助教管理,作業管理,評分管理,成績管理等組成。學生管理允許對學生進行導入,以及資訊的修改。班級管理、助教管理負責對班級進行建立、增加助教等。作業管理、評分管理、成績管理可以建立釋出作業,對評審表進行評分,對個人成績、團隊成績進行管理。

3. 學生/組員

 普通組員子產品主要功能是檢視成績,如個人成績,團隊成績。

 組長子產品由團隊管理,組員管理,績效管理,評審表建立、評審表打分組成。

評了麼-團隊作業四——系統設計和資料庫設計

  • 1.确定實體集合及包含的屬性
實體集 實體集屬性 實體集意義
User ID,UID,password,role,nickname 使用者
Student_Class ID,student_id,class_id 學生-班級
Teacher_Class ID,class_id,teacher_id 教師-班級
Student_Team ID,teacher_id,team_id 學生-團隊
Class ID,name 班級
Homework ID,class_id,type,content,end_time,start_time,title 作業
Scoring_Item ID,homework_id,description,optional,assistant_id,sequence,parent_item_id,note,score 評分項
Personal_Blog_Grade ID,scorekeeper_id,ID,grade,scoring_item_id 個人部落格成績
Team_Blog_Grade ID,grade,scorekeeper_id,scoring_item_id 團隊部落格成績
Evaluation_Table ID,homework_id,team_id 評審表
Evaluation_item ID,evaluation_table_id,content,score,sequence,parent_item_id,suggest 評審表項
Evaluation_Item_Grade ID,UID,team_id,grade,scoring_item_id 評審表項成績
Team ID,group_leader_id,class_id,name,number 團隊
Partner ID,student1_id,student2_id 結對
Performance ID,student_id,percentage,homework_id 績效
Job_Submission ID,submitter_id,homework_id,submit_status,filepath 作業送出
Role ID,type 角色
Permission 權限
Role_Permission ID,role_id,permission_id 角色-權限
  • 2.确定實體集之間的聯系
實體集1 實體集2 聯系 聯系類型(實體集1-實體集2)
擁有 m-n
n-1
獲得 1-n
屬于 n-m
管理
m-1
得分
Evaluation_Item
Evalustion_Item_Grade

評了麼-團隊作業四——系統設計和資料庫設計

評了麼-團隊作業四——系統設計和資料庫設計
  • 1.使用者User表
字段名 類型 長度 是否主鍵 是否非空 是否唯一 描述
ID INT 主鍵,自增長字段
UID VARCHAR 9 使用者名:學生學号或教師工号
password 16 加密密碼
nickname 20 昵稱
role 使用者身份,外鍵,對應權限表的主鍵
  • 2.學生-班級Student_Class表
student_id 學生ID,外鍵,對應使用者表的主鍵
class_id 班級号,外鍵,對應班級表的主鍵
  • 3.教師-班級Teacher_Class表
teacher_id 教師或助教ID,外鍵,對應使用者表的主鍵
  • 4.學生-團隊Student_Team表
team_id 團隊ID,外鍵,對應團隊表的主鍵
  • 5.班級Class表
name 255 班級名
  • 6.作業Homework表
班級ID,外鍵,對應班級表的主鍵
type 1 作業類型:個人作業0,結對作業1,團隊作業2
title 作業标題
content TEXT 作業内容
start_time DATE 開始時間
end_time 截止時間
  • 7.評分項Scoring_Item表
homework_id 作業ID,外鍵,對應作業表的主鍵
description 評分項的描述
score 評分項的分值
optional 是否選做:是1,否0
note 備注
assistant_id 助教ID,外鍵,對應使用者表的主鍵
parent_item_id 父項ID,外鍵,對應評分項表的主鍵
sequence 同級排序,表示同一級表格項的順序
  • 8.個人部落格成績成績Personal_Blog_Grade表
scoring_item_id 評分項ID,外鍵,對應評分項表的主鍵
scorekeeper_id 得分者ID,外鍵,對應使用者表的主鍵
grade 評分項得分
  • 9.團隊部落格成績Team_Blog_Grade表
  • 10.評審表Evaluation_Table表
  • 11.評審表項Evaluation_Item表
evaluation_table_id 評審表ID,外鍵,對應評審表的主鍵
評審表項内容
評審表項的成績
suggest 評審人所給建議
  • 12.評審表項成績Evaluation_Item_Grade表
評審表項ID,外鍵,對應評審表項表的主鍵
被評團隊ID,外鍵,對應團隊表的主鍵
評分者ID,外鍵,對應使用者表主鍵
評審表項得分
  • 13.團隊Team表
number 團隊序列号
團隊名
group_leader_id 組長ID,外鍵,對應使用者表主鍵
  • 14.結對Partner表
student1_id 結對學生ID,外鍵,對應使用者表主鍵
student2_id
  • 15.績效Performance表
學生ID,外鍵,對應使用者表主鍵
percentage 績效百分比
  • 16.作業送出Job_Submission表
submitter_id 送出者ID,學生或是團隊ID
submit_status 送出狀态:補交2,按時送出1,未送出0
filepath 送出作業的路徑
  • 17.角色Role表
角色類型,需要Unique
  • 18.權限Permission表
  • 19.角色-權限Role_Permission表
role_id 角色ID,外鍵,對應角色表的主鍵
permission_id 權限ID,外鍵,對應權限表的主鍵

評了麼-團隊作業四——系統設計和資料庫設計

1.使用者需求

 老師:

   (1)添加助教;

   (2)導入學生資訊;

   (3)建立班級;

   (4)部落格評分;

   (5)評審團隊;

   (6)開始/結束結對組隊;

   (7)開始/結束團隊建立;

   (8)登入;

 助教:

   (1)批改作業;

   (2)部落格評分;

   (3)建立作業;

   (4)自定義評分細則;

 組員:

   (1)檢視成績;

   (2)檢視作業;

   (3)結對組隊;

   (4)登入;

 組長:

   (4)組員管理;

   (5)建立評審表;

   (6)評審其他團隊;

   (7)填寫績效;

 超級管理者:

   (1)使用者管理;

   (2)重置密碼;

   (3)PDF導入名稱正則規則修改;

2.類

 使用者類

   教師

   學生

 班級類

 團隊類

 結對類

 績效類

 作業類

 作業送出類

 部落格成績類

 評審表類

 評審表項類

 評分項類

 評審表成績類

我們針對幾種常見的Web攻擊方式,制定了幾種應對政策。

1. SRF(Cross-site request forgery)跨站請求僞造

 我們通過設定SameSite Cookie屬性為strict屬性,使Cookie在任何情況下都不可能作為第三方Cookie,來避免CSRF攻擊。

2.SQL注入

 我們通過使用ORM架構,避免SQL語句直接進行字元串拼接,以避免SQL注入。

3. XSS(Cross Site Scripting)跨站腳本攻擊

 我們通過對特殊字元進行轉義來避免XSS攻擊。

 本系統使用基于角色的權限通路控制RBAC(Role-Based Access Control)方式進行權限控制。每個使用者都對應以下的某個角色,每種角色擁有自己特定的權限。

評審表評分 團隊管理 學生管理 助教管理 老師管理 班級管理 建立評審表 重置密碼 作業管理 成績管理
組員
組長
老師
助教
超級管理者

Q1:個人單次作業成績在總分中的占比是否能夠展現?

A1:在第一版原型中确實無法展現,原型展示結束(4.13)後就開始了對原型的改進,在新版原型中的組員-成績清單中不光可以顯示每次作業的成績,還可以顯示該次作業在總分中的占比。包括在之後的實作中也會在相應頁面顯示分數和占比。

評了麼-團隊作業四——系統設計和資料庫設計

Q2:團隊作業中成員的績效如何展現?

A2:原來的想法是助教在進行批改團隊作業的同時錄入團隊成員的績效,後來經過商讨,在組長界面中增加了添加績效表的功能按鈕,可以讓組長設定各次團隊作業組員的績效占比(總值100,每人1-100,如組長設定甲某績效80,則甲某本次績效占比80%),在團隊作業評分結束後,系統會自動擷取績效占比,并計算每位同學的作業得分。

評了麼-團隊作業四——系統設計和資料庫設計

Q3:團隊作業的答辯部分分為老師、助教和學生,這三部分得分按一定公式計算得到團隊答辯分數,是否可以實作?

A3:可以,我們的系統劃分了老師、助教和學生,其中組長、助教、老師都可以評審團隊并送出評審表,系統擷取角色身份和評審分計算出團隊作業的答辯分數。

評了麼-團隊作業四——系統設計和資料庫設計

Q4:團隊作業得分為部落格得分和答辯得分按照一定計算公式計算得到,系統能否實作?

A4:可以,在原型中分别有個人作業和團隊作業的成績展示頁面,在團隊作業的展示頁面中,顯示了該次作業不同子產品的得分情況,這些得分由系統獲得後按公式計算得到最終得分。

評了麼-團隊作業四——系統設計和資料庫設計

學号 工作内容 貢獻度
系統結構說明書,權限設計 14
稽核原型,報告、部落格 12
資料庫說明書、開發計劃
資料庫結構表、ER圖、功能子產品層次圖、泳道圖 13
原型設計 10
評審表,權限文檔,接口文檔,ER圖
接口設計,ppt,資料流圖

github團隊倉庫連結

系統設計說明書連結

資料庫設計說明書連結

系統設計和資料庫設計答辯PPT連結