基于Javaweb实现的人脸识别考勤系统

article/2025/10/8 4:43:22

  

  1. 研究目标:

目前人脸识别技术应用范围己非常广泛,通过技术真正实现了‘刷脸’消费、办事的美好愿望。在企业办公考勤应用,人脸识别考勤也己经替代了原来的指纹打卡的考勤方式。本系统主要实现的对于人脸识别考勤机的后台数据的相关管理工作,对员工考勤的相关数据进行查看和统计操作。

2.基本内容:

开发工具:IntelliJ IDEA

开发环境:JDK1.8、MySQL5.7

运行环境:Tomcat8.5

设计模式:MVC设计模式

功能内容:

(1)机构管理模块:主要实现对参考考勤的组织管理,并针对不同的组织机构进行作息时间的安排管理工作。

(2)员工模块:对参与考勤的企业员工进行信息的相关管理,并绑定员工和所在机构的关系,按照机构的作息时间设置安排来进行考勤。

(3)节假日管理模块:对全年的节假日作息进行进行安排,统计考勤时给以排除。

(4)考勤管理模块:对所有的员工考勤信息进行统计,可以根据指定机构和日期按不同的类型进行出勤信息的查询,以便快速掌握员工出勤情况,并可以将出勤信息导出到EXCEL表格中。

(5)GPS定位打卡:为方便疫情在家办公,可以通过GPS打卡,自动获得用户定位信息实现在线打卡功能

  1. 方案论证:
  1. 采用IntelliJ IDEA开发工具优点:

 1)与文件系统自动同步,编辑文件之后,IDEA将自动的完成文件的更新,不用重新导入工程或刷新工程。

 2)列编辑模式,减少了重复性的工作,提高了编码效率。

 3)动态语法检测,不符合java规范和预定义的规范,都将在页面中加亮显示。

 4)智能编辑,代码输入过程中,自动补充方法或类。

2.采用Mysql数据库的优点:

 1)目前大多数企业进行数据存储的首选。

 2)免费对大多数中小企业来讲是一个不错的选择。

3)开发和学习文档丰富,使用便捷。

4)语法相对简单易懂,开发过程中有不懂的可以及时查阅相关资料。

  1. 采用Javaweb开发优点:

1)使用Jsp作为系统界面的开发,简单高效。

2)使用Servlet作来系统的控制器处理,性能高。

3)使用Tomcat作用应用服务器,免费,性能高。

4)使用Jdbc作来数据库操作技术,原始,性能高。

  1. 采用MVC设计模式优点:

      1)有效的将模型和视图进行分离。

2)便于系统的维护和升级。

3)有利于组件的重用。

  1. 设计思路:

基于Javaweb实现的考勤后台管理系统,主要设计思路如下:

  1. 该系统主要针对人脸识别考勤机的后台数据进行相应的管理操作。
  2. 后台管理用户登陆系统可以对系统相关的功能模块进行管理操作。
  3. 根据机构来设置不同机构的作息时间安排,不同机构的员工出勤可以根据设置进行。
  4. 可以根据不同机构、时间、类型来查询统计员工出勤情况。
  5. 员工登陆系统后可以查看出勤记录,并在线进行GPS定位打卡

      本系统基于Javaweb技术实现项目开发,使用Jsp进行系统界面开发,Servlet进行请求和响应的处理,Jdbc作为数据库开发技术,根据业务流程对系统进行模块功能点的划分,遵循软件工程思想,实现用户登录、机构管理、用户管理、节假日管理、考勤管理等功能。

人脸识别考勤系统使用说明书

此系统是人脸识别考勤系统的后台管理系统,考勤数据从人脸识别机器上获取,自动识别员工信息记录考勤。系统基于JSP/SERVLET来开发实现,开发工具采用IDEA或ECLIPSE,数据库采用MYSQL数据库。Util包中jdbcinfo.properties文件进行数据库连接的相关配置修改。

访问路径为:faceattendsystem为发布的虚拟目录

http://localhost:8080/faceattendsystem/index.jsp

1. 进入主页,点击未登录。如下图:

2. 输入工号和密码,点击【登录】按钮。管理员默认工号是admin,密码是111111。如下图:

