写一个基于javaweb的考勤管理系统 代码实现
时间: 2024-02-23 09:00:40 浏览: 98
基于java学生考勤管理系统设计与实现.docx
好的,下面是一个基于JavaWeb的考勤管理系统的简单代码实现,包括用户管理、考勤管理、考勤查询和统计分析等模块。
1. 用户管理模块代码实现
该模块主要实现系统管理员对用户信息的添加、删除和修改等操作。
User.java(用户实体类)
```java
public class User {
private int id;
private String username;
private String password;
private String name;
private String department;
// 省略getter和setter方法
}
```
UserDAO.java(用户数据访问对象)
```java
public class UserDAO {
// 添加用户
public void addUser(User user) {
// 数据库操作
}
// 删除用户
public void deleteUser(int id) {
// 数据库操作
}
// 修改用户信息
public void updateUser(User user) {
// 数据库操作
}
// 根据用户名查找用户
public User findUserByName(String username) {
// 数据库操作
}
// 根据ID查找用户
public User findUserById(int id) {
// 数据库操作
}
// 获取所有用户
public List<User> getAllUsers() {
// 数据库操作
}
}
```
UserController.java(用户控制器)
```java
public class UserController {
private UserDAO userDAO = new UserDAO();
// 添加用户
public void addUser(User user) {
userDAO.addUser(user);
}
// 删除用户
public void deleteUser(int id) {
userDAO.deleteUser(id);
}
// 修改用户信息
public void updateUser(User user) {
userDAO.updateUser(user);
}
// 根据用户名查找用户
public User findUserByName(String username) {
return userDAO.findUserByName(username);
}
// 根据ID查找用户
public User findUserById(int id) {
return userDAO.findUserById(id);
}
// 获取所有用户
public List<User> getAllUsers() {
return userDAO.getAllUsers();
}
}
```
2. 考勤管理模块代码实现
该模块主要实现员工进行考勤打卡,并记录打卡时间和考勤情况等信息。
Attendance.java(考勤实体类)
```java
public class Attendance {
private int id;
private int userId;
private Date punchInTime;
private Date punchOutTime;
private int status; // 考勤状态:0-正常,1-迟到,2-早退,3-旷工
// 省略getter和setter方法
}
```
AttendanceDAO.java(考勤数据访问对象)
```java
public class AttendanceDAO {
// 添加考勤记录
public void addAttendance(Attendance attendance) {
// 数据库操作
}
// 修改考勤记录
public void updateAttendance(Attendance attendance) {
// 数据库操作
}
// 根据用户ID和日期查找考勤记录
public Attendance findAttendanceByUserIdAndDate(int userId, Date date) {
// 数据库操作
}
}
```
AttendanceController.java(考勤控制器)
```java
public class AttendanceController {
private AttendanceDAO attendanceDAO = new AttendanceDAO();
// 考勤打卡
public void punchIn(int userId) {
// 获取当前时间
Date now = new Date();
// 获取当天日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(sdf.format(now));
// 查找当天的考勤记录
Attendance attendance = attendanceDAO.findAttendanceByUserIdAndDate(userId, date);
if (attendance == null) {
attendance = new Attendance();
attendance.setUserId(userId);
attendance.setPunchInTime(now);
attendance.setStatus(0); // 默认为正常
attendanceDAO.addAttendance(attendance);
} else {
attendance.setPunchInTime(now);
attendanceDAO.updateAttendance(attendance);
}
}
// 下班打卡
public void punchOut(int userId) {
// 获取当前时间
Date now = new Date();
// 获取当天日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(sdf.format(now));
// 查找当天的考勤记录
Attendance attendance = attendanceDAO.findAttendanceByUserIdAndDate(userId, date);
if (attendance == null) {
attendance = new Attendance();
attendance.setUserId(userId);
attendance.setPunchOutTime(now);
attendance.setStatus(0); // 默认为正常
attendanceDAO.addAttendance(attendance);
} else {
attendance.setPunchOutTime(now);
// 判断是否迟到、早退等情况
if (attendance.getPunchInTime().compareTo(now) > 0) {
attendance.setStatus(1); // 迟到
} else if (attendance.getPunchOutTime().compareTo(now) < 0) {
attendance.setStatus(2); // 早退
} else {
attendance.setStatus(0); // 正常
}
attendanceDAO.updateAttendance(attendance);
}
}
}
```
3. 考勤查询模块代码实现
该模块主要实现员工和管理员查询个人或全员的考勤情况。
AttendanceController.java(考勤控制器)
```java
public class AttendanceController {
private AttendanceDAO attendanceDAO = new AttendanceDAO();
// 根据用户ID和日期查找考勤记录
public Attendance findAttendanceByUserIdAndDate(int userId, Date date) {
return attendanceDAO.findAttendanceByUserIdAndDate(userId, date);
}
// 根据日期查找所有员工的考勤记录
public List<Attendance> findAttendanceByDate(Date date) {
// 数据库操作
}
}
```
4. 统计分析模块代码实现
该模块主要实现管理员对考勤数据进行统计分析,生成报表等。
AttendanceController.java(考勤控制器)
```java
public class AttendanceController {
private AttendanceDAO attendanceDAO = new AttendanceDAO();
// 统计当月所有员工的考勤情况
public Map<String, Integer> countAttendanceByMonth() {
// 获取当前月份
Calendar cal = Calendar.getInstance();
int month = cal.get(Calendar.MONTH) + 1;
// 统计当月所有员工的考勤情况
List<Attendance> attendanceList = attendanceDAO.findAttendanceByMonth(month);
Map<String, Integer> resultMap = new HashMap<>();
for (Attendance attendance : attendanceList) {
if (resultMap.containsKey(attendance.getStatus())) {
resultMap.put(attendance.getStatus(), resultMap.get(attendance.getStatus()) + 1);
} else {
resultMap.put(attendance.getStatus(), 1);
}
}
return resultMap;
}
}
```
以上是一个简单的基于JavaWeb的考勤管理系统的代码实现,具体实现细节可以根据实际情况进行调整和优化。
阅读全文