人脸识别考勤系统(员工类与部门类)

0.功能架构图


1.UML类图

  • 员工

  • 部门


2.员工类与部门类的设计

2.1 员工类

  • 属性:员工的信息需要详细记录,所以设计了员工编号、名字、年龄、性别等属性。
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Employee {
    
        private int empID;
        private String name;
        private String sex;
        private int age;
        private String password;
        private String role; //员工所属部门
    }
    
  • 方法:对员工进行的操作就是最基本的增删改查。
    public interface EmpMapper {
      //增加一个员工
      int addEmp(Employee employee);
    
      //删除一个员工
      int deleteEmp(int empId);
    
      //更新一个员工
      int updataEmp(Employee employee);
    
      //查询一个员工
      Employee queryEmpById(int empId);
    
      //查询全部员工
      List<Employee> queryAllEmp();
    
      //通过名字查员工
      Employee queryEmpByName(String empName);
    
    }
    

2.2 部门类

  • 属性:部门的属性有部门的编号及部门名称,还有一个员工编号,这个属性是为了实现数据库中员工表和部门表的绑定,从而实现更多的功能(没实现)。
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Department {
    
        private int deptID;
        private int empID;
        private String deptName;
    }
    
  • 方法:对部门进行的操作也是增删改查。
    public interface DeptMapper {
    
      //增加一个部门
      int addDept(Department department);
    
      //删除一个部门
      int deleteDept(int empid);
    
      //更新一个部门
      int updataDept(Department department);
    
      //查询一个部门
      Department queryDeptByName(String deptName);
      Department queryDeptById(int id);
    
      //查询全部部门
      List<Department> queryAllDept();
    
    }
    

3.业务实现(以部门类为例 )

3.1 Service接口

  • 提供了用户所需要的业务
public interface DeptService {

    //增加一个部门
    int addDept(Department department);

    //删除一个部门
    int deleteDept(int id);

    //更新一个部门
    int updataDept(Department department);

    //查询一个部门
    Department queryDeptByName(String deptName);

    Department queryDeptById(int id);
    //查询全部部门
    List<Department> queryAllDept();

}

3.2 ServiceImpl类

  • 实现Service接口,ServiceImpl中会调用Mapper,然后通过调用Mapper的方法来调用.xml文件中的语句,对数据库进行操作。
public class DeptServiceImpl implements DeptService {

    private DeptMapper deptMapper;

    public void setDeptMapper(DeptMapper deptMapper) {
        this.deptMapper=deptMapper;
    }

    @Override
    public int addDept(Department department) {
        return deptMapper.addDept(department);
    }



    @Override
    public int deleteDept(int id) {
        return deptMapper.deleteDept(id);
    }

    @Override
    public int updataDept(Department department) {
        return deptMapper.updataDept(department);
    }

    @Override
    public Department queryDeptByName(String deptName) {
        return deptMapper.queryDeptByName(deptName);
    }

    @Override
    public Department queryDeptById(int id) {
        return deptMapper.queryDeptById(id);
    }

    @Override
    public List<Department> queryAllDept() {
        return deptMapper.queryAllDept();
    }


}


4.前后端交互(以部门类为例)

  • 在controller中调用service来实现各种业务,然后通过model将从数据库中查询到的结果返回给前端。
@Controller
@RequestMapping("/fun3")
public class DeptController {

    @Autowired
    @Qualifier("DeptServiceImpl")
    private DeptService deptService;

    //查询部门信息
    @RequestMapping("/dept_mg")
    public String list(Model model) {
    //    System.out.println("dept_mg");
        List<Department> list = deptService.queryAllDept();
        model.addAttribute("list",list);
        return "dept_mg";
    }
    //跳转到增加部门界面
    @RequestMapping("/toAddDept")
    public String toAddDept() {return "addDept";}
    //添加部门请求
    @RequestMapping("/addDept")
    public String addDept(Department dept) {
        deptService.addDept(dept);
        return "redirect:/fun/dept_mg";
    }
    //跳转到修改页面
    @RequestMapping("/toUpdate")
    public String toUpdataDept(Integer deptID,Model model) {
        Department dept=deptService.queryDeptById(deptID);
        model.addAttribute("Qdept",dept);
        return "updataDept";
    }
    //修改部门信息
    @RequestMapping("/updataDept")
    public String updataDept(Department dept) {
        deptService.updataDept(dept);
        return "redirect:/fun/dept_mg";
    }
    //删除部门
    @RequestMapping("/delDept")
    public String deleteDept(Integer deptID) {
        deptService.deleteDept(deptID);
        return "redirect:/fun/dept_mg";
    }
   // 查询部门
   @RequestMapping("/queryDept")
    public String queryDept(Integer queryDeptId,Model model) {
        Department department=deptService.queryDeptById(queryDeptId);
        List<Department> list=new ArrayList<Department>();
        list.add(department);
        if(department==null) {
            list=deptService.queryAllDept();
            model.addAttribute("error","未查到");
        }
        model.addAttribute("list",list);
        return "dept_mg";
    }
}

5.数据库读写

  • 使用了DAO模式。使用了c3p0连接池连接数据库,提高了数据库链接的性能。在.xml文件中实现对数据库的操作。

posted @ 2021-01-29 03:12  1911王奕  阅读(1043)  评论(0编辑  收藏  举报