写点什么

架构实战营第十期模块三作业

作者:刘博
  • 2022-12-27
    江苏
  • 本文字数:2929 字

    阅读完需:约 10 分钟

前言

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

修订历史

版本号 变更内容 修订者 日期

1.0.0 创建文档 刘博 2022/12/27

词汇表

Nginx:是一个高性能的 HTTP 和反向代理 web 服务器。

SpringBoot:框架,用来简化 Spring 应用的初始搭建以及开发过程。

MySQL:是一个开源的关系型数据库。

MyBatis Plus:是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

Forest:Forest 是一个高层的、极简的声明式 HTTP 调用 API 框架。

1. 业务背景

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

l  解决的问题:学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

l  实现的目标:提高学生管理的管理水平,优化资源,尽可能降低管理成本。系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率

l  完成的任务:统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询

 

2. 约束和限制

开发时间 1 个月

开发语言 Java,框架 Spring Boot,数据库 MySQL

内网访问,加密防刷

数据存储高可用,不可丢失

3. 总体架构

经过备选方案选择,先采用如下总体架构设计方案:

 


学生管理系统总体架构图

 

系统白盒边界图如下:



学生管理系统白盒边界图

1)权限验证系统包括注册,登录子功能,可以通过微信号和手机号绑定可实现账号自助找回

2)通过题库系统,教师可以选题分割打印考试题,进行扫描件上传到课程管理子系统,属于弱关联

3)通过邮箱系统可以提供学生绑定邮箱账号,并通过邮箱与老师交流,或者交作业,并且其可客串部分手机功能

3.1 架构分析

1) 高可用

对于学生管理系统,保存所有学生的相关数据,包括课程、成绩以及相关文档等,任何数据的丢失对学生和老师来说都是不可接受的。因此,学生管理系统的数据需要高可用性。

2) 可扩展性

由于学生管理系统业务相对复杂,每个模块的功能相对独立,所以将课程管理,学生管理以及权限管理三个部分分开有利于日后扩展和维护。

3) 可维护性

采用外包团队熟悉的语言进行开发,可以利用熟悉的运维体系进行系统维护。大大减少运维的难度,提高系统维护的效率并有效降低运维成本。

4) 成本

外包系统采用开发团队熟悉的开发语言,利用成熟的开发框架和流程管理,利用云基础设施环境,降低开发和测试成本。

3.2 总体架构

1)MySQL 集群采用主备数据复制。

2)每个子系统(学生子系统,课程子系统,权限子系统)部署在不同的服务器上。

3)通过 nginx 进行统一入口代理将请求转入各自子系统

4)每一个子系统可以进行水平扩展,通过 Nginx 进行 Hash 负载均衡

4. 详细设计

4.1 核心功能

 

4.2 关键设计

系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,

其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。

学生管理:

1. 系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。

2. 账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干涉。教师账号由管理者

(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权限。管理(教务)权限由系统固有账号,是系统

root 权限,对教师有分配管理权限,对数据有增加、修改、删除、查询权限。

3. 账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。

4. 组织管理层级:按学生实际情况划分归属。 例如:软件学院—数字传媒方向(专业)—软件 1306—苗雨乔。

5. 文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作

业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所有用户只有查询、浏览的权限,除管理员外其他用

户没有对成绩修改的权限。

6. 信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。

课程管理:

1. 课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。

2. 选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。

3. 排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。排课功能备选开发方向为在线

排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课的班级、代课老师等信息,除此之外,还可以选填排课时的

优选项,例如:上课时间有限上午等系统自动生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。

4. 教材选择:此功能由教务统一管理,根据每门课程选定相应教材。

考试管理:

1. 试卷区域分割:发起考试:期中的时候,教师可以创建一次考试;而在月考时可以根据上课的周数进行考试安排,如一般可以在在第

八周、十二周、十六周分别创建三次考试。其中这些考试题目是在事先录入好的题库中按照教师设定的知识点、范围、难易程度以及题

型自动生成的试卷。每创建一次考试之后,教师需要将出好的考试题进行分割点标注,然后印刷试卷,考试。考试过后,试卷会被扫

描,然后教师需要将扫描件试卷录入系统之中,系统会根据标注点对试卷进行预处理和分割。教师进入系统,可以对已经分割好的试卷

进行判分。

2. 平时成绩:此项功能包含学生平时所有相关成绩信息,例如:考勤主要是由教师终端自动生成的或者教师手动输入,时间期限为当

天;课堂笔记主要是由学生在当堂课程结束后将自己的笔记上传然后由教师批阅给予成绩在下次上课前完成自动签名;课后作业主要是

在每堂课之后,教师可以发起一次作业任务,学生应老师设定的时间内提交作业,老师会对作业进行批阅,在下次课前给予成绩评分,

将以上方式计算得到的总成绩计入平时成绩。最后按照系统判定的平时成绩结合月考、期中、期末试卷成绩按相应比例得出学生最终成

绩。

3. 评分判定:教师使用系统对上传的试卷分割区域作出相应的评分。由于教师要对试卷进行签字,我们建议教师在评分之前可以在试卷

上进行签字,由此得到的扫描结果就有教师签字。如有额外需求,需要教师通过外设进行试卷签字,此项功能暂不做需求开发。

权限管理

1. 系统使用者有学生、教师、管理员、辅导员。

2. 学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。

3. 学生只能查看自己的成绩,教师可以修改学生的成绩。

4. 辅导员可以查看学生的信息,可以设置学生的奖惩信息。

5. 教师可以上传考试试题,学生可以做题。

4.3 设计规范

1)后端使用 Spring Boot 开发,前端使用 vue 开发

2)MySQL 使用 Innodb 存储引擎

3)每个子系统采用微服务方式部署

5. 质量设计

可测试性

RESTful,接口测试使用 Postman,压测 ab 命令

 

可维护性

接口文档,表结构设计

 

可观测性

服务监控:SpringBoot Actuator

日志监控:系统文件,定时切割

 

成本

架构简单,研发、测试、运维成本忽略

6. 演进规划

6.1 学生管理系统一期

完成学生管理,权限管理,以及课程管理子系统

 

6.2 学生管理系统二期

完成考试管理子系统

用户头像

刘博

关注

还未添加个人签名 2021-09-18 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营第十期模块三作业_刘博_InfoQ写作社区