架构实战营模块三作业
前言
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
1. 业务背景
1.1 解决的问题
为学校建设学生管理系统,系统有学生管理、课程管理、考试管理、权限管理功能,具体需求如下:
1.1.1 学生管理
1. 系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。
2. 账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、删除、查询权限。
3. 账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
4. 组织管理层级:按学生实际情况划分归属。 例如:软件学院—数字传媒方向(专业)—软件 1306—苗雨乔。
5. 文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限。
6. 信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。
1.1.2 课程管理
1. 课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。2. 选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
3. 排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统自动生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。
4. 教材选择:此功能由教务统一管理,根据每门课程选定相应教材。
1.1.3 考试管理
1. 试卷区域分割:发起考试:期中的时候,教师可以创建一次考试;而在月考时可以根据上课的周数进行考试安排,如一般可以在在第八周、十二周、十六周分别创建三次考试。其中这些考试题目是在事先录入好的题库中按照教师设定的知识点、范围、难易程度以及题型自动生成的试卷。每创建一次考试之后,教师需要将出好的考试题进行分割点标注,然后印刷试卷,考试。考试过后,试卷会被扫描,然后教师需要将扫描件试卷录入系统之中,系统会根据标注点对试卷进行预处理和分割。教师进入系统,可以对已经分割好的试卷进行判分。
2. 平时成绩:此项功能包含学生平时所有相关成绩信息,例如:考勤主要是由教师终端自动生成的或者教师手动输入,时间期限为当天;课堂笔记主要是由学生在当堂课程结束后将自己的笔记上传然后由教师批阅给予成绩在下次上课前完成自动签名;课后作业主要是在每堂课之后,教师可以发起一次作业任务,学生应老师设定的时间内提交作业,老师会对作业进行批阅,在下次课前给予成绩评分,将以上方式计算得到的总成绩计入平时成绩。最后按照系统判定的平时成绩结合月考、期中、期末试卷成绩按相应比例得出学生最终成绩。
3. 评分判定:教师使用系统对上传的试卷分割区域作出相应的评分。由于教师要对试卷进行签字,我们建议教师在评分之前可以在试卷上进行签字,由此得到的扫描结果就有教师签字。如有额外需求,需要教师通过外设进行试卷签字,此项功能暂不做需求开发。
1.1.4 权限管理
1. 系统使用者有学生、教师、管理员、辅导员。
2. 学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。
3. 学生只能查看自己的成绩,教师可以修改学生的成绩。
4. 辅导员可以查看学生的信息,可以设置学生的奖惩信息。
5. 教师可以上传考试试题,学生可以做题。
2. 约束和限制
1.成本不能太高,最好不要超过 50 万。
2.先考虑一个学校,1000 到 2000 人,但是考虑到后续项目规模扩大,要支持其他学校,需要考虑可扩展性。
3.系统有考试和题目录入功能,需要考虑安全性,不能泄露考题,不能让学生攻入后台修改考试成绩。
4.时间限制,要在学期开始之前上线,如果从现在的时间点开始开发,9 月份开学可能来不及,最晚明年 3 月份之前上线并完成历史数据导入。
3. 总体架构
![](https://static001.geekbang.org/infoq/d5/d548e562eb472c0c00f4e84713c76820.png)
服务分为学生子系统,课程子系统,权限子系统三个模块,存储使用 mysql 主备架构。
学生子系统
学生信息管理:账号分配、账号绑定、组织管理层级信息
课程:课程信息查看、选课、笔记作业上传下载
考试:参加考试、结果查看
课程子系统
课程:课程录入、排课、选课、教材、笔记作业批阅
考试:创建考试、考题录入、生成考卷
权限子系统
登录与权限:登录、注册、审核、角色、权限配置
后台监控:服务器状态监控、异常报警、安全预警、后台配置
3.1 架构分析
3.1.1 可扩展
第一个项目先接一个学校的学生管理需求,要考虑后续可扩展性和可伸缩性,后续要支持其他学校的部署,支持更多的学生信息管理,更多的学生同时登录操作。
3.1.1 高可用
学生数据、教师数据、选课考试数据不能丢失,否则会造成学生教师日常学习工作生活收到影响。寒暑假期间系统可以关闭维护,开学后有学生选课,期末有考试和结果录入、结果查询,所以开学和期末属于系统使用高峰期,要保证系统不能出问题。
性能上,一期可以先不考虑高性能。因为管理的学生人数不多,并发不会特别高。
3.2 总体架构
白盒图
![](https://static001.geekbang.org/infoq/a4/a417fec8dfba1de95e4751af4a9ee3d1.png)
4. 详细设计
4.1 核心功能
[必选,描述核心场景或者流程的实现机制,对应 4R 架构中的 Rule,每个核心场景一个小节]
4R 架构 – Rank + Role + Relation + Rule
软件架构指软件系统的顶层结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。
4.1.1 学生信息管理
![](https://static001.geekbang.org/infoq/14/14b8cc58078f8d424edd50bc1724475b.png)
4.1.2 课程管理
![](https://static001.geekbang.org/infoq/7e/7e25d0b796ce7e6931b7ca46e9b86f78.png)
教师登录后录入课程,更新课程信息表,之后学生登录查看课程信息,选课之后信息录入学生选课表。笔记作业提交时同时写入 mysql 表和文件存储服务器。
4.1.3 考试场景
![](https://static001.geekbang.org/infoq/30/30adf9166f8295cc41e525e09bdf5eb2.png)
试卷录入接口由教师登录后录入试卷信息,更新试卷表,学生考试时先查询试卷表,之后结果录入考试结果表,试卷批改接口,先查询考试结果表,之后进行教师批改,将结果更新到考试结果表。
4.1.4 权限控制
![](https://static001.geekbang.org/infoq/c3/c363b2a8a0dad452d4a115f36970a6d7.png)
4.2 关键设计
4.2.1 可扩展
课程信息、学生信息、选课信息表拆分开,后续如果调整为微服务架构表不用动,方便调整。表之间不配置外键,方便后续分库分表。
4.2.2 安全
使用 shiro 框架作安全登录和权限控制,mysql 账号信息密码加密存储。
4.3 设计规范
1)各个子系统使用 Spring Boot 2.X 框架开发
2)服务接口间交互协议用 http
3)服务接口数据格式使用 json
4)服务接口响应时间不超过 50ms
5)使用 Shiro 框架作为登录、安全和权限管理
6)mysql 主从作为存储
7)mybatis 框架作为持久层框架
8)前端使用 vue.js 开发
5. 质量设计
可测试性
代码里通过 log4j 记录日志。
可维护性
要有系统后台,支持用户权限配置,访问量观测,服务器 CPU 使用率、内存磁盘使用率监测功能。
成本
主要是开发成本,预计开发需要 3 人月,如果测试时间与开发时间 1:1,整体需要 6 人月,先作为 Saas 部署到学校服务器。后续如果改为 Paas,可以使用阿里云或者华为云服务器。
安全
要考虑防止 sql 注入,密码加密处理,mysql 部署在内网与外网隔离,防止系统被破解。
6. 演进规划
6.1 学生管理系统一期
上面所有内容描述的是一期总体架构,当客户有其他需求要进行定制化开发。
6.2 学生管理系统二期
考虑到能部署到其他学校,要做到页面部分模块可通过后台配置,如主页、logo。当学生选课时并发访问比较多时,可以在选课模块加入缓存。
版权声明: 本文为 InfoQ 作者【老猎人】的原创文章。
原文链接:【http://xie.infoq.cn/article/1c8a45cf607891c3bd11b7f1f】。文章转载请联系作者。
评论