首先,我们定义一个简单的员工类和考勤记录类:
csharppublic class Employee{ public int Id { get; set; } public string Name { get; set; } public string Department { get; set; }}public class AttendanceRecord{ public int EmployeeId { get; set; } public DateTime CheckInTime { get; set; } public string Status { get; set; } // 可以是 "Present", "Late", "EarlyLeave" 等}
然后,我们创建一个模拟的数据库(在这个例子中,我们使用List来模拟数据库):
csharppublic class AttendanceDatabase{ private List<Employee> employees = new List<Employee>(); private List<AttendanceRecord> records = new List<AttendanceRecord>(); public void AddEmployee(Employee employee) { employees.Add(employee); } public void AddAttendanceRecord(AttendanceRecord record) { records.Add(record); } public Employee GetEmployeeById(int id) { return employees.FirstOrDefault(e => e.Id == id); } public List<AttendanceRecord> GetAttendanceRecords() { return records; }}
接下来,我们创建一个简单的考勤处理类:

csharppublic class AttendanceProcessor{ private AttendanceDatabase database; public AttendanceProcessor(AttendanceDatabase database) { this.database = database; } public void ProcessCardSwipe(int employeeId, DateTime swipeTime) { Employee employee = database.GetEmployeeById(employeeId); if (employee != null) { string status = CheckAttendanceStatus(employee, swipeTime); AttendanceRecord record = new AttendanceRecord { EmployeeId = employee.Id, CheckInTime = swipeTime, Status = status }; database.AddAttendanceRecord(record); } else { Console.WriteLine("Employee not found."); } } private string CheckAttendanceStatus(Employee employee, DateTime swipeTime) { // 这里应该添加实际的逻辑来检查员工的迟到、早退等状态 // 这里只是一个简单的示例,假设所有刷卡都是正常的 return "Present"; }}
最后,我们在主程序中模拟员工刷卡:
csharpclass Program{ static void Main(string[] args) { // 初始化数据库和处理器 AttendanceDatabase database = new AttendanceDatabase(); AttendanceProcessor processor = new AttendanceProcessor(database); // 添加员工到数据库(实际应用中应该从数据库或其他数据源加载) database.AddEmployee(new Employee { Id = 1, Name = "John Doe", Department = "IT" }); database.AddEmployee(new Employee { Id = 2, Name = "Jane Smith", Department = "HR" }); // 模拟员工刷卡 processor.ProcessCardSwipe(1, DateTime.Now); // John Doe 刷卡 processor.ProcessCardSwipe(2, DateTime.Now.AddMinutes(10)); // Jane Smith 10分钟后刷卡 // 打印所有考勤记录 foreach (var record in database.GetAttendanceRecords()) { Console.WriteLine($"Employee: {record.EmployeeId}, Check-in Time: {record.CheckInTime}, Status: {record.Status}"); } Console.ReadKey(); }}
请注意,这个示例非常基础,并没有处理许多实际考勤系统所需的复杂情况,如班次管理、请假、异常处理等。此外,与读卡器的通信部分完全缺失,这通常是实现这类系统的关键部分。在实际应用中,你需要根据具体需求和所使用的读卡器技术来扩展和完善这个示例。
