写点什么

模块三作业

用户头像
NewBranSTONE
关注
发布于: 18 小时前
模块三作业

前言

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

词汇表

Nginx :异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。

Spring Boot :Spring 平台下,可以让开发者快速开发的框架。

MySQL:数据库存储服务。

1. 业务背景

经过与学校方面相关人员的沟通,校方存在以下教学问题需要解决,以及对新系统建设有以下几点期望。

  1. 当前学校缺少对学生信息的信息化管理,在每年九月需要大量的人力来完成学生信息登记任务,学生每次开学选课效率也不够高。

  2. 在校学生和老师,可以通过学生管理系统,高效地实现对学生信息、课程信息的访问和维护。提高教师安排课程效率,能检索学生学籍信息,学生能通过平台完成本学期课程选课以及期末查询考试成绩查询。

  3. 每个学期结束以后,系统能生成学生成绩的数据分析报表,通过对数据分析,能让学生自我检查学习情况和让教师对教学计划有针对性的修改。

基于以上背景,我们需要建设学生信息管理系统,以提高师生教学效率。


2. 约束和限制

  1. 学校提供的经济资源有限,需要提高每台服务器资源的利用率。

  2. 学校每年新入学和毕业离校的学生人数相对稳定,不需要太多存储空间。

  3. 不需要考虑异地建设机房。

  4. 学生和课程的数据非常重要,存储时一定要注意不允许数据丢失。


3. 总体架构

3.1 架构分析

  1. 高可用

对于学生选课来说,如果当几千名学生同时在线选课,如果有的课程因为系统原因无法正常选上,给学生和老师的教学工作带来极大的影响,容易导致学生对学校产生负面消极的情绪,同时会给教师在课程安排产生一定影响。

  1. 高性能

不需要着重考虑,实际上每个学期需要登记和选课的学生数量是一定的,如果服务器无法支持上万人的选课,可以让校方安排,不同系的学生在不同的时间段进行选课。

  1. 可扩展

目前不需要考虑,学生管理系统第一期只是作为学校内部使用的系统,根据目前的需求来看,暂时不需要跟其他业务系统产生交互。

3.2 总体架构


  1. 本项目采用不同服务部署在不同服务器上的架构,每个服务器专门负责处理一个子系统的请求。

  2. 数据库使用主从备份设计,确保学生的信息和选课数据的安全性。

  3. 在主数据库发生宕机的情况下,备份数据库对外提供读写服务。

  4. 使用 Nginx 将请求转发到对应的服务器上。

4. 详细设计

  1. 学生子系统主要是面向在校学生使用,当每年九月份有新学生入校时,需要开放页面给学生们登记信息。每个新学期开学以后,原先登记的学籍信息也应该随着改变,比如原来大一的新生在第二年之后就变成大二的学生。

  2. 课程子系统主要是面向在校学生和老师使用,在每个学期开学的时候,学生可以根据自己的兴趣爱好,选择自己想进行学习的课程。考试需要提前将课程计划安排好,并一个班能最多有多少个学生设置好。在系统实现的过程中,需要注意避免超选现象的发生。

  3. 权限子系统主要是判断访问者是否具有对应的权限访问对应的资源。

4.1 核心功能

学生选课流程

为了防止课程被超选,所以这里需要增加一些判断。

4.2 关键设计

  1. 为了防止课程不会被超选,所以需要增加锁的判断条件。

  2. 为了防止学生、课程等数据的丢失,MySQL 数据库使用主从备份,当主服务器发生问题时,从服务器提供服务。平时使用 MySQL 的主从同步机制完成不同服务器之间的数据同步。


4.3 设计规范

  1. 前后端通信使用 HTTP 和 JSON。

  2. MySQL 使用 Innodb 存储引擎。

  3. 后端服务使用 SpringBoot 开发。

  4. 前端页面使用 Vue 开发。

5. 质量设计

  1. 确保平台能支持一千人同时在线选课。

  2. 代码关键流程需要编写流程图,并将流程图存档。

  3. 实时检测 Linux 服务器运行状态。

6. 演进规划

第一期完成学生信息子系统、课程信息子系统、权限信息子系统的开发。

第二期完成智慧食堂子系统的开发,实现学生在线充值,查询饭卡余额,查询餐厅菜单的功能。


用户头像

NewBranSTONE

关注

还未添加个人签名 2017.10.27 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业