3. 登录成功后,进入后台管理页面。如下图:

4. 点击【机构管理】,进入机构详情页面。该页面可添加机构、搜索机构、修改机构、删除机构和设置机构的作息管理。

5. 点击【添加机构】按钮,进入添加机构页面。根据文本框提示的信息进行输入信息,点击【添加】按钮。(*是必填项)如下图:

6. 添加成功后,输入1111,点击【搜索】按钮。如下图:

7. 点击【修改】,进入修改机构页面。修改信息后,点击【修改】按钮。(机构号不能修改)如下图:

8. 点击【删除】,删除该机构。

9. 点击【作息管理】,进入作息时间页面。该页面可添加作息和搜索日期。如下图:

10. 点击【添加作息】,进入添加作息页面。根据文本框提示输入信息,点击【添加】按钮。如下图:

11. 添加成功后,输入2017-12-05,点击【搜索】按钮。如下图:

12. 点击【员工管理】,进入查询员工页面。选择刚添加的机构,点击【查询】按钮。如下图:

13. 查询成功后,进入员工信息页面。该页面可添加员工、搜索员工、修改员工和删除员工。如下图:

14. 点击【添加员工】按钮,进入添加员工页面。根据文本框的提示输入信息,点击【添加】按钮。如下图:

15. 添加员工成功后,在搜索框输入2222,点击【搜索】按钮。如下图:

16. 点击【详情】,进入员工详情页面。如下图:

17. 点击【修改】,进入员工修改页面。修改信息后,点击【修改】按钮。如下图:

18. 点击【删除】,删除该员工。

19. 点击【节假日管理】,进入节假日页面。该页面可添加节假日和搜索日期。如下图:

20. 点击【添加节假日】按钮,进入添加节假日页面。根据文本框提示输入信息,点击【添加】按钮。如下图:

21. 添加成功后,在搜索框输入2018-01-01,点击【搜索】按钮。如下图:

22. 点击【考勤管理】,进入查询考勤页面。如下图:

23. 点击【存在异常日期,点击查看详情】,进入异常日期页面。点击【开始统计】,则服务器会跑当前的日期的考勤。如下图:

24. 若根据文本框提示输入信息,选择异常,点击【查询】按钮。进入异常的考勤统计页面。如下图:

25. 若要把查询数据导出,则点击【导出excel】按钮。如下图:

25. 若根据文本框提示输入信息,选择流水,点击【查询】按钮。如下图:

26. 进入流水的考勤统计页面。如下图:

27. 点击【修改密码】,进入修改密码页面。根据文本框提示输入信息后,点击【修改】按钮。如下图:

以上是基于人脸识别的考勤系统的说明

package faceattendsystem.serviceImpl;import java.sql.Date;
import java.util.List;import faceattendsystem.dao.IDaytimeDao;
import faceattendsystem.dao.IMechanismDao;
import faceattendsystem.daoImpl.DaytimeDaoImpl;
import faceattendsystem.daoImpl.MechanismDaoImpl;
import faceattendsystem.entity.Daytime;
import faceattendsystem.entity.PageBean;
import faceattendsystem.service.IDaytimeService;public class DaytimeServiceImpl implements IDaytimeService {private IDaytimeDao daytimeDao = new DaytimeDaoImpl();private IMechanismDao mechanismDao = new MechanismDaoImpl();@Overridepublic int add(Daytime daytime) {return daytimeDao.add(daytime);}@Overridepublic int update(Daytime daytime) {return daytimeDao.update(daytime);}@Overridepublic PageBean<Daytime> queryByMechid(String mechid, int pc, int ps) {PageBean<Daytime> pb =daytimeDao.queryByMechid(mechid, pc, ps);List<Daytime> daytimeList = pb.getBeanList();for(Daytime daytime:daytimeList){daytime.setMechanism(mechanismDao.queryByMechid(mechid));daytime.setBegintime(getRealTime(daytime.getBegintime()));daytime.setEndtime(getRealTime(daytime.getEndtime()));}return pb;}private String getRealTime(String time){while(time.length()<6){time = "0"+time;}time = time.substring(0,2)+":"+time.substring(2,4)+":"+time.substring(4,6);return time;}@Overridepublic int isRepeatDate(Daytime daytime) {return daytimeDao.isRepeatDate(daytime);}@Overridepublic Daytime queryByMechid(String mechid, Date nowdate) {Daytime daytime = daytimeDao.queryByMechid(mechid, nowdate);daytime.setMechanism(mechanismDao.queryByMechid(mechid));return daytime;}@Overridepublic PageBean<Daytime> query(Daytime daytime, int pc, int ps) {PageBean<Daytime> pb =daytimeDao.query(daytime, pc, ps);List<Daytime> daytimeList = pb.getBeanList();for(Daytime d:daytimeList){d.setMechanism(mechanismDao.queryByMechid(d.getMechanism().getMechid()));d.setBegintime(getRealTime(d.getBegintime()));d.setEndtime(getRealTime(d.getEndtime()));}return pb;}
}

