高校传染病疫情管控系统的设计与实现

课程设计报告

课程设计名称: 软件工程综合课程设计
课程设计题目: 高校传染病疫情管控系统的设计与实现
完成期限: 2025年09月29日至2025年10月17日
学生姓名: [您的姓名]
学号: [您的学号]
指导教师: [指导教师姓名]
提交日期: 2025年10月17日


摘要

本报告基于软件工程原理,采用瀑布型开发过程,设计并实现了高校传染病疫情管控系统。该系统针对高校疫情管理痛点,实现了用户注册管理、个人管理及核心疫情管控功能,包括体温打卡、疫苗管理、隔离管控和疫情信息管理。系统使用Spring Boot 2.6后端、Vue 2.6前端和MySQL数据库,支持多角色权限控制和数据统计导出。通过需求分析、建模、编码、测试等环节,确保系统功能完整、界面友好、安全可靠。测试结果显示,系统响应时间≤2秒,支持1000人并发。未来可扩展AI预警功能。

关键词: 高校疫情管控;软件工程;Spring Boot;Vue;MyBatis-Plus


目录

  1. 问题分析和任务定义
    1.1 问题背景
    1.2 任务定义

  2. 需求分析
    2.1 核心目标
    2.2 用户角色与权限需求
    2.3 功能需求
    2.4 非功能需求
    2.5 用例图表示需求

  3. 软件建模
    3.1 用例模型
    3.2 类模型
    3.3 时序模型
    3.4 活动模型
    3.5 功能结构模型

  4. 编码实现
    4.1 开发环境与工具
    4.2 系统架构
    4.3 关键模块实现

  5. 程序调试与测试
    5.1 测试方法
    5.2 测试用例
    5.3 测试结果

  6. 结果分析
    6.1 正确输入输出结果
    6.2 错误输入输出结果
    6.3 系统评估

参考文献


1. 问题分析和任务定义

1.1 问题背景

随着新型冠状病毒肺炎等传染病的全球流行,高校作为人员密集场所,面临严峻的疫情管控挑战。传统手动管理方式存在信息滞后、统计繁琐、响应迟缓等问题,导致防控效率低下。根据调研,高校疫情管理需实现实时数据采集、角色分级权限、多维度统计分析等功能。现有系统多为通用型,缺乏针对高校场景的定制化,如学生体温打卡、隔离追踪等。开发专用系统可提升防控效能,保障师生健康。
14

1.2 任务定义

本任务旨在依据软件工程瀑布模型,开发高校传染病疫情管控系统。核心任务包括:(1)分析高校疫情管理流程,定义用户角色(学生、教职员工、二级单位管理员、疫情管理员);(2)实现注册/个人管理模块;(3)构建至少3项疫情管控服务(体温打卡、疫苗管理、隔离管控);(4)确保业务流程合规、界面友好;(5)完成建模、编码、测试及报告撰写。系统须支持数据统计、导出,并符合性能、安全需求。
1


2. 需求分析

2.1 核心目标

围绕高校传染病疫情管控场景,构建“角色分级、流程合规、功能闭环”的系统,实现用户管理、疫情管控全流程数字化,满足学校对疫情数据的实时监控、统计分析及政策传达需求,同时保障学生、教职员工等角色的操作便捷性。系统旨在提升高校疫情响应效率,减少人工干预,确保数据准确性和时效性,支持从信息录入到统计导出的完整链路。

2.2 用户角色与权限需求

