写点什么

模块三作业

用户头像
河马先生
关注
发布于: 4 小时前

1. 业务背景

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

处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本,因此需要一套学生管理系统帮助学生管理人员有效管理学生信息,实现学生信息管理的系统化、规范化和自动化。

2. 约束和限制

开发语言以 Java 为主;

开发成本不易过高;

尽可能保证数据安全;

数据库使用 mysql 数据库;

教师端和学生端功能不要相互影响;

9 月 1 日开学前希望能够投产上线

3. 总体架构

3.1 架构分析

3.1.1 高性能

学校学生加教职工大概在 1.5 万左右,系统使用者不多,并发不高,系统无明显压力。在选课场景下可以对做一些并发的程序优化处理,保证系统能够顺畅,因此在性能方面,系统没有太多的要求。

3.1.2 高可用

因为系统涉及到学生的基本信息,考试成绩和奖惩档案信息,因此在数据上面需要能够尽可能保证数据不丢失,数据高可用;在应用层面,希望教师端功能和学生端功能最好不要相互影响,学生使用和教师使用相互隔离,其他方面没有太多高可用的需求。

3.1.3 可扩展

由于目前学生信息在不但丰富,课程项目也越来越多,越来越灵活,希望后续能够保留扩展性,适应学生管理变化需要。

3.1.4 成本

由于只有一个学校使用,并且性能要求不高,所以服务器不需要部署很多,总体的成本不高,主要成本来自研发费用和后期运行维护费用。

3.1.5 安全

系统使用角色存在明显的区分,学生,教师,辅导员,各自有不同的权限范围,并且严谨越权访问,因此对于权限管理比较严格,基于角色的权限管理 + 自己修改自己管辖范围信息即可保证数据隔离安全,学生信息,分数,奖惩不太涉及到敏感性,因此其他方面安全不太涉及。

3.2 总体架构


1)采用 Nginx 作为路由网关服务,负责将请求路由转发到学生,课程和权限子系统中

2)系统按照学生信息,考试课程,权限管理功能划分为三个子系统,底层数据共享一套数据存储

3)数据库使用 MySQL,Master-Slave 形式部署,主服务器对外提供读写服务,备服务器不对外提供服务

4)主数据库服务器器故障的情况下,主备服务器切换,备服务器对外提供读写服务。

4. 详细设计

4.1 核心功能

4.1.1 学生管理

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

2)账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、 删除、查询权限。

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

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

5)文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限。

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

4.1.2 学生管理

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

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

3)排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。 排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统自动生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。

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

4.1.3 权限管理

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

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

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

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

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

4.2 关键设计

1)子系统路由

子系统分别采用不同的路径进行区分,nginx 通过不同的路径请求将请求路由转发到对应的子系统中

2)权限设计

为了能够更好的区分学生,教师,管理员,辅导员不同的权限角色,可以采用基于 RBCA 角色访问控制实现功能的权限控制,然后通过角色来区分不同身份来实现简单的数据权限控制,学生角色只能查看和修改自己信息,查看自己的成绩;教师可以查看和修改自己的信息,并且可以修改学生的成绩;辅导员可以查看学生的信息,可以设置学生的奖惩信息

4.3 设计规范

1)三个子系统后端使用 Spring Boot 开发

2)前端使用 VUE 来开发

3)前后端交互使 JSON 格式序列化方式来传输数据

4)子系统间交互使用 HTTP 协议,使用 JSON 格式传输数据

5)前端交互和服务端交互,子系统间交互使用不同域名,前端域名外网访问,服务端间调用域名内网访问

6) 前端访问应用需要权限认证

6)MySQL 使用 Innodb 存储引擎

5. 质量设计

5.1 可测试性

采用 http 接口,可以采用 POSTMAN 类似的工具进行 http 接口测试

5.2 可维护性

系统架构简单,设计到中间件较少,运维相对简单,对于各个系统应用,都有成熟的运维方案

5.2 可观测性

各个子系统规范的记录系统日志,方便问题定位和排查;并且集成基础监控,可基于主机,网络,存储,io,端口等方面的基础监控,spring boot 应用可依赖 actuator 来进行应用层面监控

5.4 成本

6 台服务器即可满足需要,1 台 nginx ,3 台用于部署业务系统,2 台用于 mysql 部署,满足基础可用需求,如果需要对应用做高可用,可以单独对应用做集群部署

6. 演进规划

6.1 学生管理系统一期

一期主要实现学生信息管理,课程和考试管理功能

6.2 学生管理系统二期

二期可以围绕学生展开更多功能,学生交流社区,在线课程学习,学生社团等功能


用户头像

河马先生

关注

还未添加个人签名 2019.04.16 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业