用javaweb写出部门员工管理系统
时间: 2023-09-24 10:11:39 浏览: 90
好的,我可以提供一个简单的示例来实现部门员工管理系统。这个系统将包括以下功能:
1. 添加、编辑和删除部门信息
2. 添加、编辑和删除员工信息
3. 显示部门和员工列表
首先,您需要创建一个数据库来存储部门和员工信息。以下是一个示例的SQL脚本来创建一个DEPARTMENT表和一个EMPLOYEE表:
```
CREATE TABLE DEPARTMENT (
DEPT_ID INT NOT NULL AUTO_INCREMENT,
DEPT_NAME VARCHAR(50) NOT NULL,
PRIMARY KEY (DEPT_ID)
);
CREATE TABLE EMPLOYEE (
EMP_ID INT NOT NULL AUTO_INCREMENT,
EMP_NAME VARCHAR(50) NOT NULL,
EMP_DEPT INT NOT NULL,
EMP_EMAIL VARCHAR(50),
PRIMARY KEY (EMP_ID),
FOREIGN KEY (EMP_DEPT) REFERENCES DEPARTMENT(DEPT_ID)
);
```
然后,您需要创建一个Java Web应用程序,并添加一个Servlet来处理请求。以下是一个示例的Servlet代码:
```java
@WebServlet("/employees")
public class EmployeeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Employee> employees = EmployeeDAO.getAllEmployees();
request.setAttribute("employees", employees);
request.getRequestDispatcher("/employees.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
if ("add".equals(action)) {
String name = request.getParameter("name");
String email = request.getParameter("email");
int deptId = Integer.parseInt(request.getParameter("deptId"));
Employee employee = new Employee(name, email, deptId);
EmployeeDAO.addEmployee(employee);
} else if ("edit".equals(action)) {
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String email = request.getParameter("email");
int deptId = Integer.parseInt(request.getParameter("deptId"));
Employee employee = new Employee(id, name, email, deptId);
EmployeeDAO.updateEmployee(employee);
} else if ("delete".equals(action)) {
int id = Integer.parseInt(request.getParameter("id"));
EmployeeDAO.deleteEmployee(id);
}
response.sendRedirect(request.getContextPath() + "/employees");
}
}
```
这个Servlet处理了GET和POST请求。GET请求用于显示员工列表,而POST请求用于添加、编辑或删除员工。当用户单击添加、编辑或删除按钮时,JavaScript代码将向Servlet发送POST请求,并将相应的参数发送到Servlet。
您还需要创建一个JSP页面来显示部门和员工列表。以下是一个示例的JSP页面代码:
```html
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Employee Management System</title>
</head>
<body>
<h1>Employee Management System</h1>
<h2>Employees</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Department</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<c:forEach var="employee" items="${employees}">
<tr>
<td>${employee.id}</td>
<td>${employee.name}</td>
<td>${employee.email}</td>
<td>${employee.department.name}</td>
<td>
<form method="post" action="${pageContext.request.contextPath}/employees">
<input type="hidden" name="id" value="${employee.id}">
<input type="hidden" name="deptId" value="${employee.department.id}">
<input type="hidden" name="email" value="${employee.email}">
<input type="hidden" name="action" value="edit">
<button type="submit">Edit</button>
</form>
<form method="post" action="${pageContext.request.contextPath}/employees">
<input type="hidden" name="id" value="${employee.id}">
<input type="hidden" name="deptId" value="${employee.department.id}">
<input type="hidden" name="email" value="${employee.email}">
<input type="hidden" name="action" value="delete">
<button type="submit">Delete</button>
</form>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<h2>Add Employee</h2>
<form method="post" action="${pageContext.request.contextPath}/employees">
<input type="text" name="name" placeholder="Name" required>
<input type="email" name="email" placeholder="Email" required>
<select name="deptId" required>
<option value="">-- Select Department --</option>
<c:forEach var="department" items="${departments}">
<option value="${department.id}">${department.name}</option>
</c:forEach>
</select>
<input type="hidden" name="action" value="add">
<button type="submit">Add</button>
</form>
<h2>Departments</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<c:forEach var="department" items="${departments}">
<tr>
<td>${department.id}</td>
<td>${department.name}</td>
<td>
<form method="post" action="${pageContext.request.contextPath}/departments">
<input type="hidden" name="id" value="${department.id}">
<input type="hidden" name="name" value="${department.name}">
<input type="hidden" name="action" value="edit">
<button type="submit">Edit</button>
</form>
<form method="post" action="${pageContext.request.contextPath}/departments">
<input type="hidden" name="id" value="${department.id}">
<input type="hidden" name="action" value="delete">
<button type="submit">Delete</button>
</form>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<h2>Add Department</h2>
<form method="post" action="${pageContext.request.contextPath}/departments">
<input type="text" name="name" placeholder="Name" required>
<input type="hidden" name="action" value="add">
<button type="submit">Add</button>
</form>
</body>
</html>
```
这个JSP页面呈现了一个表格,其中包含员工和部门列表。它还包括一个表单,用户可以使用它来添加新的员工或部门。当用户单击编辑或删除按钮时,JavaScript代码将向Servlet发送POST请求,并将相应的参数发送到Servlet。
最后,您需要创建一个DAO类来处理数据库操作。以下是一个示例的DAO类代码:
```java
public class EmployeeDAO {
public static List<Employee> getAllEmployees() {
List<Employee> employees = new ArrayList<>();
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password")) {
String sql = "SELECT * FROM EMPLOYEE JOIN DEPARTMENT ON EMPLOYEE.EMP_DEPT = DEPARTMENT.DEPT_ID";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
int id = rs.getInt("EMP_ID");
String name = rs.getString("EMP_NAME");
String email = rs.getString("EMP_EMAIL");
int deptId = rs.getInt("EMP_DEPT");
String deptName = rs.getString("DEPT_NAME");
Department department = new Department(deptId, deptName);
Employee employee = new Employee(id, name, email, department);
employees.add(employee);
}
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return employees;
}
public static void addEmployee(Employee employee) {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password")) {
String sql = "INSERT INTO EMPLOYEE (EMP_NAME, EMP_EMAIL, EMP_DEPT) VALUES (?, ?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, employee.getName());
stmt.setString(2, employee.getEmail());
stmt.setInt(3, employee.getDepartment().getId());
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void updateEmployee(Employee employee) {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password")) {
String sql = "UPDATE EMPLOYEE SET EMP_NAME = ?, EMP_EMAIL = ?, EMP_DEPT = ? WHERE EMP_ID = ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, employee.getName());
stmt.setString(2, employee.getEmail());
stmt.setInt(3, employee.getDepartment().getId());
stmt.setInt(4, employee.getId());
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void deleteEmployee(int id) {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password")) {
String sql = "DELETE FROM EMPLOYEE WHERE EMP_ID = ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setInt(1, id);
stmt.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
这个DAO类处理了所有的数据库操作,例如获取员工列表、添加新员工、更新员工信息和删除员工。它使用JDBC API来与MySQL数据库进行通信。
这是一个非常简单的示例,但它可以帮助您了解如何使用Java Web技术来创建部门员工管理系统。您可以根据自己的需求进行修改和扩展。