博主主页:猫头鹰源码
博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作
​主要内容:毕业设计(Javaweb项目|小程序|Python|HTML|数据可视化|SSM|SpringBoot|Vue|Jsp|PHP等)、简历模板、学习资料、面试题库、技术咨询、文档编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩
☑️ 文末联系获取

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

2024年最新计算机软件毕业设计选题大全:数百热门选题推荐✅

2024最新精品毕业设计项目,已整理自取
感兴趣可以先收藏起来,以防走丢,有任何选题、文档编写、代码问题也可以咨询我们
项目不是烂大街的模板项目,手写,代码适合学生学习和二次开发

其它优秀案例看文末

项目介绍

本系统为最新原创项目,采用前后端分离,适合选题:人脸识别、考勤、人脸考勤、前后端分离类其他考勤话题等。系统采用springboot+vue整合开发,前端主要使用了vue、项目后端主要使用了springboot,数据层采用mybatis。

功能详情

管理员:
学生管理:维护学生信息,设计学号,姓名,学院,手机号等
学生人脸注册:将学生的人脸图像上传,后续登录拍照上传进行识别登录
课程管理:课程相关信息,比如课程编号、名称,老师等课程信息
选课管理:查看选课情况
补录考勤:允许管理员手动补录考勤信息,针对特殊情况或系统无法识别的情况。
请假申请:查看请假申请,进行审批

学生:
学生管理:维护学生信息,设计学号,姓名,学院,手机号等
学生人脸注册:将学生的人脸图像与其学号进行关联,用于后续考勤识别
课程管理:查看课程
选课管理:学生可以进行选课,将学生、课程进行关联
考勤管理:系统内识别人脸进行签到
请假申请:学生可以提交请假申请,包括请假原因、请假时间等信息,等待审批

系统包含技术

后端:springboot,mybatis
前端:vue2、js、css等
开发工具:idea/vscode
数据库:mysql 5.7
JDK版本:jdk1.8
人脸识别:使用百度人脸识别的API

部分截图

首页

课程列表

课程详情

登录

学生管理

课程管理

考勤记录

部分代码

/**
     * 分页查询
     */
    @PostMapping("/selectPage")
    public Result selectPage(@RequestBody Map<String,String> mp) {
        PageHelper.startPage(Integer.parseInt(mp.get("currentPage").toString()), Integer.parseInt(mp.get("pagesize").toString()));
        List<Attendance> list = attendanceService.queryAllByLimit(mp);
        PageInfo<Attendance> pageInfo = new PageInfo<Attendance>(list);
        return Result.success(pageInfo);
    }

    /**
     * 查询所有
     */
    @PostMapping("/queryAll")
    public Result queryAll(@RequestBody Attendance attendance) {
        List<Attendance> list = attendanceService.queryCondition(attendance);
        return Result.success(list);
    }

    /**
     * 通过主键查询单条数据
     */
    @GetMapping("/selectOne")
    public Result selectOne(Integer id) {
        Attendance attendance = attendanceService.queryById(id);
        return Result.success(attendance);
    }

    /**
     * 新增
     */
    @PostMapping("/add")
    public Result add(@RequestBody Attendance attendance) throws ParseException {
        String imageBase64 =attendance.getImage();
        if (imageBase64 == null || imageBase64.isEmpty()) {
            return Result.error("人脸不能为空");
        }
        // 获取所有学生
        List<Student> studentList = studentService.queryCondition(new Student());
        // 遍历所有学生进行人脸对比
        for (Student student : studentList) {
            String storedImage = student.getImage();
            if (storedImage != null && !storedImage.isEmpty()) {
                //获取图片的名称和后缀
                String imageName = uploadDir+student.getImage().substring(student.getImage().lastIndexOf("/") + 1);
                // 提取存储的图片的Base64编码
                storedImage = faceRecognitionUtil.extractBase64FromUrl(imageName);
                if(storedImage==null){
                    continue;
                }
                // 进行人脸对比
                double score = faceRecognitionUtil.compareFaces(imageBase64, storedImage);
                // 检查是否匹配成功
                if (faceRecognitionUtil.isMatchSuccessful(score)) {
                    Date date = new Date();
                    SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
                    String time = sf.format(date);
                    attendance.setClockTime(time);
                    attendance.setCreateTime(date);
                    attendance.setType(1);
                    //考勤状态(出勤:1,缺勤:2,迟到:3,早退:4)
                    //正常上班时间是9:00-18:00
                    //考勤时间在9:00-18:00之间,为出勤
                    //考勤时间在9:00之后,在中午12:00之前,为迟到
                    //考勤时间在中午12:00之后,在18:00之前,为早退
                    Date startTime = sf.parse("09:00:00");
                    Date endTime = sf.parse("18:00:00");
                    if(date.before(startTime)){
                        attendance.setStatus(3);
                    }else if(date.after(endTime)){
                        attendance.setStatus(4);
                    }else{
                        attendance.setStatus(1);
                    }
                    attendanceService.insert(attendance);
                    return Result.success("人脸考勤打卡成功");
                }
            }
        }

        return Result.error("未找到匹配的人脸信息");
    }

    /**
     * 修改
     */
    @PostMapping("/edit")
    public Result edit(@RequestBody Attendance attendance) {
        attendanceService.update(attendance);
        return Result.success("操作成功");
    }

其他优秀案例

 



案例3

项目获取

项目不是烂大街的模板项目,手写,代码适合学生学习和二次开发
大家点赞、收藏、关注、评论啦 、查看👇🏻下方名片👇🏻

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