答案:基于spring Boot搭建打卡签到工具,实现用户登录、打卡记录与历史查询。采用Spring Web、JPA与H2数据库构建后端,设计User和Attendance实体,通过控制器处理/checkin、/checkout及/history接口,前端使用html表单提交打卡请求,配合Thymeleaf展示结果,确保每日仅生成一条打卡记录,支持后续扩展如登录验证与考勤统计。

开发一个简易的打卡签到工具,可以使用Java结合spring boot快速搭建后端服务,配合简单的前端页面实现基本功能。重点包括用户登录、打卡时间记录和查看签到历史。以下是具体实现思路和步骤。
1. 项目结构与技术选型
使用Spring Boot作为后端框架,搭配Thymeleaf或纯HTML+ajax做前端展示,数据存储可选用H2或mysql数据库。
主要依赖:
- Spring Web
- Spring Data JPA
- Thymeleaf(可选)
- H2 database(开发测试用)
2. 数据模型设计
定义两个核心实体类:用户(User)和打卡记录(Attendance)。
立即学习“Java免费学习笔记(深入)”;
User.java
public class User { private Long id; private String username; private String password; // 构造函数、getter/setter省略 }
Attendance.java
public class Attendance { private Long id; private Long userId; private LocalDateTime checkInTime; private LocalDateTime checkOutTime; // getter/setter }
3. 实现打卡逻辑
创建一个控制器处理打卡请求,用户点击“上班打卡”时记录当前时间作为上班时间,“下班打卡”则更新对应记录的下班时间。
示例接口逻辑:
- /checkin:记录上班时间,生成一条新记录
- /checkout:更新当天记录的下班时间
- /history?userId=1:查询某用户的历史打卡记录
关键代码片段:
@PostMapping("/checkin") public String checkIn(@RequestParam Long userId, Model model) { Attendance record = new Attendance(); record.setUserId(userId); record.setCheckInTime(LocalDateTime.now()); attendanceRepository.save(record); model.addAttribute("message", "打卡成功!"); return "result"; }
4. 简易前端页面
创建一个HTML页面,包含用户名输入框和两个按钮:“上班打卡”、“下班打卡”。可通过表单提交或Ajax调用后端接口。
例如使用简单form提交:
<form action="/checkin" method="post"> <input type="hidden" name="userId" value="1"> <button type="submit">上班打卡</button> </form>
可增加JavaScript判断是否已打过卡,避免重复提交。
基本上就这些。这个工具适合学习Spring Boot基础操作,后续可扩展功能如登录验证、考勤统计、迟到判断等。不复杂但容易忽略细节,比如同一天只能有一条打卡记录,需要在保存前做查询判断。


