Springboot开发的大学生寝室考勤系统刷脸进出宿舍系统技术文档

无敌的宇宙
无敌的宇宙
擅长邻域:Java,HTML,JavaScript,MySQL,支付,退款,图片上传

分类: Java springboot 专栏: java springboot 标签: Springboot开发的大学生寝室考勤系统刷脸进出宿舍系统

2024-01-16 18:19:48 445浏览

宿舍出入系统 1.2采集学生人脸信息和宿管人脸信息 前端使用navigator.mediaDevices.getUserMedia(考虑个浏览器的内核差异,此处以最新的标准API:navigator.mediaDevices.getUserMedia为例)获取用户浏览器的摄像头并开启视频,使用canvas获取某一帧视频的图像,并转化成base64格式的图片,使用ajax传入后台采集人脸的

 宿舍出入系统

1.2采集学生人脸信息和宿管人脸信息

前端使用navigator.mediaDevices.getUserMedia(考虑个浏览器的内核差异,此处以最新的标准API:navigator.mediaDevices.getUserMedia为例)获取用户浏览器的摄像头并开启视频,使用canvas获取某一帧视频的图像,并转化成base64格式的图片,使用ajax传入后台采集人脸的接口/jsp/student/addFaceData。该接口主要调用虹软的人脸采集接口getFaceEngine()方法,获取该用户的脸部特征数据,并存入数据库。核心代码如下(宿管和学生采集的过程一样,此处以学生采集为例):

1.3进出刷脸

进入和出去宿舍楼栋的刷脸逻辑一样,此处使用inout来表示,in表示进入,out表示出去。前端同样使用navigator.mediaDevices.getUserMedia开启用户浏览器的摄像头。生成用户脸部图片,调用/jsp/inoutDep/faceadd?inout=进出类型&department_id=宿舍楼栋id控制器,使用虹软人脸比对接口faceEngine.detectFaces()方法,将刚采集的用户人脸图片转化成人脸特征数据,并于数据库里已采集的学生宿舍脸部特征数据循环对比,根据特征相似值判断进出人的身份。该相似值推荐0.8以上,以此提高识别度。代码如下:

2健康上报和管理

2.1上报

该功能主要使用使用form表单提交到/web/health/save,根据提交的id是否为空,判断学生是添加数据还是编辑。调用healthService.add()或者update()进行数据库的插入或者更新操作。代码如下:

2.2管理

请求路径/web/healt/page,传入参数pageNo(默认第一页),根据session获取当前学生的登录信息,将该学生的id传入healthService.list()查询该学生上报的健康数据,使用pagehelper进行分页。并将查询结果封装到pageInfo实体,使用model传给jsp页面,代码如下:

3学生个人中心

3.1换寝申请

该功能主要使用使用form表单提交到/web/applyChange/apply,根据session获取当前学生的登录信息,将该学生的id传入学生实体,并在service里把该数据的审核状态设置未0(使用result字段标识审核状态:0标识待审核,1标识同意换寝室,-1标识不同意换寝室,-2标识学生撤回申请),调用applyChangeService.save()保存至数据库, 代码如下:

3.2我的换寝管理

请求路径/web/applyChange/page,传入参数pageNo(默认第一页),根据session获取当前学生的登录信息,将该学生的id传入applyChangeService.list()查询该学生的换寝申请数据,使用pagehelper进行分页。并将查询结果封装到pageInfo实体,使用model传给jsp页面,代码如下:

该页面使用el表达式和c:forEach标签循环展示数据,根据result审核状态判断该数据的撤回和删除按钮。当学生刚提交申请,该数据进入待审核状态,即result=0,此时学生可以进行撤回申请。当学生撤回申请或者学校不同意换寝时,该学生可以删除该记录,否则不能有任何操作。

3.3宿舍维修提交

该功能主要使用使用form表单提交到/web/repair/apply,使用multiple实现多图片上传,使用accept显示上传文件的格式。根据session获取当前学生的登录信息,将该学生的id传入学生实体,并在repairService里把该数据的维修状态设置未0(使用status字段标识维修状态:0等待为序,1已维修),调用repairService.save()保存至数据库, 代码如下:

3.4我的维修申请记录

请求路径/web/repair/page,传入参数pageNo(默认第一页),根据session获取当前学生的登录信息,将该学生的id传入repairService.list()查询该学生的换寝申请数据,使用pagehelper进行分页。并将查询结果封装到pageInfo实体,使用model传给jsp页面,当数据是待维修状态时可以进行删除。代码如下:

3.6提交宿舍考勤(寝室长)

请求/web/stuAttendance/toadd,会根据寝室长输入的日期查询改日内该寝室的所有成员是否提交考勤,若寝室长未输入日期,则默认查询今日考勤的情况,根据is_dq字段来判断寝室成员是否已经签到,若is_dq=0标识未签到,is_dq=1表示已签到。代码如下:

3.7考勤记录

请求路径/web/stuAttendance/page?type=类型,type=qs表示寝室长管理本寝室成员的考勤记录,type=w表示普通成员查看自己的考勤记录。采用pagehelper分页。代码如下:

3.8修改登录密码

请求路径/web/student/toupPwd,调用studentSrtvice.getById()获取学生老密码与他输入的原密码对比,若一致则判断新密码与确认密码是否一致,满足条件则调用studentSrtvice.update()修改该学生的密码。

3.9查看个人基本信息

根据session获取当前登录的学生id,调用studentService.getById()获取学生信息并放入model,前端jsp使用el表达式获取展示。

3.10退出登录

移除session里的学生对象,并重定向登录页面。

宿舍模块的实现

1.1宿舍分配和疫情隔离