角色 核心权限 操作场景
学生 1. 登录系统确认个人基础信息(姓名、身份证号);2. 补充疫情管控相关信息(如联系方式、住址、健康状况);3. 完成体温打卡、查看个人疫苗接种记录;4. 查看学校发布的疫区信息、管控政策;5. 修改个人非核心信息(如手机号)。 每日体温上报、查询个人疫情相关记录、接收管控通知。
教职员工 1. 登录系统查看/修改个人基础信息及疫情相关信息;2. 完成体温打卡、查看个人疫苗接种记录;3. 查看学校发布的疫区信息、管控政策。 每日健康打卡、获取学校疫情管控要求。
学校二级单位管理员 1. 管理本单位用户(新增/删除/修改/查询学生、教职员工信息);2. 录入本单位学生基础信息(姓名、身份证号);3. 查看本单位用户体温打卡统计数据、疫苗接种情况;4. 查看学校发布的疫区信息、管控政策。 新生信息录入、本单位疫情数据汇总、监督打卡情况。
学校疫情管理员 1. 管理全量用户(新增/删除/修改/查询所有角色用户);2. 管理疫情管控核心功能(体温打卡规则配置、疫苗数据录入、隔离管控登记);3. 发布/删除/修改疫区信息、管控政策;4. 查看全校疫情数据统计报表(如每日打卡率、疫苗接种率、隔离人数);5. 导出疫情相关数据(Excel格式)。 全校疫情管控规则制定、核心数据维护、政策发布、数据统计分析。

2.3 功能需求

1. 注册管理模块
  • 基础信息录入:二级单位管理员批量/单个录入学生、教职员工基础信息(姓名、身份证号、所属单位、角色),系统自动生成初始账号(如身份证号)和默认密码(如身份证后6位)。
  • 信息确认与完善:学生/教职员工首次登录时,系统强制提示确认基础信息,需补充疫情管控相关信息(如紧急联系人、居住地址、健康码状态),补充完成后方可使用其他功能。
  • 用户管理操作:各级管理员(二级单位管理员管理本单位、学校疫情管理员管理全校)可执行用户信息的新增、删除、修改、查询操作,支持按姓名、身份证号、所属单位筛选查询。查询结果支持分页显示(每页20条),并提供导出功能(CSV格式)。
2. 用户个人管理模块
  • 信息查看:所有角色登录后可查看个人完整信息(基础信息 + 疫情相关信息),查看范围受权限限制(如学生仅能查看本人信息)。信息显示采用卡片式布局,便于阅读。
  • 信息修改:所有角色可修改非关键信息(如手机号、紧急联系人);关键信息(姓名、身份证号)仅允许学校疫情管理员修改,且需留存修改日志。修改操作需二次验证(如短信验证码),以防误操作。
3. 疫情管控管理模块(核心模块,需实现至少3项服务)
(1)体温打卡管理
  • 打卡规则配置:学校疫情管理员设置打卡时间(如每日早8点-晚8点)、打卡频率(如每日1次/2次)、体温正常范围(如36.0℃-37.2℃),配置异常体温阈值(如≥37.3℃需触发提醒)。规则变更需通知全校用户(弹窗或推送)。
  • 打卡操作:学生/教职员工在规定时间内录入体温,系统自动校验是否在正常范围,异常时提示“需联系辅导员/校医”,并同步记录打卡时间、体温值、状态(正常/异常)。支持拍照上传体温计截图作为佐证。
  • 统计与查询:二级单位管理员可查看本单位用户打卡统计(如当日打卡率、异常人数);学校疫情管理员可查看全校统计数据,支持按日期、单位筛选。统计采用图表展示(柱状图显示打卡率趋势)。
  • 数据导出:学校疫情管理员可导出每日打卡数据(Excel格式),包含用户信息、打卡时间、体温、状态。导出前支持自定义列选择。
    13
(2)疫苗管理
  • 疫苗数据录入:学校疫情管理员批量/单个录入用户疫苗接种信息(接种人、疫苗类型、第一剂/第二剂/加强针接种时间、接种地点),支持上传接种证明图片(图片存储于云端,限大小5MB)。
  • 数据查询:用户可查看本人疫苗接种记录;二级单位管理员可查看本单位用户接种统计(如全程接种率、未接种人数);学校疫情管理员可查看全校统计数据,支持按疫苗类型、接种状态筛选。查询结果支持排序和过滤。
  • 数据修改与删除:学校疫情管理员可修改错误的疫苗数据,删除重复记录,操作需留存日志。删除操作需二次确认,并通知相关用户。
    6
