写点什么

模块三作业

作者:panxiaochun
  • 2021 年 11 月 12 日
  • 本文字数:1787 字

    阅读完需:约 6 分钟

《学生管理系统详细架构设计文档》

前言

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


词汇表

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

MySQL : 一个关系型数据库管理系统

MyBatis : 一个基于 Java 的持久层框架

REST : 表示性状态转移(representation state transfer)。用 URI 表示资源,用 HTTP 方法(GET, POST, PUT, DELETE)表示对这些资源的操作。

Spring Boot : Pivotal 团队在 Spring 的基础上提供的一套全新的开源框架,其目的是为了简化 Spring 应用的搭建和开发过程。


1. 业务背景

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

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

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

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


2. 约束和限制

  1. 项目必须在 3 月内完成

  2. 成本不能超过 100 万

  3. 在校师生约 10000 人


3. 总体架构

3.1 架构分析

高可用

因为本系统仅一所学校使用,如果系统服务中断时间在 1 小时内,影响不太严重。

高性能

学生管理系统对高性能要求不高,热门课程选课最多也就几百个学生在抢。

可扩展

学校每年招生人数相对固定,可扩展要求也不高。

3.2 总体架构


  1. 使用 Nginx 作为反向代理及 http 缓存服务器。根据请求 URL 分发到相应业务子系统,并缓存静态资源。

  2. 业务子系统分学生子系统、课程子系统、权限子系统。

  3. 数据库采用 MySQL 主备模式,主数据库通过 binlog 同步数据到备数据库。


4. 详细设计

4.1 核心功能

学生子系统

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

  • 账号分配:学生账号由系统生成,给定相应权限,可进行密码更改。教师账号由管理者(教务)通过系统生成。

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

  • 组织管理层级:按学生实际情况划分归属。

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

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


课程子系统

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

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

  • 排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。

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

  • 试卷区域分割:发起考试:期中的时候,教师可以创建一次考试。

  • 平时成绩:此项功能包含学生平时所有相关成绩信息。

  • 评分判定:教师使用系统对上传的试卷分割区域作出相应的评分。


权限子系统

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

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

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

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

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

4.2 关键设计

存储可靠性

因为学校只能容忍几小时内对数据丢失,所以采用 MySQL 主备模式,如果主机出现异常无法使用,可以切到备机继续使用。

可扩展性

为了降低系统复杂度,将学生管理系统划分成 3 个子系统,互相独立开发,系统之间通过接口交互。


4.3 设计规范

  1. Nginx 通过解析请求 URL,代理至不同的服务子系统。

  2. 采用前后端分离的开发方式,各子系统对外提供 RESTful API。

  3. 各子系统使用 Spring Boot + Mybatis 开发。

  4. MySQL 使用 Innodb 存储引擎,使用 binlog 进行数据备份。


5. 质量设计

  1. 关键接口要有单元测试。

  2. 每个子系统都记录日志,以便排查问题。


6. 演进规划

一期规划

实现学生管理、课程管理、权限管理等基本功能。

二期规划

实现考试管理功能,增加后台数据统计功能。

用户头像

panxiaochun

关注

还未添加个人签名 2019.07.13 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业