宿舍楼栋添加时,根据is_normal判断该楼栋是否是隔离楼栋,is_normal=1表示正常楼栋,is_normal=0则表示隔离楼栋,若有需要隔离的学生,则直接进入隔离楼栋,选择需要分配的宿舍。请求路径/jsp/student/pageForRoom?room_id=宿舍id,先调用roomService.getById()获取该公寓的具体信息,根据该公寓的类型(分为男寝和女寝),查询出与之对应的男学生或者女学生。根据学生的room_id与前端传过来的room_id对比判断该学生是否属于本寝室的成员,根据学生room_id是否等于0或者null来判断该学生是否分配寝室。代码如下:

已分配的本寝室数据根据inThisRoom=1来判断并且已选中,其他宿舍的学生则需要先取消所在宿舍,才可以成功分配到本寝室。使用form表单提交至/jsp/student/setRoom?room_id=本寝室id,根据表单setudent_ids的长度判断人数是否符合本寝室的入住人数。而后循环setudent_ids为这些学生数据分配宿舍,修改room_id,并将这些学生的姓名和学号都存入对应的宿舍里,方便展示。代码如下:

1.2换寝申请

请求路径/jsp/applyChange/page,根据session获取当前登录的用户,而后根据该用户的role字段判断是管理员还是宿管,如果是宿管则根据宿管id查询他管理的寝室申请列表,管理员则查询所有列表 。调用applyChangeService.list()方法配合pagehelper分页插件,查询分页数据并放入model传入jsp页面。代码如下:

根据学生的提交信息选择审核通过或者不通过,一般是需要交换的双方同时申请(或者申请空的寝室),同意后可相互交换寝室。调用applyChangeService.update()修改result的值,以此实现换侵功能。 代码如下:

1.3维修处理

请求路径/jsp/repair/page,根据session获取当前登录的用户,而后根据该用户的role字段判断是管理员还是宿管,如果是宿管则根据宿管id查询他管理的寝室申请列表,管理员则查询所有列表 。调用repairService.list()配合pagehelper分页插件,查询分页数据并放入model传入jsp页面。代码如下:

点击处理按钮,请求/jsp/repair/saveOrUpdate,修改result=1,并调用repairService.update()保存至数据库。代码如下:

1.4发布公告

前端使用simditor.js富文本编辑框实现公告主题的多样式的灵活排班。使用forum提交公告主体到/jsp/tip/save控制器。根据id是否为空,调用tipService.save()保存或者update()更新公告。代码如下:

公告管理,根据session获取当前登录的用户,而后根据该用户的role字段判断是管理员还是宿管,如果是宿管则根据宿管id查询他自己发布的公告列表,管理员则查询所有列表 。调用tipService.list()查询数据,使用pagehelper插件分页实现。代码如下:

管理员模块

1.1健康监测

学生健康检测和宿管健康检测业务逻辑基本差不多,请求路径/jsp/health/page?type=类型,type=stu表示学生,type=user表示宿管。 此处以学生学生健康检测为例。根据session获取当前登录的用户,而后根据该用户的role字段判断是管理员还是宿管,如果是宿管则查询他所管理的公寓数,并放入list,而后使用in查询这些楼栋的学生健康数据,管理员则查询所有列表;如果是辅导员则根据辅导员的学院id查询该学院的学生健康数据查询条件根据role设定好后,调用healthService.list()获取健康检测数据,使用pagehelper插件分页和排序。代码如下:

1.2学生考勤管理

请求路径/jsp/stuAttendance/page。 根据session获取当前登录的用户,而后根据该用户的role字段判断是管理员还是宿管,如果是宿管则查询他所管理的公寓数,并放入list,而后使用in查询这些楼栋的学生考勤数据,管理员则查询所有学生的考勤;如果是辅导员则根据辅导员的学院id查询该学院的学生考勤数据查询条件根据role设定好后,调用inoutDepService.list()获取考勤数据,使用pagehelper插件分页,根据id倒叙排序。代码如下:

宿管还可以手动添加某一学生的考勤信息,在input输入某学生的学号,使用ajax请求查询查询该学生,点击提交按钮提交form表单至/jsp/stuAttendance/save,调用stuAttendanceService.isqd判断该学是否已提交签到信息,以免重复提交。若察隅结果为null则调用stuAttendanceService.insrt()方法保存该学的考勤数据到数据库。代码如下:

1.3学生进入宿舍记录查询

请求路径/jsp/inoutDep/page。 根据session获取当前登录的用户,而后根据该用户的role字段判断是管理员还是宿管,如果是宿管则查询他所管理的公寓数,并放入list,而后使用in查询这些楼栋的学生出入记录数据,管理员则查询所有学生和宿管的出入记录;如果是辅导员则根据辅导员的学院id查询该学院的学生出入记录数据。查询条件根据role设定好后,调用inoutDepService.list()获取考勤数据,使用pagehelper插件分页和排序。代码如下:

1.4通告管理

请求路径/jsp/bulletin/page,根据session获取登录用户的身份,若不是超级管理员则根据登录用户的id查询,管理员则查询所有通告。调用bulletionService.list查询,使用pagehelper插件分页。代码如下:

登录

学生灯枯和用户登录一样,军事form表单提交账号密码后台查询数据库,已学生登录为例,表单提交至/web/student/login,调用studentService.list()判断返回结果,若返回结构为空则表示登录失败,否则将该学生存入session,登录成功跳转个人中心页面。代码如下:

学生注册

学生信息由管理员添加,但是学生需要刷脸激活账号。先输入学号和设置密码,然后进入人脸采集和识别接口/web/student/HRfaceadd,将浏览器摄像头视频截取某一帧,用canvas转化base64的图片传入,调用虹软人脸比对接口faceEngine.detectFaces()方法进行比对,以此激活,代码如下:

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695