模块三-学生管理系统详细架构设计
前言
本文为学生学生管理系统详细架构设计文档,用于指导后续的开发、测试和运维,涵盖业务背景,约束和限制,总体架构,详细设计,质量设计以及演进规划。
词汇表
HTTPS: 一种通过计算机网络进行安全通信的传输协议;
Nginx: 异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存;
MySQL: 当前一种主流的开放源码关系数据库管理系统;
SpringBoot: 构建在Spring框架顶部,并提供了一种简便,快捷的方式来设置,配置和运行基于Web的简单应用程序;
Tomcat: Apache软件基金会属下Jakarta项目开发的Servlet容器;
token: 用户身份标识;
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。
2. 约束和限制
3. 总体架构
由前面业务介绍可知系统功能可划分以下子系统:

3.1 架构分析
1.1 高可用
该系统对教学依赖并不强,所以功能可用性要求相对不高。
3.1.2 高性能
该系统总体用户数并不多,且学校的规模扩展相对稳定,所以性能要求方面不高。
3.1.3 可扩展
用户规模增长稳定,所以性能扩展方面要求不大,但是考虑后续需求变化,所以在设计数据存储以及功能时,需要注意预留一定的扩展点。
3.14 成本
成本包括开发团队人员薪酬,服务器购买及域名注册相关费用,其中人员薪酬约占80%。
3.15 安全
系统数据主要包括用户(教师/学生)信息,课程信息,其中用户信息包含身份症,学号信息等敏感信息,一旦泄露将对用户产生极大不良影响,因此需要对用户信息作一定的加密处理以保证安全。
3.2 总体架构

各子系统不对外提供服务,统一由Nginx通过URL判断并转发到对应服务器;
MySQL采用一主一备机制;
4. 详细设计
4.1 核心功能
4.1.1 学生子系统

4.1.2 课程子系统

4.1.3 权限系统

4.2 关键设计
系统请求均为HTTPS;
登录成功后生成token返回给前端;
每个请求均生成随机字符串作为请求id,并在日志输出纪录,以便跟踪;
4.3 设计规范
4.3.1 框架工具
4.3.2 前后端接口规范
4.3.2.1 URL
应符合version/module/action模式,并且不能有动词,只能有名词,如下:
https://api.example.com/v1/student/add
https://api.example.com/v1/course/add
https://api.example.com/v1/course/assign
https://api.example.com/v1/admin
4.3.2.2 JSON
JSON主体:
{
"code" : 0,
"msg" : "Something bad happened",
"data" : {
...
}
}
说明如下:
code: 0为成功,非0为失败
msg: 当code为非0时,获取错误信息。当code-
为0时,msg一般为”success”。
data: 当code为0时,获取结果,全部以json方式表示。当code为非0时,data没有数据
4.3.3 命名规范
所有命名要有描述性,少用缩写;
文件名,类名,函数命名, 变量命名:使用驼峰命名法 ;
常量,数据库/表/字段命名:全大写,用英文下横线间隔;
5. 质量设计
5.1 可测试性
所有功能必须有对应的单元测试,集成测试,且行测试覆盖率至少85%,方法覆盖率至少90%;
5.2 可维护性
5.3 可观测性
后台提供系统管理面板,显示当前系统CPU,内存,硬盘,网络及各系统在线情况;
6. 演进规划
开发时间为2022年1月1日到2022年2月25日,
6.1 学生管理系统一期
验收时间:2022年1月25日
功能实现:学生管理子系统及权限子系统,具体包括实现权限设置,更新,及可单个添加或批量录入学生信息,并对信息进行查询,删除,修改功能;
6.2 学生管理系统二期
验收时间:2022年2月20日验收
功能实现:课程管理子系统,具体包括课程新增,查询,修改,下架,以及学生抢课功能;