写点什么

模块三

发布于: 2 小时前

前言

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

 

词汇表

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

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

Python:是一种程序设计语言

Django:基于 python 语言的 web 开发框架

RPC:是远程过程调用

 

1. 业务背景

学生管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生日常管理工作及保存管理日趋繁重、复杂。迫切需要研制开发一款功能强大,操作简单,具有人性化的学生成绩管理系统。

本系统主要是应用于学生各类信息的管理,通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

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

 

2. 约束和限制

至少需要有三种角色,学生、老师、管理员,每个角色权限不一样

不开放注册功能,老师账号由管理员分配,学生账号由老师分配

反向代理采用 Nginx

数据库采用 Mysql,主备模式保证数据高可用

模块化开发,方便后续扩展

团队成员主要编程语言为 Python,采用 Django 框架

成本要尽可能低

 

3. 总体架构



学生系统

学生系统主要用于管理学生信息,学生账号由老师进行分配,学生可以登录系统查看并修改自己的个人信息

课程系统

课程信息有管理员统一录入系统并对老师、教室、时间进行统一规划安排,学生可以根据自己的专业和兴趣进行课程选择,并在学期中及期末参加考试。老师可以针对课程发起考试,并对学生的成绩进行评定。

权限系统                  

系统主要分为管理员、老师、学生三个角色,老师角色账号由管理员进行分配,学生账号由老师进行分配,每个角色对应的权限不一致。老师可以发起考试,学生只能参加考试。老师可以判定及修改学生的成绩,学生只能查看自己的成绩。

3.1 架构分析

高可用

学生数据丢失后补录比较麻烦,需要对数据存储做主备保证数据的高可用;对于学生管理系统而言,有几个小时甚至一天的无法访问影响不是很大,所以暂不考虑业务系统的高可用。

高性能

学校的用户不会太多,学期选课和期末考试完之后查分的时候请求会比较多,但是 TPS、QPS 不会太高,所以第一个版本暂不考虑高性能

可扩展

当前系统只包含学生系统、课程系统、权限系统,后续可能会添加其他功能模块如聊天模块等,需要考虑后续的扩展

可维护性

由于使用者是学校的老师及学校的系统管理员等非专业人员,所以需要提高系统的可维护性,方便学校相关人员的使用及维护

安全

为了保护学生的个人信息安全,需要考虑学生的个人信息不能泄露

成本

本系统功能比较简单,学校的预算也会比较少,需要控制开发成本

 

3.2 总体架构


1)     采用分模块系统设计,将系统拆分为学生子系统、课程子系统、权限子系统三个模块

2)     前端使用 Nginx 作为反向代理服务器,根据请求 url 进行转发

3)     数据库存储包含一台主 MySQL 和一台备 MySQL,主备数据复制

4)     模块间信息交互采用 rpc 方式调用

 

4. 详细设计

4.1 核心功能

系统登录

所有角色用户都提供登录功能,用户角色不同权限也不一样,登录后看到的菜单也不一样。

账号分配

教师账号由管理员通过系统生成,生成后教师可以通过前台登录页面进行登录。教师可以给学生分配账号,可以通过导入 excel 的方式批量添加学生账号,教师和学生不提供注册功能

组织架构管理

系统管理用可以创建、修改、删除本校的组织架构,老师用户可以查看组织架构并把学生加入到相应的班级下面

信息修改

用户登录后可以修改自己的个人信息,如手机号,微信号等,用户也可以修改自己的密码,高权限用户可以重置低权限用户的密码。

权限管理

管理员账号拥有本系统的所有权限,老师账号能够管理学生账号(如修改成绩、设置奖惩信息等),学生账号只能修改自己的个人信息及查看课程及成绩信息。

课程录入

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

排课

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

课程查询

学生可以查询课程信息(含课程体系、课时安排、课表、教师、教材等)、也可以查询课程考试信息及成绩

选课

学生可以根据自己的专业及兴趣在线对自己的课程体系进行选择

试题管理

老师角色用户可以创建、编辑、删除试题,并设定试题对应的知识点、难度等信息

创建考试

教师用户可以在日常及期中期末的时候发起考试,可以根据课程自动生成试卷

考试评分

学生考试完成后,教师用户需要对试卷进行批改,并将考试成绩录入系统

查看考试

学生用户可以查看自己的考试成绩

 

4.2 关键设计

 

1)RPC 调用可靠性

模块之间的信息交互采用 RPC 框架进行交互,RPC 可以保证不同服务之间的互相调用,需要保证在不可靠网络中 RPC 调用的可靠性,支持超时重试机制。

2)数据存储可靠性

系统数据存储在 MySQL 中,包含一主一备两台 MySQL 服务器,MySQL 服务器之间复制数据以保证数据存储高可用。如果主备间出现复制延迟,恰好此时 MySQL 主服务器宕机导致数据无法恢复,则部分数据会永久丢失,这种情况不做针对性设计,DBA 需要对主备间的复制延迟进行监控,当复制延迟超过 30 秒的时候需要及时告警并进行处理。

3)数据如何存储

由于数据量较小,所以所有模块使用同一个数据库,对应不同的 MySQL 表

 

4.3 设计规范

1)RPC 框架使用 gRPC,底层协议采用 http 协议

2)MySQL 使用 Innodb 存储引擎

3)Web 框架使用 Django 框架,ORM 采用 django 自带的 ORM 框架

4)各个子系统设置不同的 url 前缀,nginx 通过 url 来分发请求

5. 质量设计

5.1 系统管理后台

提供管理后台,用户管理员登录系统进行账号管理、课程管理、系统运行日志查看等操作,同时老师用户可以通过管理后台进行试题管理、考试管理、评分管理、学生管理等操作。

 

6. 演进规划

6.1 试题共享

老师用户之间可以共享试题库,这样就不用相同课程不同老师上传相同的试题了,生成试卷的时候也可以试题其他老师上传的题库进行生成

6.2 练习功能

老师可以开放一些判断或者填空题供学生课后自行练习,学生提交答案后系统能够自动判断对错,并提供正确答案及题目分析供学生参考学习

6.3 聊天功能

二期系统将加入聊天功能,学生可以在线与老师进行聊天咨询问题等,学生之间也可以进行聊天互相学习

 

发布于: 2 小时前阅读数: 3
用户头像

还未添加个人签名 2020.05.22 加入

还未添加个人简介

评论

发布
暂无评论
模块三