package faceattendsystem.serviceImpl;import java.util.List;import faceattendsystem.dao.IEmployeeDao;
import faceattendsystem.dao.IMechanismDao;
import faceattendsystem.daoImpl.EmployeeDaoImpl;
import faceattendsystem.daoImpl.MechanismDaoImpl;
import faceattendsystem.entity.Employee;
import faceattendsystem.entity.Mechanism;
import faceattendsystem.entity.PageBean;
import faceattendsystem.service.IEmployeeService;public class EmployeeServiceImpl implements IEmployeeService {private IEmployeeDao employeeDao = new EmployeeDaoImpl();private IMechanismDao  mechanismDao = new MechanismDaoImpl();@Overridepublic int add(Employee employee) {return employeeDao.add(employee);}@Overridepublic int delete(String empid) {return employeeDao.delete(empid);}@Overridepublic int update(Employee employee) {return employeeDao.update(employee);}@Overridepublic int updatePw(String empid,String npw) {return employeeDao.updatePw(empid,npw);}@Overridepublic Employee queryByEmpid(String empid) {Employee employee = employeeDao.queryByEmpid(empid);employee.setMechanism(mechanismDao.queryByMechid(employee.getMechanism().getMechid()));return employee;}@Overridepublic PageBean<Employee> queryByMechid(String mechid, int pc, int ps) {return employeeDao.queryByMechid(mechid, pc, ps);}@Overridepublic List<Employee> queryAll() {return employeeDao.queryAll();}@Overridepublic PageBean<Employee> query(Employee employee, int pc, int ps) {PageBean<Employee> pb = employeeDao.query(employee,pc,ps);List<Employee> employeeList = pb.getBeanList();for(Employee e : employeeList){e.setMechanism(mechanismDao.queryByMechid(e.getMechanism().getMechid()));}pb.setBeanList(employeeList);return pb;}@Overridepublic List<Employee> queryByMechid(String mechid) {List<Employee> employeeList = employeeDao.queryByMechid(mechid);for(Employee emp : employeeList){Mechanism mechanism = mechanismDao.queryByMechid(emp.getMechanism().getMechid());emp.setMechanism(mechanism);}return employeeList;}@Overridepublic boolean isRepeatEmpid(String empid) {Employee employee = employeeDao.queryByEmpid(empid);return employee!=null?true:false;}@Overridepublic Employee isEmployee(String empid) {Employee employee = employeeDao.queryByEmpid(empid);if(employee!=null){employee.setMechanism(mechanismDao.queryByMechid(employee.getMechanism().getMechid()));}return employee;}@Overridepublic Employee isRepeatIdnumber(String idnumber) {return employeeDao.queryByIdnumber(idnumber);}
}

