开发环境
- 开发语言:Java
- 框架:Spring Boot
- Jdk 版本:8
- 数据库:MySQL 5.7
- 数据库工具:Navicat12
- 开发软件:Idea
系统展示
管理员功能界面

核心管理模块
- 教师管理:

- 学生管理:

- 班级信息:

- 课堂信息:

- 考勤信息:

- 请假信息:

- 晚到补签:

- 缺勤登记:

- 使用帮助:

用户端功能
- 学生功能界面:

- 教师功能界面:

技术架构
系统采用 B/S 架构,后端基于 Java 与 Spring Boot 框架,前端使用 Vue 构建单页面应用。数据存储选用 MySQL 5.7,利用其跨平台性与高安全性保障数据完整性。人脸识别功能集成百度 AI 接口,实现高效比对。
核心功能说明
-
角色权限:
- 管理员:拥有全面管理权限,包括用户、班级、课堂、考勤、请假及异常处理(晚到补签、缺勤登记)等。
- 教师:负责课堂信息发布、考勤确认及学生管理。
- 学生:查看课堂信息、进行考勤打卡、提交请假申请及个人中心管理。
-
业务流程:
- 支持人脸注册与比对,自动记录考勤状态。
- 提供灵活的请假审批流程。
- 生成考勤报表,辅助教学管理决策。
代码实现
核心为人脸比对逻辑,调用百度 AI 接口进行特征匹配。
/**
* 人脸比对
*
* @param face1 人脸 1
* @param face2 人脸 2
* @return
*/
public static R matchFace(String face1, String face2) {
if (client == null) {
String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();
String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();
String token = BaiduUtil.getAuth(APIKey, SecretKey);
if (token == null) {
return R.error("请在配置管理中正确配置 APIKey 和 SecretKey");
}
client = new AipFace(null, APIKey, SecretKey);
client.setConnectionTimeoutInMillis(2000);
client.setSocketTimeoutInMillis(60000);
}
org.json.JSONObject res = null;
try {
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if (!path.exists()) {
path = ();
}
(path.getAbsolutePath(), );
(upload.getAbsolutePath() + + face1);
(upload.getAbsolutePath() + + face2);
Base64Util.encode(FileUtil.FileToByte(file1));
Base64Util.encode(FileUtil.FileToByte(file2));
(img1, );
(img2, );
ArrayList<MatchRequest> requests = <MatchRequest>();
requests.add(req1);
requests.add(req2);
res = client.match(requests);
System.out.println(res);
(() res.get() != ) {
R.ok().put(, );
}
} (FileNotFoundException e) {
e.printStackTrace();
R.error();
} (IOException e) {
e.printStackTrace();
}
R.ok().put(, com.alibaba.fastjson.JSONObject.parse(res.getJSONObject().get().toString()));
}
测试与结论
经过功能测试,系统各项指标符合预期,运行稳定。通过实际部署,验证了人脸识别技术在课堂考勤场景中的可行性,有效降低了人工统计成本,提升了管理效率。后续可进一步优化算法精度及并发处理能力。


