写点什么

学生管理系统架构文档

作者:闲人Eric
  • 2022-12-22
    上海
  • 本文字数:2720 字

    阅读完需:约 9 分钟

前言

本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维

修订历史


词汇表

Mysql:关系型数据库

Nginx:负载均衡 web 服务器

ECS:指云服务器 ECS,可弹性扩展、安全、稳定、易用的计算服务。

1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。

为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息,进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。

系统边界黑盒图如下:


1.学生管理子系统请求权限管理子系统,主要是为了 1.得到登录用户的角色权限信息 2.判定登录用户的操作是否具备相应的权限。因为学生管理系统的用户不仅仅是学生,还包含了老师、管理员、辅导员等等,所以要需要请求权限子系统判定这些人是否具备发表论坛、上传作业、选课、修改成绩的权限等。


2.课程子系统中目前包含了对课程成绩的维护、考试区域的管理、课程信息的管理,所以学生子系统与其之间的交互时提供选课信息、作业信息、用户信息等,可以得到对应的成绩单、考试区域、课程信息等内容。


2. 约束和限制

  1. 使用 MySQL 数据库,并使用主备库

  2. 2023.03.01 号完成

  3. 使用 JAVA 语言完成后端服务开发

  4. 成本不超过 50 万

  5. 学生基本信息、考试成绩需要永久保存

3. 总体架构

3.1 架构分析


业务架构图:


系统边界白盒图:

系统架构图:


  1. 学生子系统、课程子系统均依赖权限子系统进行认证、授权,通过学生子系统或者课程子系统进行相关操作的时候,都需要到权限子系统查看下操作人员是否具备相应的角色与权限

  2. 学生子系统、权限子系统、课程子系统三者之间的使用 HTTP 方式进行通信,数据格式采用 Json 格式

  3. 课程子系统可以进行选课信息维护、成绩上传与查询功能、考试区域划分功能,需要依赖学生子系统、权限子系统获取学生信息和权限角色信息。获取权限角色信息的目的是为了判断有没有操作权限,获取学生信息是为了做一些业务上的操作,比如选课的时候,我们可能需要看一下这个学生所处的年级,所处的学院是否符合选此门课的条件,因此需要依赖一下学生子系统。

3.1.1 高可用

学生的信息、成绩等属于非常重要的信息,关系到学生未来的就业与深造,要求数据不能丢失,所以必须保证数据可用性,架构中采用 MySQL 主备方案保证数据可用性。

采用 MySQL 异步复制技术搭建主从集群,将从库作为备库使用

3.1.2 高性能

外包学生管理系统主要维护学生的学籍、课程、成绩、奖惩信息, 由于学生人数较少, 瞬时信息量较小, 因此对性能要求不高

3.1.3 可扩展

考虑到随着国家政策,学校政策,学校教学理念等的不断变化,未来需求会不断变化,所以可扩展性是需要重点考虑的问题。

未来可以根据具体的需求变化分别扩展各个子系统甚至重构子系统或者添加子系统。

3.1.4 成本

由于系统本身属于管理后台, 面向人群少, 使用场景较固定, 开发难度较低, 因此开发周期和人力不太多

综合来看, 外包学生管理系统需要具备可扩展性, 对高可用、高性能要求不高, 时间和人力成本要求较少

3.1.4 安全

1.系统提供权限管理和数据安全访问

2.用户密码采用 SM4 加密存储,涉及手机号、证件号、邮箱类的信息在前台展示的时候,需要将中间的信息用*替代

3.2 总体架构


1)系统采用微服务架构方案,按功能将系统拆分为不同的子系统,同时部署在不同的服务器上,避免模块的故障导致其他正常功能干扰,起到一定的隔离作用

2)系统包含一台主 MySQL 和一台备 MySQL,主备之间进行数据复制。

3)器宕机的情况下,备数据库服务器对外提供服务

4)学生子系统管理学生的相关信息,姓名,学号,性别,年龄,班级之类的数据。课程子系统大概包含上课时间,课程,排课、成绩等信息。权限管理子系统包括学生,老师个人权限信息的修改

5)前端采用 vue 开发部署在 Nginx 上

4. 详细设计

4.1 核心功能

4.1.1 学生账号分配

学生的账号信息在初始化的时候,往往是由学校统一分配好学号作为登录账号,而不是由学生自行注册登录账号,因此录入初始的学生信息是由管理员操作学生子系统进行学号、初始密码的分配。然后再由新生根据初始化好学号和密码登录进行注册信息的修改和填充或手机号码的绑定等操作。

4.1.2 学生修改初始注册信息


学生在得到管理员分配的初始用户名密码后,进行密码修改或者其他身份信息的补录。

4.1.3 管理员审核学生信息

按照需求,对于一些敏感信息的修改(例如家庭成员的修改),需要管理员对其进行审核。

4.1.4 上传、修改成绩


4.1.5 学生选课


4.2 关键设计

可扩展:

系统拆分为多个子系统,单独部署、开发,降低耦合,有利于业务的后期扩展,后续如果还要接入财务相关的系统,还可以单独拆分一个财务模块与财务系统单独对接。另外目前把考试和成绩相关的内容合并到了课程子系统中,是考虑到业务量不是很大,后续如果增设了线上课程、考试成绩分析等个性化需求,可以单独成立考试子系统、作业子系统等等。

存储高可用:

数据存储在 MySQL 中,每个分组有一主一备两台 MySQL 服务器,MySQL 服务器之间复制消息以保证数据存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分消息会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。

4.3 设计规范

1.前端页面使用 vue 开发,并部署到 nginx 上

2.各个使用 springboot 开发,且子系统之间采用 json 格式进行数据传输,子系统之间的调用采用 rest 进行调用

3.Mysql 使用 Innodb 存储引擎

5. 质量设计

5.1 可测试性

因系统角色较少, 功能较简单, 包含的业务模块较少,测试难度较低;

5.2 可维护性

系统采用微服务拆分 3 个子系统, 子系统数量较少, 维护成本低;

5.3 可观测性

目前业务逻辑不复杂,对于一些未知和不可预期错误输出到 error 日志文件中,重点观测系统中的 error 日志即可

6. 演进规划

6.1 外包管理系统 1 期

完成学生管理功能,包括用户登录、账号绑定、成绩上传下载、信息查询

完成课程管理功能,包括课程录入、选课功能、排课功能、教材选择

完成权限管理功能,包括角色权限维护

6.2 外包管理系统 2 期

完成学生题库及考试管理,在线课堂管理,直播系统等

6.3 外包管理系统 3 期

扩展为全国高校学生管理系统平台

 

用户头像

闲人Eric

关注

还未添加个人签名 2018-04-25 加入

还未添加个人简介

评论

发布
暂无评论
学生管理系统架构文档_架构实战营_闲人Eric_InfoQ写作社区