写点什么

外包学生管理系统架构文档

作者:
  • 2022 年 8 月 02 日
  • 本文字数:1791 字

    阅读完需:约 6 分钟

要求


前言

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

修订历史

版本号 主要内容 修订者 日期

v0.0.0.0 创建文档,建立主要内容 文武 2022.08.01

词汇表

1. 业务背景

随着学校的招生规模,分校区的设立,新立学科的增加,选修教学模式等的变化,原有学生信息管理已不能满足需要, 由此带来以下几个明显的问题.

  • 效率低: 教师需要手动将学生的个人信息、选课信息、考试信息等录入表格, 效率低;

  • 扩展难:

  • 易出错: 因为都是手动录入, 极易出现录入错误;

  • 维护难: 由于信息之间关系较多, 数据分析难度较大, 信息变更流程复杂;

基于以上背景, 我们需要引入外包学生管理系统, 将限制繁琐低效的线下方式改为简单便捷的线上管理.

 

2. 约束和限制

  • 外包方案需在 2022 年 8 月 4 日前完成;

  • ISO9001 质量体系标准;

  • 数据库采用 MySQL;

  • 学校维护团队擅长 java

3. 总体架构

系统内外


系统架构图


3.1 架构分析


3.1.1 高可用

对于外包学生管理系统来说, 如果某个学生的信息丢了可用通过重新补充的方式进行修复, 但如果同时丢失了很多学生的信息, 则补充将会耗时耗力, 因此信息丢失虽然影响有限, 但是最好能降低丢失的可能性. 因此数据应该有备份

3.1.2 高性能

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

3.1.3 可扩展

外包学生管理系统目前主要维护学生的学籍、课程、成绩、奖惩信息, 后续可能会有学生就业信息的管理, 因此需具备一定的可扩展性

3.1.4 成本

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

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

3.1.4 安全

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

3.2 总体架构


  1. 采用微服务的架构, 将系统分为学生子系统、课程子系统、权限子系统.

  2. 3 个子系统共用一台主 MySQL 和一台备 MySQL, 主备数据复制. 主 MySQL 负责读写, 备 MySQL 只负责读.

  3. 通过 nginx 进行服务分发, 实现外部于内部子系统交互.


4. 详细设计


4.1 核心功能

系统涉及两个角色: 学生和教师, 学生负责录入信息, 教师对信息进行审核

4.1.1 学生学籍信息录入流程

  1. 学生将自己的信息在学籍系统中进行录入, 包括学院、专业、教育经历等, 保存在数据库中;

  2. 教师对学生录入的信息进行检查, 对于有疑问的信息和学生沟通后进行更正;

  3. 系统提供向导功能;

4.1.2 学生选课流程

  1. 学校将课程信息录入在选课系统中;

  2. 学生登录系统选课模块;

  3. 学生进行必修、选修课的选择, 包括课程老师、上课地点、上课时间等, 保存在数据库中;

  4. 学生需在指定的时间段内登录系统进行选课, 非此时段不能选择;

  5. 系统提供向导功能;

4.1.3 学生成绩录入流程

  1. 教师登录系统

  2. 教师完成对自己学科的成绩信息录入

  3. 教师需在指定的时段内完成学生成绩录入

4.2 关键设计

4.2.1 学生信息存储的可靠性


通过使用 2 台 MySQL 保存学生数据, 其中 1 台主 MySQL 负责读写, 1 台备负责读, 当主 MySQL 宕机时, 备仍然只能读, 以保证主 MySQL 恢复后数据的一致性.

4.2.2 信息录入的可靠性

信息录入过程中若出现服务问题、网络问题等, 应及时明确提示用户错误原因、如何重试等, 以保证信息成功录入.

4.2.3 系统的可扩展性

使用微服务的方式, 将系统划分成多个子系统, 便于后续扩展

4.2.4 系统的安全性

前端与 nginx 交互使用 https 协议, 并增加 token 校验, 对于用户输入的内容进行混淆和转码.

 

4.3 设计规范

  • 使用 Linux CentOS 进行项目部署;

  • 前端页面 spring boot 完成项目搭建;

  • 学生子系统、课程子系统、权限子系统均使用 java 语言进行开发, 子系统间基于 zookeeper 协议实现子系统之间的交互;

  • 服务端 3 个子系统共用一台主 MySQL 和一台备 MySQL, 主备数据复制. 主 MySQL 负责读写, 备 MySQL 只负责读;

  • 前端通过 nginx 代理转到服务端.

5. 质量设计

5.1 可测试性

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

5.2 可维护性

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

5.3 可观测性

使用性能检测工具对服务器运行状态,系统在线服务情况进行监控, 对于异常情况进行报警; 当进程遇到特殊情况退出时实现自动重启服务.

6. 演进规划

6.1 外包管理系统 1 期

完成学生学籍、课程、成绩、权限管理

6.2 外包管理系统 2 期

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


用户头像

关注

还未添加个人签名 2021.10.13 加入

还未添加个人简介

评论

发布
暂无评论
外包学生管理系统架构文档_斌_InfoQ写作社区