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


    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文件中实现对数据库的操作。

  • 相关阅读:
    SQL Server 2008 Windows身份验证改为混合模式身份验证
    SQL中给datetime类型变量赋值
    结婚三周年特此@Mark一下
    搞笑的【国庆出游五大注意事项】
    利用SVNListParentPath增加http浏览仓库根目录的功能
    如果年底买不到CC就出手小指吧
    svn备份策略
    缺乏配置管理造成的常见问题
    高速公路开车必看的注意事项
    山雨欲来踏上Java学习之路
  • 原文地址:https://www.cnblogs.com/w60-06/p/14342832.html
Copyright © 2020-2023  润新知