当前位置:网站首页>外包学生管理系统架构文档
外包学生管理系统架构文档
2022-08-02 10:30:00 【InfoQ】

前言
修订历史
词汇表
1. 业务背景
- 效率低:教师需要手动将学生的个人信息、选课信息、考试信息等录入表格, 效率低;
- 扩展难:
- 易出错: 因为都是手动录入, 极易出现录入错误;
- 维护难: 由于信息之间关系较多, 数据分析难度较大, 信息变更流程复杂;
2. 约束和限制
- 外包方案需在2022年8月4日前完成;
- ISO9001质量体系标准;
- 数据库采用MySQL;
- 学校维护团队擅长java
3. 总体架构

3.1 架构分析
3.1.1 高可用
3.1.2 高性能
3.1.3 可扩展
3.1.4 成本
3.1.4 安全
3.2 总体架构
- 采用微服务的架构, 将系统分为学生子系统、课程子系统、权限子系统.
- 3个子系统共用一台主MySQL和一台备MySQL, 主备数据复制. 主MySQL负责读写, 备MySQL只负责读.
- 通过nginx进行服务分发, 实现外部于内部子系统交互.

4. 详细设计
4.1 核心功能
4.1.1 学生学籍信息录入流程
- 学生将自己的信息在学籍系统中进行录入, 包括学院、专业、教育经历等, 保存在数据库中;
- 教师对学生录入的信息进行检查, 对于有疑问的信息和学生沟通后进行更正;
- 系统提供向导功能;
4.1.2 学生选课流程
- 学校将课程信息录入在选课系统中;
- 学生登录系统选课模块;
- 学生进行必修、选修课的选择, 包括课程老师、上课地点、上课时间等, 保存在数据库中;
- 学生需在指定的时间段内登录系统进行选课, 非此时段不能选择;
- 系统提供向导功能;
4.1.3 学生成绩录入流程
- 教师登录系统
- 教师完成对自己学科的成绩信息录入
- 教师需在指定的时段内完成学生成绩录入
4.2 关键设计
4.2.1
学生信息存储的可靠性
4.2.2 信息录入的可靠性
4.2.3 系统的可扩展性
4.2.4 系统的安全性
4.3 设计规范
- 使用Linux CentOS 进行项目部署;
- 前端页面spring boot完成项目搭建;
- 学生子系统、课程子系统、权限子系统均使用java语言进行开发, 子系统间基于zookeeper协议实现子系统之间的交互;
- 服务端3个子系统共用一台主MySQL和一台备MySQL, 主备数据复制. 主MySQL负责读写, 备MySQL只负责读;
- 前端通过nginx代理转到服务端.
5. 质量设计
5.1 可测试性
5.2 可维护性
5.3 可观测性
6. 演进规划
6.1 外包管理系统1期
6.2 外包管理系统2期
边栏推荐
- 只问耕耘,不问收获,其实收获却在耕耘中
- You Only Hypothesize Once: 用旋转等变描述子估计变换做点云配准(已开源)
- games202:三,实时环境光照IBL + PRT
- 众城优选系统开发功能
- 博云入选Gartner中国DevOps代表厂商
- 你好,我的新名字叫“铜锁/Tongsuo”
- LayaBox---TypeScript---高级类型
- Rear tube implements breadcrumb function
- 斯皮尔曼相关系数
- iNFTnews | Seeing the two sides of the metaverse, what is the true Internet and the Internet of value?
猜你喜欢

多大数量级会出现哈希碰撞

MSYS2 QtCreator Clangd 代码分析找不到 mm_malloc.h的问题补救

Hello, my new name is "Bronze Lock/Tongsuo"

你好,我的新名字叫“铜锁/Tongsuo”

全新荣威RX5,27寸大屏吸引人,安全、舒适一个不落

重磅大咖来袭!阿里云生命科学与智能计算峰会精彩内容剧透

MySQL模糊查询性能优化

Long battery life or safer?Seal and dark blue SL03 comparison shopping guide

5G基础学习1、5G网络架构、网络接口及协议栈

You Only Hypothesize Once: 用旋转等变描述子估计变换做点云配准(已开源)
随机推荐
LayaBox---TypeScript---Decorator
logo 图标(php图片加文字水印)
npm ERR! 400 Bad Request - PUT xxx - Cannot publish over previously published version “1.0.0“.
The R language uses the rollapply function in the zoo package to apply the specified function to the time series in a rolling manner and the window moves, and set the align parameter to specify that t
yolov7 innovation point
npm ERR! 400 Bad Request - PUT xxx - Cannot publish over previously published version “1.0.0“.
开源一夏 | GO语言框架中如何快速集成日志模块
SVN如何删除文件名包含空格的文件
MySQL模糊查询性能优化
Verilog's random number system task----$random
R language time series data arithmetic operation: use the log function to log the time series data, and use the diff function to calculate the successive difference of the logarithmic time series data
多大数量级会出现哈希碰撞
R language ggplot2 visualization: use the ggtexttable function of the ggpubr package to visualize tabular data (directly draw tabular graphs or add tabular data to images), use tbody_add_border to add
你好,我的新名字叫“铜锁/Tongsuo”
R language ggplot2 visualization: use the ggbarplot function of the ggpubr package to visualize the stacked bar plot, the lab.pos parameter specifies the position of the numerical label of the bar cha
Linux系统卸载,安装,升级,迁移clickHouse数据库
Why use BGP?
armv7与armv8的区别(v8和w12的区别)
DirectX修复工具增强版「建议收藏」
循环语句综合练习