人脸识别员工考勤管理系统——考勤Askoff(个人博客)

GIT代码

https://gitee.com/hjx127/javaweb

整体功能框架图

整体UML类图

Askoff的UML类图

Askoff实体类

属性

考勤开始时间
考勤结束时间
考勤状态
员工Id
部门Id

代码块

    private String startime; 
    private String endtime; 
    private String status;   
    private int empId;       
    private int deptId;     

AskoffDAO模块与方法实现

DAO模块

DAO接口

增加考勤信息: 通过传入一个新的员工考勤信息表新增一个考勤列表返回考勤信息表个数
删除考勤信息: 通过传入的员工Id(empId)删除该员工的考勤信息表返回考勤信息表个数
更新考勤信息: 通过传入员工新的考勤信息修改该员工的考勤信息表返回考勤信息表个数
查询一个员工的考勤信息: 通过传入的员工Id(empId)返回对应员工的考勤信息表
查询所有员工的考勤信息: 通过返回的所有考勤列表查询所有员工的考勤信息表

DAO模式代码块

public interface AskoffMapper {
    //增加一个考勤
    int addAskoff(Askoff askoff);

    //删除一个考勤
    int deleteAskoff(int empId);

    //更新一个考勤
    int updataAskoff(Askoff askoff);

    //查询一个考勤
    Askoff queryAskoffById(int empId);

    //查询全部考勤
    List<Askoff> queryAllAskoff();
}

使用DAO接口的优点

使用了DAO模式。使用了mybatis数据库连接池连接数据库,提高了数据库链接的性能。DAO层进行每个框架的增删改查然后将结果返回给Service(业务层)。Service与DAO层建立连接,DAO层与数据库进行连接。DAO层没有实现实现类,而是使用了.xml文件,在用户发送请求的时候对其进行相对应的操作。

方法实现

使用.xml文件对数据库操作从而实现了DAO接口的方法

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
	PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.com.dao.AskoffMapper">

	<insert id="addAskoff" parameterType="Askoff">
		insert into face_attendance.askoff(empId,deptId,startime,endtime,status)
		values (#{empId},#{deptId},#{startime},#{endtime},#{status})
	</insert>
	
	<delete id="deleteAskoff" parameterType="int">
		delete from face_attendance.askoff
		where empId = #{empId}
	</delete>
	
	<update id="updataAskoff" parameterType="Askoff">
		update face_attendance.askoff
		set empId=#{empId},deptId=#{deptId},startime=#{startime},endtime=#{endtime},status=#{status}
		where empId = #{empId}
	</update>
	
	<select id="queryAskoffById" resultType="Askoff">
		select * from face_attendance.askoff
		where empId = #{empId};
	</select>
	
	<select id="queryAllAskoff" resultType="Askoff">
		select * from face_attendance.askoff
	</select>

</mapper>

前端用户发送增删查改的请求: AskoffService以及AskoffServiceImpl

AskoffService

增加考勤信息: 通过传入一个新的员工考勤信息表新增一个考勤列表返回考勤信息表个数
删除考勤信息: 通过传入的员工Id(empId)删除该员工的考勤信息表返回考勤信息表个数
更新考勤信息: 通过传入员工新的考勤信息修改该员工的考勤信息表返回考勤信息表个数
查询一个员工的考勤信息: 通过传入的员工Id(empId)返回对应员工的考勤信息表
查询所有员工的考勤信息: 通过返回的所有考勤列表查询所有员工的考勤信息表

AskoffServiceImpl

AskoffServiceImp通过调用AskOffMapper调用.xml文件,对数据库操作从而实现了AskoffService接口的方法

具体代码

public interface AskoffService {
    //增加一个考勤
    int addAskoff(Askoff askoff);

    //删除一个考勤
    int deleteAskoff(int empId);

    //更新一个考勤
    int updataAskoff(Askoff askoff);

    //查询一个考勤
    Askoff queryAskoffById(int empId);
    public List<Askoff> queryAllAskoff();
}
public class AskoffServiceImpl implements AskoffService {
    private AskoffMapper askoffMapper;

    public void setAskoffMapper(AskoffMapper askoffMapper) {
        this.askoffMapper=askoffMapper;
    }

    @Override
    public int addAskoff(Askoff askoff) {
        // TODO Auto-generated method stub
        return askoffMapper.addAskoff(askoff);
    }

    @Override
    public int deleteAskoff(int empId) {
        // TODO Auto-generated method stub
        return askoffMapper.deleteAskoff(empId);
    }

    @Override
    public int updataAskoff(Askoff askoff) {
        // TODO Auto-generated method stub
        return askoffMapper.updataAskoff(askoff);
    }

    @Override
    public Askoff queryAskoffById(int empId) {
        // TODO Auto-generated method stub
        return askoffMapper.queryAskoffById(empId);
    }

    @Override
    public List<Askoff> queryAllAskoff() {
        // TODO Auto-generated method stub
        return askoffMapper.queryAllAskoff();
    }
}

前后端连接

使用Controller连接前后端

Controller与前端进行交互,将前后端进行连接,使用springMVC、使用Controller与前端进行交互,接受前端请求不用每一次都doget、 dopost,Controller 先访问一个网址,进行增删改查的功能实现,然后model.attribute 将从数据库查询的数据 放到前端显示出来,return则跳到某个页面网址。

具体代码

import cn.com.dto.Askoff;
import cn.com.dto.Employee;
import cn.com.service.AskoffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping("/fun2")
public class AskoffController {
    @Autowired
    @Qualifier("AskoffServiceImpl")
    private AskoffService askoffService;

    //查询所有考勤
    @RequestMapping("/askoff_mg")
    public String list(Model model) {
        System.out.println("askoff_mg");
        List<Askoff> list=askoffService.queryAllAskoff();
        model.addAttribute("list",list);
        return "askoff_mg";
    }
    //跳转到增加考勤页面
    @RequestMapping("/toAddAskoff")
    public String toAddAskoff() {return "addAskoff";}
    //添加考勤的请求
    @RequestMapping("/addAskoff")
    public String addAskoff(Askoff askoff) {
        askoffService.addAskoff(askoff);
        return "redirect:/fun2/askoff_mg";
    }
    //跳转到修改考勤页面
    @RequestMapping("/toUpdate")
    public String toUpdateAskoff(Integer empid,Model model) {
        Askoff askoff=askoffService.queryAskoffById(empid);
        model.addAttribute("Qaskoff",askoff);
        return "updateAskoff";
    }
    //修改考勤信息
    @RequestMapping("/updateAskoff")
    public String updateAskoff(Askoff askoff) {
        askoffService.updataAskoff(askoff);
        System.out.println("增加一条考勤信息"+askoff);
        return "redirect:/fun2/askoff_mg";
    }
    //删除
    @RequestMapping("/delAskoff")
    public String deleteAskoff(Integer empid) {
        askoffService.deleteAskoff(empid);
        return "redirect:/fun2/askoff_mg";
    }
    //查询
    @RequestMapping("/queryAskoff")
    public String list(Integer empId, Model model) {
        Askoff  askoff= askoffService.queryAskoffById(empId);

        List<Askoff>list=new ArrayList<Askoff>();
        list.add(askoff);
        if(askoff==null){

            model.addAttribute("error","未查到");
        }
        model.addAttribute("list",list);
        return "askoff_mg";
    }
}

数据库连接

采用MySQL数据库进行存放数据,数据库存放三张表:考勤表、员工表、部门表.

posted @ 2021-01-29 04:26  网络1911黄嘉欣  阅读(608)  评论(0编辑  收藏  举报
levels of contents