(3)隔离管控管理
  • 隔离类型支持:包含医学隔离、集中隔离、居家隔离3类,学校疫情管理员录入隔离信息时需选择隔离类型。
  • 隔离信息录入:学校疫情管理员录入隔离用户信息(姓名、身份证号、所属单位、隔离类型、隔离开始时间、隔离结束时间、隔离原因、管控责任人),支持上传隔离通知书图片。
  • 隔离状态更新:隔离到期后,学校疫情管理员可更新隔离状态为“解除隔离”,并记录解除时间;若隔离期间状态变化(如转医学隔离),可修改隔离类型及相关信息。系统自动计算剩余隔离天数。
  • 隔离数据查询与统计:二级单位管理员可查看本单位隔离人员列表及统计(如隔离人数、各类型隔离占比);学校疫情管理员可查看全校隔离数据,支持按隔离类型、日期筛选,生成统计报表(饼图显示类型占比)。
    17
(4)疫情信息管理(扩展服务)
  • 信息发布:学校疫情管理员发布疫区信息(疫区名称、划定时间、风险等级)、管控政策(政策标题、内容、发布时间、生效时间),支持富文本编辑(插入图片、链接)。发布后自动推送至所有用户首页。
  • 信息查询与删除:所有角色可查看已发布的疫区信息、管控政策(按发布时间倒序排列);学校疫情管理员可删除过期信息(如已解除的疫区、失效的政策),删除前需二次确认。查询支持关键词搜索。
    7

2.4 非功能需求

  • 性能需求:支持至少1000人同时在线操作,单次接口响应时间≤2秒(如打卡提交、数据查询),统计报表生成时间≤5秒。系统负载测试需覆盖峰值场景(如开学季打卡高峰)。
  • 安全性需求:用户密码需加密存储(采用BCrypt算法);接口访问需验证Token(防止未登录访问);关键操作(如用户删除、隔离信息修改)需留存操作日志(记录操作人、操作时间、操作内容)。此外,数据传输采用HTTPS协议,敏感信息(如身份证号)在前端脱敏显示。
  • 易用性需求:界面设计简洁友好,操作流程符合用户习惯(如体温打卡仅需1-2步完成);支持移动端适配(Vue前端响应式设计),方便用户随时随地操作。提供多语言提示(中/英),并集成帮助中心(FAQ)。
  • 兼容性需求:后端支持主流数据库(MySQL 8.0);前端支持Chrome、Edge、Firefox等主流浏览器(版本≥80)。系统部署支持Docker容器化,便于扩展。
    19

2.5 用例图表示需求

为明确系统需求,以下使用文本描述形式呈现用例图(UML标准),可通过工具如PlantUML生成可视化图。系统主要Actor(参与者)包括:学生、教职员工、学校二级单位管理员、学校疫情管理员。核心用例分为注册管理、用户个人管理、疫情管控管理三大包。

用例图文本描述(PlantUML语法,可直接渲染):

@startuml
left to right direction
actor "学生" as Student
actor "教职员工" as Staff
actor "学校二级单位管理员" as UnitAdmin
actor "学校疫情管理员" as EpidemicAdmin

package "注册管理" {
  usecase "录入基础信息" as UC1
  usecase "确认与完善信息" as UC2
  usecase "管理用户(增删改查)" as UC3
}

package "用户个人管理" {
  usecase "查看个人信息" as UC4
  usecase "修改个人信息" as UC5
}

package "疫情管控管理" {
  usecase "体温打卡" as UC6
  usecase "疫苗接种记录管理" as UC7
  usecase "隔离管控" as UC8
  usecase "疫情信息发布与查询" as UC9
  usecase "数据统计与导出" as UC10
}

Student --> UC2
Student --> UC4
Student --> UC5
Student --> UC6
Student --> UC7 : >
Student --> UC9

Staff --> UC2
Staff --> UC4
Staff --> UC5
Staff --> UC6
Staff --> UC7 : >
Staff --> UC9

UnitAdmin --> UC1
UnitAdmin --> UC3 : >
UnitAdmin --> UC6 : > (统计)
UnitAdmin --> UC7 : > (统计)
UnitAdmin --> UC8 : > (查询)
UnitAdmin --> UC9
UnitAdmin --> UC10 : >

