天天看点

评了么-团队作业四——系统设计和数据库设计

这个作业属于哪个课程 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链接