疫情上报系统
一、项目需求
- 通过在线网络,及时掌握学生每日健康状况。
- 解决传统健康信息上报问题。传统上报,复杂繁琐,上报信息不能及时汇总,异常信息不能及时传达,效率低下。
- 预防新冠疫情,能够对异常信息及时排除、早发现、早治疗、早隔离、早诊断。
二、项目功能
学生端:
-
用户登录
-
信息上报
职工端:
-
信息查看
-
提醒上报 [未开发]
-
人员管理 [增删改未开发]
-
名单录入
-
报单导出
管理员端:[未开发]
- 对职工的管理功能
- …
三、概要设计
1. 学生端
手机或电脑登录上报网址,进行信息上报。
学生端流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkBMYTAJ-1592224227665)(/doc/业务流程图.png)]
2. 职工端
项目的重点设计主要是在职工端,职工端涉及的功能模块也比较多。因为要完成对学生信息的录入,上报信息的管理,以及异常信息的处理。
功能模块图如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NzxYq6SF-1592224227669)(/doc/staff_guid.png)]
3. 数据库表结构设计
初步设计
- 上报信息表(report_record):存储学生登记信息。
- 学生信息表(student):记录学生基本信息,默认学号即为学生的账号,不再为学生建立账户信息。(不存在注册操作,职工导入学生名单后,账户即生效!)
- 职工表(staff):存储职工基本信息,学生的管理员。
- 院系表(department):存储部门信息。
- 平台账号信息表(local_auth):记录用户密码账号等信息。(学生存在默认账号,职工账号记录需要存在其中,并且存在相应的权限字段,用以区分是否为super_admin)
四、详细设计
1. 前台(学生端)
-
登录模块
学生使用学号进行登录,登录成功,跳转至登记信息页面;否则,重新登录。
-
信息登记
学生登录成功后,登记页面有显示学生的基本信息,包括学号部门等,当然学生可以对自己的班级进行选择,比如调班了不属于该班级了(情况很少,一般不建议改动)。学生填报完所有带有红色*星标的字段信息之后,方可提交,否则提交失败,若提交成功后,会给予成功提示!
若用户重复上报,最后一次的上报信息会覆盖前一次的上报信息或者只允许用户上报一次(使用拦截器解决用户重复上报问题和未登录就访问上报网址等问题)。
2. 后台(职工|管理员)
-
登录模块
职工端利用超级管理员下发的账号进行登录,该账号关联了职工的基本信息,登录成功后跳转至后台首页。
-
后台首页
-
部门上报信息概览
展示职工所属部门今日上报情况,已上报、未上报、体温异常等信息。
-
班级上报信息概览
列出职工所在部门下所有班级的上报情况,并以进度条的形式展示当前班级的上报进度。职工仅可对自己的班级进行点击查看上报情况,不允许查看其他班级的详细上报情况。
-
-
学生端
- 上报信息
- 信息查看:职工可查看所管理班级的上报情况,并支持分页查询。
- 上报通知:职工可对未上报的学生进行通知(发送邮件信息、或者发送短信息)
- 信息导出:导出指定班级下的今日上报信息。
- 人员管理
- 增删改查:人员的增删改查基本操作,以对话框的形式进行设计。
- 名单录入:职工可对学生名单为空的班级进行录入,多次录入的判断。
- 上报信息
-
管理员
- 未开发
3. 数据库详细设计
刚开始初步设计的表结构和实体对开发不是那么有利,刚开始单独几个表单单几个字段没多大用处,随着项目集成越来越多的功能,之前的表结构字段不得不进行改造,截止到现在,表结构暂且不是一个绊脚石,各个字段都各有用处。
表结构展示
1)department表
2)grade表
3)student表
4)staff表
5)report_record表
6)local_auth表
MysqlWorkBench逆向工程生成的表之间的关联图表
五、编程实现
1. 环境搭建
maven构建项目添加SSH框架所需依赖,添加每一层相关的配置文件,主要有struts.xml、applicationContext.xml、hibernate.cfg.xml,如果配置了连接池、日志等还需要添加相应的配置,结合自己项目所需。每一层相关的配置文件可以借助IDE实现配置。(如果导入别人的项目,可以通过左上角的加号对项目进行配置)
项目框架配置如下:
2. Spring集成struts2和hibernate
hibernate:applicationContext中可以对hibernate进行统一配置,可以将.hbm.xml映射文件配置到applicationContext中,事务管理,将hibernate的事务交于spring,本项目中采用的是编程式事务控制,通过@Transactional注解来实现的事务管理,这其中有很多坑,详情见项目总结。
struts2:applicationContext中并没有见struts2相关的配置,难道不需要集成struts不需要配置&