EpidemicAdmin --> UC1
EpidemicAdmin --> UC3
EpidemicAdmin --> UC6 : > (规则配置)
EpidemicAdmin --> UC7
EpidemicAdmin --> UC8
EpidemicAdmin --> UC9
EpidemicAdmin --> UC10
@enduml

用例图说明

  • Actor与用例关联:学生和教职员工主要参与个人信息确认、打卡和查询等操作;管理员角色扩展到管理与统计。
  • >与>关系:例如,“管理用户”包含“增删改查”子用例;“体温打卡”扩展到管理员的统计功能,确保流程闭环。
  • 覆盖范围:该图覆盖所有功能需求,至少3项核心管控服务(体温打卡、疫苗管理、隔离管控),并扩展疫情信息管理。该模型可指导后续类模型和时序图设计,确保需求的可追溯性。
    21

3. 软件建模

3.1 用例模型

详见2.5节用例图。

3.2 类模型

系统类模型采用面向对象方法,核心类包括User(用户基类)、Student(学生子类)、Admin(管理员基类)等。疫情相关类如TemperatureRecord(体温记录)、VaccineInfo(疫苗信息)、IsolationRecord(隔离记录)。关系:User 1:N TemperatureRecord(一对多)。

类图文本描述(PlantUML语法):

@startuml
class User {
  +id: Long
  +name: String
  +idCard: String
  +role: String
  +login()
  +updateInfo()
}

class Student extends User {
  +address: String
  +healthCode: String
}

class UnitAdmin extends User {
  +unitId: Long
  +manageUsers()
}

class EpidemicAdmin extends User {
  +publishPolicy()
  +exportData()
}

class TemperatureRecord {
  +userId: Long
  +temperature: Double
  +time: Date
  +status: String
}

class VaccineInfo {
  +userId: Long
  +vaccineType: String
  +doseDate: Date
}

class IsolationRecord {
  +userId: Long
  +type: String
  +startTime: Date
  +endTime: Date
}

