天天看点

字节乱动-团队作业四项目系统设计与数据库设计 字节乱动对团队作业四 — 项目系统设计与数据库设计

字节乱动对团队作业四 — 项目系统设计与数据库设计

这个作业属于哪个课程 2021春软件工程实践|s班
这个作业要求在哪里 作业要求
团队名称 字节乱动
这个作业的目标 完成需求分析,制定团队项目的整体计划安排及明确的里程碑
作业正文 正文
其他参考文献 《系统设计说明书》《数据库设计说明书》国标规范文本

目录

    • 一、预期开发计划时间安排
    • 二、预期开发计划分工安排
    • 三、系统设计
      • 1.体系结构设计
      • 2.功能模块层次图
      • 3.设计类图
      • 4.ER分析 & 表结构设计
        • 1.E-R图
        • 2.表设计结构
      • 5.系统安全和权限设计
      • 6.设计思路
    • 四、问题与改进
    • 五、工作流程、组员分工、贡献比例
      • 1.工作流程
      • 2.组员分工与贡献比例
    • 六、附件链接

项目主要分为 4阶段:

  1. 系统与数据库设计。
  2. 项目实现V.1.0版本。
  3. 项目实现思考与学习。
  4. 项目实现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

甘特图如下:

字节乱动-团队作业四项目系统设计与数据库设计 字节乱动对团队作业四 — 项目系统设计与数据库设计

姓名 任务
王思皓 分数查看模块,评分任务模块(组内评分,组间评分) 安卓端
黄炜 个人模块,登录模块
李达明 助教模块-细则管理 ,学生模块。助教模块-成绩管理(博客评分) 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来管理项目。
需求分析不够详细 对用例图进行修改,再次细化类图,并添加活动图、状态图辅助理解
各个模块还可细化 我们会在团队内部交流,并与实现开发的部分负责人就实现可行性进行讨论。
原型设计中未考虑到学期和班级 一开始原型设计的时候,界面没有考虑到,但是目前我们的数据库设计已经考虑到了班级和年级(我们的课程应该是一学年一次),接下来,我们会考虑如何再界面,具体开发上,实现对已结束的学期,进行访问。
系统设计上仍应保留最完整的方案 我们不应该在一开始就对系统进行削减,而是要做出最完整的方案,在时间有限的条件下,才进行迭代,所以对原本削减的内容再次添加(如安卓端的结对功能)

  1. 根据对博客园发布的作业进行分析,列出需要完成的任务清单,定好时间节点需要交付或完成的任务,发布到qq群中, 让大家自己选择任务
  2. 大家各自选择完任务后开始各自开展工作,遇到问题及时在 QQ 群中反馈
  3. 使用Github Project,Issue,Milestone来管理项目,分配各自已选择的任务
  4. 完成任务后,在 Github 上把任务状态改为已完成,将待交付成果发布到群里,由专人审核,遇到问题时抛到群里,大家一起讨论

学号 工作内容 贡献度
221801101 设计类图
221801103 系统设计、数据库设计答辩PPT和评审表
221801106 接口设计
221801112 任务分配、ER分析和表结构设计、甘特图
221801121 安全和权限设计
221801225 整合、博客随笔
221801237 功能模块层次设计
221801305 陈晓汉 体系结构设计
221801332 ER分析和表结构设计

  • GitHub 团队仓库链接
  • 系统设计说明书
  • 数据库设计说明书

继续阅读