package faceattendsystem.serviceImpl;import java.util.List;import faceattendsystem.dao.IEmployeeDao;
import faceattendsystem.dao.IErrorsheetDao;
import faceattendsystem.dao.IMechanismDao;
import faceattendsystem.daoImpl.EmployeeDaoImpl;
import faceattendsystem.daoImpl.ErrorsheetDaoImpl;
import faceattendsystem.daoImpl.MechanismDaoImpl;
import faceattendsystem.entity.Errorsheet;
import faceattendsystem.entity.PageBean;
import faceattendsystem.service.IErrorsheetService;public class ErrorsheetServiceImpl implements IErrorsheetService {IErrorsheetDao errorsheetDao = new ErrorsheetDaoImpl();IMechanismDao mechanismDao = new MechanismDaoImpl();IEmployeeDao employeeDao = new EmployeeDaoImpl();@Overridepublic PageBean<Errorsheet> query(Errorsheet errorsheet, String bdate, String edate, int pc, int ps) {PageBean<Errorsheet> pb = errorsheetDao.query(errorsheet, bdate, edate, pc, ps);List<Errorsheet> errorsheetList = pb.getBeanList();for (Errorsheet e : errorsheetList) {e.setMechanism(mechanismDao.queryByMechid(e.getMechanism().getMechid()));e.setEmployee(employeeDao.queryByEmpid(e.getEmployee().getEmpid()));}pb.setBeanList(errorsheetList);return pb;}@Overridepublic int add(Errorsheet errorsheet) {return errorsheetDao.add(errorsheet);}@Overridepublic List<Errorsheet> queryAll() {return errorsheetDao.queryAll();}@Overridepublic PageBean<Errorsheet> queryAll(Errorsheet errorsheet, String bdate, String edate) {PageBean<Errorsheet> pb = errorsheetDao.queryAll(errorsheet, bdate, edate);List<Errorsheet> errorsheetList = pb.getBeanList();for (Errorsheet e : errorsheetList) {e.setMechanism(mechanismDao.queryByMechid(e.getMechanism().getMechid()));e.setEmployee(employeeDao.queryByEmpid(e.getEmployee().getEmpid()));}pb.setBeanList(errorsheetList);return pb;}
}

