外包学生管理系统设计文档
前言
本文是对外包学生管理系统设计文档,用于指导后续的开发、测试和运维工作。
词汇表
MySQL: 一种关系型数据库
Nginx:负载均衡服务器
SpringBoot:Java 开发框架
1. 业务背景
随着学校的规模不断扩大,学生的数量不断增加,需要处理的信息也日趋增大,不仅花费大量的教师资源,工作的效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高
信息的准确度以及日常管理的工作效率。
系统可以应用于学生各类信息的管理,实现学生信息关系的系统化、规范化、自动化,其主要统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等。
2. 约束和限制
需要通过公网访问
成本不能超过 10 万
必须支持 3000 学生使用
开发周期不能超过 1 个月
数据不能对外泄露
3. 总体架构
说明:
短信接口:主要提供手机验证码功能,用于登录和支付;
网银接口:主要用于缴费扣款;
机器学习:主要用于学生成绩自动阅卷,为学生提供推荐书籍、课程等;
人脸识别:识别权限相关,例如门禁等。
3.1 架构分析
3.1.1 高可用
对于学生管理系统而言,学生和教师相关信息丢失,以及课程相关数据丢失,会导致教学事故,严重影响整个教学工作的开展,可用性要求较高。
3.1.2 高性能
对于整个学校来说,总人数维持 3000 人左右,每年毕业生人数与新生人数基本相等,不会出现突增的情况,所以对性能的要求不高;
3.1.3 可扩展
随着科技的发展,学生和教师的要求会越来越高,需要更多的智能化的办公平台和学生学习平台,功能会逐步增多。
3.2 总体架构
1)采用 nginx 做负载均衡;
2)使用 springboot 进行应用开发,并部署多服务器;
3)使用 MySQL 进行数据存储,采用一主一备架构,主备均可提供读服务,写请求只能写入主库,再通过主从进行数据同步。
4. 详细设计
4.1 核心功能
4.1.1 学生管理
系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。
账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、删除、查询权限。
账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
组织管理层级:按学生实际情况划分归属。 例如:软件学院—数字传媒方向(专业)—软件 1306—苗雨乔。
文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限。
4.1.2 教师管理
系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。
账号分配:账号由系统生成,给定相应权限,可进行密码更改,拥有对学生成绩进行评定等功能。
账号绑定:账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
组织管理层级:按学院专业划分归属。
4.1.3 权限管理
权限定义:由教务处管理员进行定义权限。
权限分配:由教务处管理员对不同角色进行权限分配。
4.1.4 课程管理
课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。
选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统自动生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。
教材选择:此功能由教务统一管理,根据每门课程选定相应教材。
4.2 关键设计
1) 将系统从业务上划分为四个模块:教师管理模块、学生管理模块、课程管理模块、权限管理模块。采用 springboot 进行应用开发,每个业务模块对应一个代码模块,业务功能实现都在各自的模块内。
2) 应用部署至少 3 台服务器,采用 nginx 进行负载均衡。
3) 数据使用 MySQL 数据库存储,一主两备的架构模式。
4) 表结构设计:学生信息表,教师信息表,课程信息表,学生课程关系表,教师课程关系表,学生成绩表,权限管理表,权限配置表。
4.3 设计规范
1. 采用 Spring Boot 2.5.6 作为开发框架;
2. 服务间接口数据采用 JSON 格式;
3. 服务间接口使用 dubbo 框架进行 rpc 通信,且响应时间不能超过 200 ms;
4. 采用 Innodb 存储引擎的 MySQL 数据库;
5. 后端服务提供 restful api。
5. 质量设计
1)可测试性
严格编写单测,行覆盖率至少 80%。重要的接口需要有集成测试。
2)可维护性
代码分层结构明显
提供必要的运维工具
增加相关监控功能
3)可观测性
添加系统指标监控和相关业务监控。
4)成本
为节省成本,使用 3 台 4 核 8G 内存 60G 磁盘的服务器即可。
6. 演进规划
6.1 一期实现的功能
快速开发完成上线,实现从 0 到 1 的过程。基本实现各业务模块功能。
学生管理模块:登录、学号的分配与绑定、查看个人信息;
教师管理模块:登录、账号的分配与绑定;
课程管理模块:课程排期、老师录入课程成绩,学生查看课程成绩与课程点评;
权限管理模块:学生和教师权限分配与管理。
6.2 二期实现的功能
学生管理模块:为学生个性化推荐书籍、兴趣活动等;
课程管理模块:为学生推荐适用课程和线上课程学习;
评论