老九门--团队作业四——项目系统设计与数据库设计
|这个作业属于哪个课程 |
:---😐:---😐:---:
|团队名称|老九门|
| 这个作业要求在哪里 |
|这个作业的目标|系统设计、数据库设计|
|其他参考文献|...|
一、团队项目的预期开发计划时间安排
周数 | 时间 | 任务安排 |
---|---|---|
第9周 | 2021.4.26-2020.5.2 | 完成项目的搭建、实现教师模块的所有界面及功能 |
第10周 | 2021.5.3-2020.5.9 | 实现学生模块的所有界面及功能 |
第11周 | 2021.5.10-2020.5.16 | 发布Alpha版本,总结+事后诸葛亮,对上版本的错误功能进行修正,测试并修复bug |
第12周 | 2021.5.17-2020.5.23 | 完善界面及功能,拓展功能,测试并修复bug,优化 |
第13周 | 2021.5.24-2020.5.30 | 完善界面及功能,拓展功能,测试并修复bug,优化,收集用户反馈 |
第14周 | 2021.5.31-2020.6.6 | 完善界面及功能,拓展功能,测试并修复bug,优化 |
第15周 | 2021.6.7-2020.6.13 | 继续完善界面及功能,拓展功能,测试并修复bug,优化 |
第16周 | 2021.6.14-2020.6.20 | 继续完善界面及功能,拓展功能,测试并修复bug,优化 |
第17周 | 2021.6.21 | 发布Beta版本 |
二、团队项目的预期开发计划分工安排
学号 | 姓名 | 负责部分 |
---|---|---|
221801111 | 康伟泽 | 教师和学生的课程资源模块的前端开发、测试 |
221801108 | 宋日荣 | 教师和学生的成绩模块、签到模块及教师学生管理模块的前端开发 |
221801115 | 林明昊 | 教师和学生的成绩模块、签到模块及教师学生管理模块、作业管理模块的后端开发 |
221801122 | 张骁 | 教师和学生的课程通知模块及小测模块的前端开发、测试 |
221801131 | 傅江峰 | 登录模块,修改密码模块,教师和学生的课程资源模块及学生作业管理模块的后端开发 |
221801132 | 李淇 | 教师和学生作业管理模块的前端开发、测试 |
221801136 | 王冠儒 | 教师和学生的答疑讨论模块前端开发、测试 |
221801232 | 黄隽芊 | 前端总体样式设计规定,首页、登录、修改密码的前端设计,博客 |
221801233 | 陈鹏桢 | 教师和学生的答疑讨论模块、课程通知模块及小测模块的后端开发 |
三、体系结构设计
本系统的设计主要是基于MVC设计模式,M代表模型Model,V代表视图View,C代表控制器 Controller。
- Model:模型承载数据,对用户提交请求进行计算的模块,分为两类:1.数据承载bean,2.业务承载bean,数据承载bean是指实体类专门承载业务数据的,比如Student,User,业务处理bean是指Service或者Dao对象,专门处理用户的请求的。
- View:视图,为用户提供使用界面,与用户进行交互。
- Controller:控制器,用来将用户请求转发给相应的Model进行处理,并且根据Model的计算结果向用户提供相应的响应。
MVC工作的流程:
四、功能模块层次图
五、ER分析
5.1 局部ER图
学生和班级的关系是包含关系,一个班级包含多名学生,一名学生对应一个班级,因此二者之间是一对多的关系。
班级和教师的关系是管理关系,一位教师管理一个班级,一个班级对应一位教师,因此二者之间是一对一的关系。
教师和通知的关系是发布关系,一位教师可以发布多条通知,一条通知对应一位教师,因此二者之间是一对多的关系。
教师和资源的关系是上传关系,一位教师可以上传多项资源,一项资源对应一位教师,因此二者之间是一对多的关系。
作业和作业提交结果的关系是包含关系,一份作业包含多条作业提交结果,一条作业提交结果对应一份作业,因此二者之间是一对多的关系。
学生和作业提交结果的关系是提交关系,一名学生可以提交一份作业提交结果,一条作业提交结果对应一名学生,因此二者之间是一对一的关系。
教师和作业的关系是发布关系,一位教师可以发布多份作业,一份作业对应一位教师,因此二者之间是一对多的关系。
签到和签到结果的关系是包含关系,一次签到包含多条签到结果,一条签到结果对应一次签到,因此二者之间是一对多的关系。
教师和签到的关系是发布关系,一位教师可以发布多次签到,一次签到对应一位教师,因此二者之间是一对多的关系。
学生和签到结果的关系是拥有关系,一名学生拥有一条签到结果,一条签到结果对应一名学生,因此二者之间是一对一的关系。
学生和话题的关系是发表关系,一名学生可以发表多条话题,一条话题对应一名学生,因此二者之间是一对多的关系。
话题和话题评论的关系是包含关系,一条话题可以包含多条话题评论,一条话题评论对应一条话题,因此二者之间是一对多的关系。
5.2 全局ER图
六、表结构设计
缩写定义
单词缩写 | 原单词 | 含义 |
---|---|---|
pwd | password | 密码 |
cls | class | 班级 |
num | number | 数量 |
stu | student | 学生 |
hw | homework | 作业 |
rslt | result | 结果 |
学生表:t_student
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
account | VARCHAR(9) | 是 | 即学号,唯一 | |
student_name | VARCHAR(12) | 是 | 学生姓名 | |
pwd | VARCHAR(16) | 是 | 登录密码 | |
class_id | INT(6) | 是 | 班级id | |
total_score | INT | 是 | 期末总成绩 | |
written_score | INT | 是 | 期末笔试成绩 | |
quiz_score | INT | 是 | 小测总成绩 | |
homework_score | INT | 是 | 作业总成绩 | |
other_score | INT | 是 | 考勤、课堂交流成绩 | |
VARCHAR(18) | 是 | 邮箱 |
教师表:t_teacher
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
account | VARCHAR(9) | 是 | 是 | 账号,唯一 |
teacher_name | VARCHAR(12) | 是 | 教师姓名 | |
pwd | VARCHAR(16) | 是 | 登录密码 | |
class_id | INT(6) | 是 | 班级id | |
VARCHAR(18) | 是 | 邮箱 |
班级表:t_class
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
class_name | VARCHAR(20) | 是 | 班级名称,唯一 | |
teacher_id | INT(6) | 是 | 对应的教师id |
资源表:t_resource
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
resource_name | VARCHAR(20) | 是 | 资源名称 | |
type | INT | 是 | 资源类型 | |
downloads | INT | 是 | 下载量 | |
address | VARCHAR(64) | 是 | 存储地址 | |
upload_at | TIMESTAMP | 上传时间 | ||
teacher_id | INT(6) | 是 | 教师id | |
state | INT | 是 | 发布状态 |
通知表:t_notice
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
notice_name | VARCHAR(20) | 是 | 通知名称 | |
release_at | TIMESTAMP | 发布时间 | ||
content | VARCHAR(1000) | 是 | 通知内容 | |
teacher_id | INT(6) | 是 | 教师id | |
state | INT | 是 | 发布状态 |
签到信息表:t_attendance
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
attendance_name | VARCHAR(20) | 是 | 签到名称 | |
start_at | DATETIME | 开始时间 | ||
end_at | DATETIME | 截止时间 | ||
issuer | VARCHAR(12) | 是 | 发布人 | |
class_id | INT(6) | 是 | 班级id |
签到结果表:t_attendance_result
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
attend_id | INT(6) | 是 | 对应的签到id | |
account | VARCHAR(9) | 是 | 签到账号 | |
state | INT | 是 | 签到状态 | |
attended_at | TIMESTAMP | 签到时间 |
话题表:t_topic
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
account | VARCHAR(9) | 是 | 发布话题的账号 | |
title | VARCHAR(30) | 是 | 话题的标题,唯一 | |
content | VARCHAR(1000) | 是 | 话题内容 | |
release_at | TIMESTAMP | 发布时间 | ||
comment_num | INT | 是 | 评论数 |
话题评论表:t_topic_comment
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
topic_id | INT(6) | 是 | 对应的话题id | |
account | VARCHAR(9) | 是 | 发布评论的账号 | |
content | VARCHAR(1000) | 是 | 评论内容 | |
release_at | TIMESTAMP | 发布时间 |
作业表:t_homework
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
class_id | INT(6) | 是 | 班级id | |
title | VARCHAR(30) | 是 | 作业标题,唯一 | |
content | VARCHAR(1000) | 是 | 作业内容 | |
start_at | DATETIME | 发布时间 | ||
end_at | DATETIME | 截止时间 |
作业提交结果表:t_homework_result
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
content | VARCHAR(1000) | 是 | 回答内容 | |
address | VARCHAR(64) | 是 | 存储地址 | |
score | INT | 是 | 评分 | |
remark | VARCHAR(255) | 是 | 评语 | |
submit_at | TIMESTAMP | 提交时间 |
学生-作业-作业提交结果关系表:t_stu_hw_rslt
字段名 | 数据类型 | 主键 | 非空 | 描述 |
---|---|---|---|---|
id | INT(6) | 是 | 是 | 自增id |
account | VARCHAR(9) | 是 | 学生账号 | |
homework_id | INT | 是 | 作业id | |
result_id | INT | 是 | 作业提交结果id |
七、设计类图
软件工程课程网站的用户分为教师和学生两种,用户类具有通用属性id、账号、密码、姓名、班级id、邮箱,教师类和学生类继承自用户类,学生类还有与学生成绩有关的属性。班级类与教师类是一对一的关联关系,班级类与学生类是一对多的聚合关系。教师可以发布资源、通知、作业、签到,所以教师类和资源类、通知类、作业类、签到信息类有一对多的关联关系。一次签到有多个签到结果,签到结果会随着签到的删除而删除,所以是组合关系,一个学生对于一个签到只有一个签到结果。作业与作业提交结果的关系同理。教师和学生都可以发布多个话题和多个评论,所以教师类和学生类对于话题类和话题评论类都是一对多的关联关系。在资源类和通知类中设置教师id、发布状态属性是因为想把这两个类与教师绑定起来而不是与班级绑定起来,教师可以通过撤销、修改来复用已发布的资源、通知。而作业类含有班级id的属性,是因为觉得作业和班级相关比较好,比如目前想发布给“2021年S班”的作业和以往发布给“2019年S班”的作业可能只有部分要求不一样,就可以根据班级id查询到“2019年S班”的作业进行参考。
八、系统安全和权限设计
8.1 系统安全
- 用户的密码和设置新密码时所用到的邮箱等重要数据通过MD5进行哈希加密后存入数据库,防止用户密码明文泄露。
- 启用防火墙,将不必要的端口关闭。
- SQL注入为常见的网站攻击方式,其攻击原理主要是在站点 执行SQL语句时,传入非法参数。解决方案:对SQL进行预编译处理。
8.2 权限设计
- 前端对未登录用户只提供登录界面及修改密码界面。
- 后端对请求进行过滤,过滤未登录用户除了登录及修改密码以外的请求。
九、针对上次作业的Q&A及改进
9.1 上次作业的Q&A
-
Q:需要考虑班级和学期。例如本学期有单老师和汪老师两个班,每个班的任务是相互独立的;本学期结束后,也希望整个课程的记录能够保留下来,之后的学期可以查看参考,或者复用。
A:已加入班级的概念。对于学期,可以用班级名来标识,比如“2019春软件工程S班”、“2021春软件工程S班”。
-
Q:用例图和验收中似乎没有包含“小测”的部分。相比作业这种直接上传一份文件/一段文本的行为,小测应该会更复杂一些?涉及到老师出题(单选多选判断,问答),设置答案;同学们在规定时间内答题,查看答案等等。
A:根据老师提的需求,小测模块我们会提供一个跳转到考试系统的链接,链接由老师填写更改。
-
Q:以及成绩自动统计,感觉也是比较复杂的;需要把这些纳入考量~
A:成绩方面,卷面成绩和平时成绩填写完成后可以自动可以设置比例,比如3:7或2:8等。
9.2 上次作业的改进
1. 用例图
2. 活动图
教师、学生登录活动图
教师、学生设置新密码活动图
学生课程活动活动图
学生查看、下载课程资源活动图
学生课程签到活动图
学生查看学科成绩活动图
学生参与答疑讨论活动图
教师上传、删除教学大纲,编辑、删除教学计划,查看课程资源活动图
教师发布、删除通知活动图
教师发布、删除作业活动图
教师发布签到、修改签到信息、查看签到结果活动图
教师录入成绩、查看学生成绩分析活动图
教师新增学生、删除学生、查看学生列表活动图
教师查看、发表、删除话题,查看话题评论
3. 数据流图
教师:
学生:
4. 类图
已在上面给出。
十、为完成这次作业的工作流程、组员分工、组员贡献度比例
10.1 工作流程
10.2 组员分工、组员贡献度比例
学号 | 工作内容 | 贡献度 |
---|---|---|
221801111 | 编写部分系统设计说明书、类图、数据流图、活动图 | 14% |
221801108 | 编写部分数据库设计说明书、编写部分系统设计说明书 | 12% |
221801115 | 类图、数据库表设计、整合修正、博客 | 12% |
221801122 | 编写部分系统设计说明书、活动图 | 9% |
221801131 | 类图、ER图设计 | 11% |
221801132 | 编写部分数据库设计说明书、甘特图 | 11% |
221801136 | 编写部分系统设计说明书、活动图 | 9% |
221801232 | 功能模块层次图、PPT、答辩 | 11% |
221801233 | 类图、接口设计 | 11% |
十一、相关链接
github团队仓库链接
老九门_系统设计说明书.pdf
老九门_数据库设计说明书.pdf
老九门_系统设计和数据库设计答辩PPT.pdf