在Java中实现打卡功能,可以通过以下步骤来完成:
public class Employee {
private String name;
private int id;
public Employee(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class AttendanceRecord {
private Employee employee;
private Date checkInDate;
public AttendanceRecord(Employee employee) {
this.employee = employee;
this.checkInDate = new Date();
}
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
public Date getCheckInDate() {
return checkInDate;
}
public void setCheckInDate(Date checkInDate) {
this.checkInDate = checkInDate;
}
}
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class AttendanceManager {
private List<AttendanceRecord> records = new ArrayList<>();
public void checkIn(Employee employee) {
AttendanceRecord record = new AttendanceRecord(employee);
records.add(record);
System.out.println(employee.getName() + " has checked in.");
}
public void checkOut(Employee employee) {
for (AttendanceRecord record : records) {
if (record.getEmployee().getId() == employee.getId()) {
record.setCheckOutDate(new Date());
System.out.println(employee.getName() + " has checked out.");
break;
}
}
}
public List<AttendanceRecord> getRecords() {
return records;
}
}
public class Main {
public static void main(String[] args) {
Employee employee1 = new Employee("Alice", 1);
Employee employee2 = new Employee("Bob", 2);
AttendanceManager manager = new AttendanceManager();
manager.checkIn(employee1);
manager.checkIn(employee2);
// 模拟员工1提前下班
manager.checkOut(employee1);
// 员工2正常下班
manager.checkOut(employee2);
// 打印所有打卡记录
for (AttendanceRecord record : manager.getRecords()) {
System.out.println("Employee: " + record.getEmployee().getName() + ", Check-in Date: " + record.getCheckInDate() + ", Check-out Date: " + record.getCheckOutDate());
}
}
}
这个示例中,我们创建了一个员工类(Employee),一个打卡记录类(AttendanceRecord)和一个管理打卡记录的工具类(AttendanceManager)。在主类(Main)中,我们创建了两个员工对象,并使用AttendanceManager来为他们打卡。最后,我们打印出所有员工的打卡记录。