人脸识别考勤系统使用说明书目前人脸识别技术应用范围己非常广泛,通过技术真正实现了‘刷脸’消费、办事的美好愿望。在企业办公考勤应用,人脸识别考勤也己经替代了原来的指纹打卡的考勤方式。本系统主要实现的对于人脸识别考勤机的后台数据的相关管理工作,对员工考勤的相关数据进行查看和统计操作。
- 研究目标:
2.基本内容:
开发工具:IntelliJ IDEA
开发环境:JDK1.8、MySQL5.7
运行环境:Tomcat8.5
设计模式:MVC设计模式
功能内容:
(1)机构管理模块:主要实现对参考考勤的组织管理,并针对不同的组织机构进行作息时间的安排管理工作。
(2)员工模块:对参与考勤的企业员工进行信息的相关管理,并绑定员工和所在机构的关系,按照机构的作息时间设置安排来进行考勤。
(3)节假日管理模块:对全年的节假日作息进行进行安排,统计考勤时给以排除。
(4)考勤管理模块:对所有的员工考勤信息进行统计,可以根据指定机构和日期按不同的类型进行出勤信息的查询,以便快速掌握员工出勤情况,并可以将出勤信息导出到EXCEL表格中。
(5)GPS定位打卡:为方便疫情在家办公,可以通过GPS打卡,自动获得用户定位信息实现在线打卡功能
- 方案论证:
1)与文件系统自动同步,编辑文件之后,IDEA将自动的完成文件的更新,不用重新导入工程或刷新工程。
- 采用IntelliJ IDEA开发工具优点:
2)列编辑模式,减少了重复性的工作,提高了编码效率。
3)动态语法检测,不符合java规范和预定义的规范,都将在页面中加亮显示。
4)智能编辑,代码输入过程中,自动补充方法或类。
2.采用Mysql数据库的优点:
1)目前大多数企业进行数据存储的首选。
2)免费对大多数中小企业来讲是一个不错的选择。
3)开发和学习文档丰富,使用便捷。
4)语法相对简单易懂,开发过程中有不懂的可以及时查阅相关资料。
1)使用Jsp作为系统界面的开发,简单高效。
- 采用Javaweb开发优点:
2)使用Servlet作来系统的控制器处理,性能高。
3)使用Tomcat作用应用服务器,免费,性能高。
4)使用Jdbc作来数据库操作技术,原始,性能高。
1)有效的将模型和视图进行分离。
- 采用MVC设计模式优点:
2)便于系统的维护和升级。
3)有利于组件的重用。
基于Javaweb实现的考勤后台管理系统,主要设计思路如下:
- 设计思路:
本系统基于Javaweb技术实现项目开发,使用Jsp进行系统界面开发,Servlet进行请求和响应的处理,Jdbc作为数据库开发技术,根据业务流程对系统进行模块功能点的划分,遵循软件工程思想,实现用户登录、机构管理、用户管理、节假日管理、考勤管理等功能。
- 该系统主要针对人脸识别考勤机的后台数据进行相应的管理操作。
- 后台管理用户登陆系统可以对系统相关的功能模块进行管理操作。
- 根据机构来设置不同机构的作息时间安排,不同机构的员工出勤可以根据设置进行。
- 可以根据不同机构、时间、类型来查询统计员工出勤情况。
- 员工登陆系统后可以查看出勤记录,并在线进行GPS定位打卡
此系统是人脸识别考勤系统的后台管理系统,考勤数据从人脸识别机器上获取,自动识别员工信息记录考勤。系统基于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();
@Override
public int add(Daytime daytime) {
return daytimeDao.add(daytime);
} @Override
public int update(Daytime daytime) {
return daytimeDao.update(daytime);
}
@Override
public PageBean queryByMechid(String mechid, int pc, int ps) {
PageBean pb =daytimeDao.queryByMechid(mechid, pc, ps);
List 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;
} @Override
public int isRepeatDate(Daytime daytime) {
return daytimeDao.isRepeatDate(daytime);
} @Override
public Daytime queryByMechid(String mechid, Date nowdate) {
Daytime daytime = daytimeDao.queryByMechid(mechid, nowdate);
daytime.setMechanism(mechanismDao.queryByMechid(mechid));
return daytime;
} @Override
public PageBean query(Daytime daytime, int pc, int ps) {
PageBean pb =daytimeDao.query(daytime, pc, ps);
List 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 IMechanismDaomechanismDao = new MechanismDaoImpl();
@Override
public int add(Employee employee) {
return employeeDao.add(employee);
} @Override
public int delete(String empid) {
return employeeDao.delete(empid);
} @Override
public int update(Employee employee) {
return employeeDao.update(employee);
} @Override
public int updatePw(String empid,String npw) {
return employeeDao.updatePw(empid,npw);
} @Override
public Employee queryByEmpid(String empid) {
Employee employee = employeeDao.queryByEmpid(empid);
employee.setMechanism(mechanismDao.queryByMechid(employee.getMechanism().getMechid()));
return employee;
} @Override
public PageBean queryByMechid(String mechid, int pc, int ps) {
return employeeDao.queryByMechid(mechid, pc, ps);
} @Override
public List queryAll() {
return employeeDao.queryAll();
} @Override
public PageBean query(Employee employee, int pc, int ps) {
PageBean pb = employeeDao.query(employee,pc,ps);
List employeeList = pb.getBeanList();
for(Employee e : employeeList){
e.setMechanism(mechanismDao.queryByMechid(e.getMechanism().getMechid()));
}pb.setBeanList(employeeList);
return pb;
} @Override
public List queryByMechid(String mechid) {
List employeeList = employeeDao.queryByMechid(mechid);
for(Employee emp : employeeList){
Mechanism mechanism = mechanismDao.queryByMechid(emp.getMechanism().getMechid());
emp.setMechanism(mechanism);
}
return employeeList;
} @Override
public boolean isRepeatEmpid(String empid) {
Employee employee = employeeDao.queryByEmpid(empid);
return employee!=null?true:false;
} @Override
public Employee isEmployee(String empid) {
Employee employee = employeeDao.queryByEmpid(empid);
if(employee!=null){
employee.setMechanism(mechanismDao.queryByMechid(employee.getMechanism().getMechid()));
}
return employee;
} @Override
public 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();
@Override
public PageBean query(Errorsheet errorsheet, String bdate, String edate, int pc, int ps) {
PageBean pb = errorsheetDao.query(errorsheet, bdate, edate, pc, ps);
List 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;
} @Override
public int add(Errorsheet errorsheet) {
return errorsheetDao.add(errorsheet);
} @Override
public List queryAll() {
return errorsheetDao.queryAll();
} @Override
public PageBean queryAll(Errorsheet errorsheet, String bdate, String edate) {
PageBean pb = errorsheetDao.queryAll(errorsheet, bdate, edate);
List 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();
@Override
public List query(Date date, String empid) {
return flowsheetDao.query(date,empid);
} @Override
public Date getMindate(Employee employee) {
return flowsheetDao.getMindate(employee);
} @Override
public PageBean query(String empid, String bdate, String edate, int pc, int ps) {
PageBean pb = flowsheetDao.query(empid,bdate,edate,pc,ps);
List 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;
} @Override
public PageBean queryAll(String empid, String bdate, String edate) {
PageBean pb = flowsheetDao.queryAll(empid,bdate,edate);
List 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;
}
}
【java项目|基于Javaweb实现的人脸识别+GPS定位考勤系统】
推荐阅读
- 前端毕业设计项目|毕业设计:Springboot实现疫情宿舍&学生管理系统
- java项目|基于SSM实现校友录管理平台
- java项目|基于Javaweb实现进销存管理系统
- eclipse java项目转idea java项目Invalid bound statement (not found): com.mapper 报错问题
- java项目获取根路径(web项目和application项目的区分)
- Eclipse+Maven整合开发Java项目?webapp3.0以上的Maven项目