模块三作业
《学生管理系统详细架构设计文档》
前言
本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发、测试和运维。
词汇表
Nginx : 一个高性能的 HTTP 和反向代理 web 服务器
MySQL : 一个关系型数据库管理系统
MyBatis : 一个基于 Java 的持久层框架
REST : 表示性状态转移(representation state transfer)。用 URI 表示资源,用 HTTP 方法(GET, POST, PUT, DELETE)表示对这些资源的操作。
Spring Boot : Pivotal 团队在 Spring 的基础上提供的一套全新的开源框架,其目的是为了简化 Spring 应用的搭建和开发过程。
1. 业务背景
随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。
为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。
因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。
本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。
2. 约束和限制
项目必须在 3 月内完成
成本不能超过 100 万
在校师生约 10000 人
3. 总体架构
3.1 架构分析
高可用
因为本系统仅一所学校使用,如果系统服务中断时间在 1 小时内,影响不太严重。
高性能
学生管理系统对高性能要求不高,热门课程选课最多也就几百个学生在抢。
可扩展
学校每年招生人数相对固定,可扩展要求也不高。
3.2 总体架构
使用 Nginx 作为反向代理及 http 缓存服务器。根据请求 URL 分发到相应业务子系统,并缓存静态资源。
业务子系统分学生子系统、课程子系统、权限子系统。
数据库采用 MySQL 主备模式,主数据库通过 binlog 同步数据到备数据库。
4. 详细设计
4.1 核心功能
学生子系统
系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。
账号分配:学生账号由系统生成,给定相应权限,可进行密码更改。教师账号由管理者(教务)通过系统生成。
账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。
组织管理层级:按学生实际情况划分归属。
文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输。
信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查询。
课程子系统
课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。
选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。
排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。
教材选择:此功能由教务统一管理,根据每门课程选定相应教材。
试卷区域分割:发起考试:期中的时候,教师可以创建一次考试。
平时成绩:此项功能包含学生平时所有相关成绩信息。
评分判定:教师使用系统对上传的试卷分割区域作出相应的评分。
权限子系统
系统使用者有学生、教师、管理员、辅导员。
学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。
学生只能查看自己的成绩,教师可以修改学生的成绩。
辅导员可以查看学生的信息,可以设置学生的奖惩信息。
教师可以上传考试试题,学生可以做题。
4.2 关键设计
存储可靠性
因为学校只能容忍几小时内对数据丢失,所以采用 MySQL 主备模式,如果主机出现异常无法使用,可以切到备机继续使用。
可扩展性
为了降低系统复杂度,将学生管理系统划分成 3 个子系统,互相独立开发,系统之间通过接口交互。
4.3 设计规范
Nginx 通过解析请求 URL,代理至不同的服务子系统。
采用前后端分离的开发方式,各子系统对外提供 RESTful API。
各子系统使用 Spring Boot + Mybatis 开发。
MySQL 使用 Innodb 存储引擎,使用 binlog 进行数据备份。
5. 质量设计
关键接口要有单元测试。
每个子系统都记录日志,以便排查问题。
6. 演进规划
一期规划
实现学生管理、课程管理、权限管理等基本功能。
二期规划
实现考试管理功能,增加后台数据统计功能。
评论