package faceattendsystem.serviceImpl;import java.sql.Date;
import java.util.List;import faceattendsystem.dao.IEmployeeDao;
import faceattendsystem.dao.IFlowsheetDao;
import faceattendsystem.daoImpl.EmployeeDaoImpl;
import faceattendsystem.daoImpl.FlowsheetDaoImpl;
import faceattendsystem.entity.Employee;
import faceattendsystem.entity.Flowsheet;
import faceattendsystem.entity.PageBean;
import faceattendsystem.service.IFlowsheetService;public class FlowsheetServiceImpl implements IFlowsheetService {IFlowsheetDao flowsheetDao = new FlowsheetDaoImpl();IEmployeeDao employeeDao = new EmployeeDaoImpl();@Overridepublic List<Flowsheet> query(Date date, String empid) {return flowsheetDao.query(date,empid);}@Overridepublic Date getMindate(Employee employee) {return flowsheetDao.getMindate(employee);}@Overridepublic PageBean<Flowsheet> query(String empid, String bdate, String edate, int pc, int ps) {PageBean<Flowsheet> pb = flowsheetDao.query(empid,bdate,edate,pc,ps);List<Flowsheet> flowsheetList = pb.getBeanList();for(Flowsheet fs:flowsheetList){fs.setEmployee(employeeDao.queryByEmpid(fs.getEmployee().getEmpid()));fs.setLogtime(getRealTime(fs.getLogtime()));fs.setClientdatetime(getDatetime(fs.getClientdatetime()));//fs.setSimilarity(getExactValue(fs.getSimilarity()));}return pb;}@Overridepublic PageBean<Flowsheet> queryAll(String empid, String bdate, String edate) {PageBean<Flowsheet> pb = flowsheetDao.queryAll(empid,bdate,edate);List<Flowsheet> flowsheetList = pb.getBeanList();for(Flowsheet fs:flowsheetList){fs.setEmployee(employeeDao.queryByEmpid(fs.getEmployee().getEmpid()));fs.setLogtime(getRealTime(fs.getLogtime()));fs.setClientdatetime(getDatetime(fs.getClientdatetime()));}return pb;}/*** 添加打卡记录* @param flowsheet*/public void addSheet(Flowsheet flowsheet){flowsheetDao.addSheet(flowsheet);}/*	private float getExactValue(float similarity) {return (Math.round(similarity*100)/100);}*/private String getDatetime(String datetime) {String date = datetime.substring(0,8);date = date.substring(0,4)+"-"+date.substring(4,6)+"-"+date.substring(6);String time = datetime.substring(8);time = getRealTime(time);datetime = date+" "+time;return datetime;}private String getRealTime(String time){while(time.length()<6){time = "0"+time;}time = time.substring(0,2)+":"+time.substring(2,4)+":"+time.substring(4);return time;}
}


http://chatgpt.dhexx.cn/article/UZeaqDck.shtml

相关文章

python opencv人脸识别考勤系统的完整源码

这篇文章主要介绍了python opencv人脸识别考勤系统的完整源码,本文给大家介绍的非常详细&#xff0c;希望对大家的学习或工作具有一定的参考借鉴价值。代码如下&#xff1a; import wx import wx.grid from time import localtime,strftime import os import io import zlib i…

基于face recognition OpenCV 的人脸考勤系统

人脸考勤系统客户端的主要功能有:人脸识别、网络通信、数据可视化,信息展示等:主要界面: 2.2.1 人脸识别模块 人脸识别模块是基于 face recognition 库实现的,face recognition 是世界上最简单的人脸识别库。人脸识别模块分为人脸目标检测、人脸特征向量编码以及人脸身份匹…

Python人脸识别考勤打卡系统

Python人脸识别考勤打卡系统 如需安装运行环境或远程调试&#xff0c;可加QQ905733049, 或QQ2945218359由专业技术人员远程协助&#xff01; 运行结果如下&#xff1a; 主要代码&#xff1a; import random import cv2 import numpy import datetime import os import time …

Java人脸识别登录Demo(人脸考勤系统)

最近好多小伙伴在做毕设&#xff0c;有人脸识别登录、人脸识别考勤系统、人脸支付&#xff08;本文代码可以实现&#xff0c;但只限于识别逻辑&#xff0c;并不安全&#xff09;等&#xff0c;跟人脸识别有关的项目。由于上一篇文章写了关于人脸识别登录的代码有很多小伙伴找我…

基于java人脸识别考勤签到系统设计与实现毕业设计毕设作品

功能清单 【管理员功能】 录入员工&#xff1a;录入员工账号&#xff0c;密码&#xff0c;姓名&#xff0c;上传头像等资料 员工列表&#xff1a;显示已经录入的所有员工列表 员工管理&#xff1a;支持修改员工信息和删除操作 员工人脸打卡列表&#xff1a;显示所有员工的打卡…

超详细基于MATLAB的人脸考勤识别系统

基于MATLAB的人脸考勤识别系统 摘 要 人脸识别是模式识别和图像处理等学科的一个研究热点&#xff0c;它广泛应用在身份验证、刑侦破案、视频监视、机器人智能化和医学等领域&#xff0c;具有广阔的应用价值和商用价值。人脸特征作为一种生物特征&#xff0c;与其他生物特征相比…

Python人脸识别签到考勤系统

前言 本项目为IOT实验室人员签到考勤设计&#xff0c;系统实现功能&#xff1a; ◦人员人脸识别并完成签到/签退 ◦考勤时间计算 ◦保存考勤数据为CSV格式&#xff08;Excel表格&#xff09; PS&#xff1a;本系统2D人脸识别&#xff0c;节约了繁琐的人脸识别训练部分&…

使用Python搭建人脸识别考勤系统

介绍 在本文中&#xff0c;你将学习如何使用 Python 构建人脸识别系统。人脸识别比人脸检测更进一步。在人脸检测中&#xff0c;我们只检测人脸在图像中的位置&#xff0c;但在人脸识别中&#xff0c;我们制作了一个可以识别人的系统。 “人脸识别是验证或识别图片或视频中的人…

python人脸考勤系统

基于一个开源项目进行改编设计 先来看演示&#xff0c;具体讲解有空再说… 设计数据库 数据库用于存储打卡信息等。 表logcat&#xff1a;用于存储打卡实时间&#xff0c;id&#xff0c;名字&#xff0c;是否迟到。 表time&#xff1a;用于设置默认上下学时间 表worker_in…

基于OpenCV的人脸 考勤系统

详细的设计流程点击链接&#xff1a; https://wenku.baidu.com/view/871e4bb7974bcf84b9d528ea81c758f5f71f2952?fruc 修订记录 版本号 修改记录 修改者 修改日期 V1.0 初次编写 WenJie 2019.05.11 目 录 第一章 引言................................…

Python3:基于Opencv4.2和wxPython4可视化界面的人脸考勤系统

前言 主题&#xff1a;基于Opencv4.2的人脸考勤系统 功能模块 采集人脸&#xff1a;收集需要录入的学生信息&#xff0c;开启摄像头收集截取对应的人脸图片&#xff1b;训练人脸数据模型&#xff1a;根据收集和整合好的人脸图片数据训练成人脸数据模型&#xff1b;人脸识别打…

QT基于百度的人脸考勤系统

目录 一、百度智能云介绍 二、代码 1、camera类 2、widget类 3、register类 4、dialog类 三、效果演示 四、改进 获取完整代码请前往&#xff1a;GitHub - zhaohigh/Qt-chatrobut 目前还在学习中&#xff0c;需要练练手&#xff0c;就写了一个基于百度人脸识别的考勤…

Python人脸识别智能考勤系统 (供源码,附报告)(可答疑,可调试)

目录 一、项目简介 二、功能展示 1.人脸识别功能测试 2.识别并录入人脸及个人信息 3.数据库保存信息 4.考勤打卡 三、环境安装实例 1.下载python对应版本的dlib 2.安装opencv-python 3.安装face_recognition 4.安装pyqt5 5.安装mysqlclient 四、需要源码私信并call邮…

基于OpenCV的人脸识别考勤系统

考勤系统设计 学生上课考勤系统最初的方式是采用的人工纸质点名,目前仍旧有一部分学校依旧采用此种方法点名,这种方法也一直是被认为最有效的签到点名方式。但由于课程繁多加上学生人数众多, 代替点名现象普遍存在, 而且传统的现场点名签到方式费时费力, 直接影响到授课质量…

手把手教你:人脸识别考勤系统

系列文章 手把手教你&#xff1a;人脸识别考勤系统 本文为系列第一篇 文章目录 系列文章项目简介一、项目展示二、环境需求环境安装实例 三、功能模块介绍1.人脸库图像2.构建人脸库3.启动人脸识别功能 完整代码地址 项目简介 本文主要介绍如何使用python搭建&#xff1a;一个…

LabVIEW入门与实战开发32例

链接&#xff1a;https://pan.baidu.com/s/1FqRL1loyDS-YT4wzIdRg2A 提取码&#xff1a;xe7y

LabView学习

一、基础篇 1、Labview是一种程序开发环境&#xff0c;由美国国家仪器&#xff08;NI&#xff09;公司研制开发。 2、NI-VISA(Virtual Instrument Software Architec-ture&#xff0c;以下简称为“VISA”)是美国国家仪器NI(NationalInstrument)公司开发的一种用来与各种仪器总…

基于实践的LabVIEW零基础入门视频教程

原文地址::http://blog.eeecontrol.com/LabVIEW1/ 《基于实践的LabVIEW零基础入门视频教程》 资料不在多,而在于精,资料太多,反而会迷失方向&#xff0c;学习最怕的就是打乱仗,选择对的方向,比努力更重要,这也是本人的亲身经历!《基于实践的LabVIEW零基础入门视频教程》方向明确…

Labview简介

公司&#xff1a;美国国家仪器&#xff08;成立于1976年&#xff09; 初始发布时间&#xff1a;1986年 底层语言&#xff1a;C、C 操作系统&#xff1a;windows、macOS、linux 运用场景&#xff1a;数据采集、仪器控制、自动化、分析与信号处理、工业控制、嵌入式和系统设计…

LabVIEW学习笔记(三)——程序结构

前言&#xff1a; 任何计算机语言都离不开程序结构&#xff0c;LabVIEW 作为一种图形化的高级程序幵发语言也不例外。LabVIEW 中的程序结构包括if-else循环&#xff0c;while循环结构&#xff0c;使能结构&#xff0c;公式节点和数学脚本节点等&#xff0c; 因此通过LabVIEW可以…