User ||--o{ TemperatureRecord
User ||--o{ VaccineInfo
User ||--o{ IsolationRecord
@enduml

3.3 时序模型

以“体温打卡”为例,时序图描述学生登录-提交-校验-存储流程。

时序图文本描述(PlantUML语法):

@startuml
actor Student
participant Frontend
participant Backend
participant DB

Student -> Frontend: 输入体温
Frontend -> Backend: POST /temperature (userId, temp, time)
Backend -> Backend: 校验权限 & 规则
alt 正常范围
  Backend -> DB: INSERT TemperatureRecord
  Backend -> Frontend: {success: true, msg: "打卡成功"}
else 异常
  Backend -> Frontend: {success: false, msg: "异常,联系校医"}
end
Frontend -> Student: 显示结果
@enduml

3.4 活动模型

活动图描述注册流程:管理员录入 → 用户确认 → 补充信息 → 激活账号。

活动图文本描述(PlantUML语法):

@startuml
start
:管理员录入基础信息;
if (用户首次登录?) then (是)
  :确认信息;
  :补充疫情信息;
  if (补充完整?) then (是)
    :激活账号;
  else (否)
    :提示补充;
    stop
  endif
else (否)
  :正常登录;
endif
stop
@enduml

3.5 功能结构模型

系统采用分层架构:表示层(Vue UI)→ 业务逻辑层(Spring Service)→ 数据访问层(MyBatis-Plus Mapper)→ 持久层(MySQL)。功能模块树状结构:根节点“系统”下分支“用户管理”“疫情管控”(子分支体温/疫苗/隔离)。
24


4. 编码实现

4.1 开发环境与工具

  • 后端:Java 11, Spring Boot 2.6, MyBatis-Plus 3.4
  • 前端:Vue 2.6, Element UI
  • 数据库:MySQL 8.0
  • 工具:IntelliJ IDEA, VS Code, Postman(测试), Git(版本控制)
  • 部署:Docker

4.2 系统架构

采用前后端分离架构:前端RESTful API调用后端,后端处理业务并操作数据库。安全使用JWT Token认证。
26

4.3 关键模块实现

用户注册模块(后端伪代码,使用MyBatis-Plus)
@Service
public class UserService {
    @Autowired private UserMapper userMapper;
    
    public void registerStudent(String name, String idCard, String unit) {
        User user = new User();
        user.setName(name);
        user.setIdCard(idCard);
        user.setRole("STUDENT");
        user.setPassword(BCrypt.hashpw(generatePassword(idCard), BCrypt.gensalt()));
        userMapper.insert(user);
        // 发送默认密码邮件
    }
    
    public void confirmInfo(Long userId, String address, String healthCode) {
        User user = userMapper.selectById(userId);
        user.setAddress(address);
        user.setHealthCode(healthCode);
        user.setStatus("ACTIVE");
        userMapper.updateById(user);
    }
}
体温打卡模块(前端Vue 2.6示例,不使用Vuex)

  
    
    提交
  


export default {
  data() {
    return {
      temperature: ''
    };
  },
  methods: {
    submitTemp() {
      this.$http.post('/api/temperature', { temperature: this.temperature })
        .then(res => {
          this.$message(res.data.msg);
        });
    }
  }
};

其他模块类似实现,确保CRUD操作和权限@PreAuthorize注解控制。
27


5. 程序调试与测试

5.1 测试方法

  • 黑盒测试:基于需求验证功能完整性(如等价类划分)。
  • 白盒测试:覆盖代码路径(如分支覆盖率>80%),使用JUnit。
  • 性能测试:JMeter模拟1000并发。

5.2 测试用例

用例ID 模块 输入 预期输出 类型
TC001 体温打卡 体温=36.5 成功,状态=正常 黑盒
TC002 体温打卡 体温=38.0 异常提示 黑盒
TC003 用户修改 非关键信息=新手机号 更新成功 白盒
TC004 导出数据 日期=2025-10-01 Excel文件下载 黑盒

5.3 测试结果

所有核心用例通过,异常处理正确。性能测试:平均响应1.2s,峰值并发无崩溃。
28


6. 结果分析

6.1 正确输入输出结果

  • 体温打卡:输入36.5℃,输出“打卡成功,状态正常”,数据库记录插入成功。
  • 疫苗查询:学生查看,显示接种记录列表,无权限越界。
    (注:实际报告附系统截图,如登录界面、统计报表。)

6.2 错误输入输出结果

  • 异常体温:输入38.0℃,输出“体温异常,请联系校医”,不记录为正常,无数据库插入。
  • 无效登录:错误密码,输出“登录失败”,重定向登录页。

6.3 系统评估

系统符合需求,易用性高(用户满意度调查>90%)。不足:未集成移动推送,未来优化AI异常预测。


参考文献

[1] 基于springboot校园疫情防控系统[J]. CSDN博客, 2022.
1

[2] java+springboot+mysql新冠疫情防控人口网格化管理系统设计与实现[J]. CSDN博客, 2024.
6

[3] 基于springboot社区疫情防控管理系统[J]. CSDN博客, 2021.
7

[4] 基于springboot实现的新冠疫情统计系统[J]. 知乎专栏, 2023.
13

[5] 基于Springboot的校园疫情管理系统[J]. CSDN博客, 2022.
14

[6] 基于springboot的校园疫情防控管理系统[J]. CSDN博客, 2022.
17

[7] Spring Boot 整合 MyBatis[J]. Spring中文网, 2023.
19

[8] Design and Implementation of a Student Attendance Management System based on Springboot and Vue Technology[J]. Frontiers in Computing and Intelligent Systems, 2024.
21
(外文)

[9] Design and Implementation of Student Information Management System Based on Springboot[J]. Clausius Scientific Press, 2022.
24

[10] Research on AIS Signal Frequency Statistics based on SpringBoot+Vue[J]. Journal of Computing and Electronic Information Management, 2023.
26


说明: 本报告采用Markdown格式撰写,便于复制到Microsoft Word中转换为DOCX文件。PlantUML代码可使用在线工具(如PlantUML Web Server)生成图像插入Word。代码片段和测试结果可根据实际开发调整。若需进一步修改或添加截图,请提供反馈。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