雇员信息管理系统--雇员信息增删改查实现源码(Java Web+MySQL实现),本系统只实现了对雇员信息对增删改查。
一、环境介绍:
1.开发工具IDE(Eclipse IDE for Enterprise Java Developers. Version: 2019-09 R (4.13.0) Build id: 20190917-1200)
2.JDK版本:1.8
3.数据库:MySQL
本系统分为:
1.C/S控制台版本(在com.hr.view包里面,直接可以在控制台运行)
2.B/S版本,可以启动tomcat服务,在浏览器中操作。
项目源码和jar包都在文末压缩包内;
二、项目的包结构:
三.各个类的具体代码如下:
1.雇员数据处理实现类 EmployeeDaoImpl.java
package com.hr.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.hr.util.DBUtils200;
import com.hr.po.Employee;
public class EmployeeDaoImpl implements IEmployeeDao {
private QueryRunner qr = null;//查询运行器
public EmployeeDaoImpl() {
qr = new QueryRunner();
}
@Override
public List<Employee> queryAll() throws SQLException{
String sql ="select * from employee";
List<Employee> list = qr.query(DBUtils200.getConnection(),sql,
new BeanListHandler<Employee>(Employee.class));
return list;
}
@Override
public void add(Employee e) throws SQLException{
String sql = "insert into employee (emp_name,emp_sex,emp_age,emp_depart) values (?,?,?,?)";
qr.update(DBUtils200.getConnection(),sql,e.getEmp_name(),
e.getEmp_sex(),e.getEmp_age(),e.getEmp_depart());
}
@Override
public void update(Employee e) throws SQLException{
String sql = "update employee set emp_name=?,emp_sex=?,emp_age=?,emp_depart=? where emp_id=?";
qr.update(DBUtils200.getConnection(),sql,e.getEmp_name(),
e.getEmp_sex(),e.getEmp_age(),e.getEmp_depart(),e.getEmp_id());
}
@Override
public void delete(Employee e) throws SQLException{
String sql = "delete from employee where emp_id=?";
qr.update(DBUtils200.getConnection(),sql,e.getEmp_id());
}
@Override
public Employee queryByID(Employee e) throws SQLException{
String sql = "select * from employee where emp_id=?";
Employee emp = qr.query(DBUtils200.getConnection(),sql,
new BeanHandler<Employee>(Employee.class),e.getEmp_id());
return emp;
}
}
2.雇员信息处理接口 IEmployeeDaoImpl.java
package com.hr.dao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.hr.po.Employee;
public interface IEmployeeDao {
//查询所有雇员信息的方法
public List<Employee> queryAll()throws SQLException;
//添加雇员信息的方法
public void add(Employee e)throws SQLException;
//修改雇员信息的方法
public void update(Employee e)throws SQLException;
//删除雇员信息的方法
public void delete(Employee e)throws SQLException;
//根据雇员编号查询雇员信息的方法
public Employee queryByID(Employee e)throws SQLException;
}
3.雇员信息类:Employee.java
package com.hr.po;
import java.io.Serializable;
/**
* Employee.java(雇员类)
* @author 柏圣华
*
*/
public class Employee implements Serializable{
private static final long serialVersionUID = 1L;
private int emp_id;//雇员编号
private String emp_name;//雇员姓名
private int emp_sex;//雇员性别
private int emp_age;//雇员年龄
private String emp_depart;//雇员部门
public Employee() {
super();
}
public Employee(int emp_id, String emp_name, int emp_sex, int emp_age, String emp_depart) {
super();
this.emp_id = emp_id;
this.emp_name = emp_name;
this.emp_sex = emp_sex;
this.emp_age = emp_age;
this.emp_depart = emp_depart;
}
@Override
public String toString() {
return "Employee [emp_id=" + emp_id + ", emp_name=" + emp_name + ", emp_sex=" + emp_sex + ", emp_age=" + emp_age
+ ", emp_depart=" + emp_depart + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + emp_age;
result = prime * result + ((emp_depart == null) ? 0 : emp_depart.hashCode());
result = prime * result + emp_id;
result = prime * result + ((emp_name == null) ? 0 : emp_name.hashCode());
result = prime * result + emp_sex;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Employee other = (Employee) obj;
if (emp_age != other.emp_age)
return false;
if (emp_depart == null) {
if (other.emp_depart != null)
return false;
} else if (!emp_depart.equals(other.emp_depart))
return false;
if (emp_id != other.emp_id)
return false;
if (emp_name == null) {
if (other.emp_name != null)
return false;
} else if (!emp_name.equals(other.emp_name))
return false;
if (emp_sex != other.emp_sex)
return false;
return true;
}
public int getEmp_id() {
return emp_id;
}
public void setEmp_id(int emp_id) {
this.emp_id = emp_id;
}
public String getEmp_name() {
return emp_name;
}
public void setEmp_name(String emp_name) {
this.emp_name = emp_name;
}
public int getEmp_sex() {
return emp_sex;
}
public void setEmp_sex(int emp_sex) {
this.emp_sex = emp_sex;
}
public int getEmp_age() {
return emp_age;
}
public void setEmp_age(int emp_age) {
this.emp_age = emp_age;
}
public String getEmp_depart() {
return emp_depart;
}
public void setEmp_depart(String emp_depart) {
this.emp_depart = emp_depart;
}
}
4.雇员信息业务逻辑处理实现类:EmployeeServiceImpl.java
package com.hr.service;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.hr.dao.EmployeeDaoImpl;
import com.hr.dao.IEmployeeDao;
import com.hr.po.Employee;
public class EmployeeServiceImpl implements IEmployeeService {
IEmployeeDao ied = new EmployeeDaoImpl();
@Override
public List<Employee> queryAll() throws SQLException{
return ied.queryAll();
}
@Override
public void add(Employee e) throws SQLException{
ied.add(e);
}
@Override
public void update(Employee e) throws SQLException{
ied.update(e);
}
@Override
public void delete(Employee e) throws SQLException{
ied.delete(e);
}
@Override
public Employee queryByID(Employee e) throws SQLException{
return ied.queryByID(e);
}
}
5.雇员信息业务逻辑接口IEmployeeService.java
package com.hr.service;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.hr.po.Employee;
public interface IEmployeeService {
//查询所有雇员信息的方法
public List<Employee> queryAll()throws SQLException;
//添加雇员信息的方法
public void add(Employee e)throws SQLException;
//修改雇员信息的方法
public void update(Employee e)throws SQLException;
//删除雇员信息的方法
public void delete(Employee e)throws SQLException;
//根据雇员编号查询雇员信息的方法
public Employee queryByID(Employee e)throws SQLException;
}
6.雇员信息控制器类:EmployeeServlet.java
package com.hr.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hr.po.Employee;
import com.hr.service.EmployeeServiceImpl;
import com.hr.service.IEmployeeService;
/**
* EmployeeServlet.java(雇员信息控制器)
* Servlet implementation class EmployeeServlet
*/
@WebServlet(name = "EmployeeServlet", urlPatterns = "/employeeServlet")
public class EmployeeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
IEmployeeService ies = new EmployeeServiceImpl();
public EmployeeServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if ("add".equals(action)) {
add(request, response);
} else if ("update".equals(action)) {
update(request, response);
} else if ("delete".equals(action)) {
delete(request, response);
} else if ("queryAll".equals(action)) {
queryAll(request, response);
} else if ("queryByID".equals(action)) {
queryByID(request, response);
}
}
private void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String dept = request.getParameter("dept");
Employee e = new Employee(0, name, Integer.parseInt(sex), Integer.parseInt(age), dept);
System.out.println(e.toString());
try {
ies.add(e);
queryAll(request, response);// 添加成功后,返回到雇员信息页面
} catch (SQLException e1) {
e1.printStackTrace();
}
}
private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String dept = request.getParameter("dept");
Employee e = new Employee(Integer.parseInt(id), name, Integer.parseInt(sex), Integer.parseInt(age), dept);
try {
ies.update(e);// 将数据更新到数据库,并返回到雇员信息页面
queryAll(request, response);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String emp_id = request.getParameter("emp_id");
Employee emp = new Employee();
emp.setEmp_id(Integer.parseInt(emp_id));
try {
ies.delete(emp);
queryAll(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}
private void queryAll(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
List<Employee> elist = ies.queryAll();
request.setAttribute("list", elist);
request.getRequestDispatcher("emplyeelist.jsp").forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}
private void queryByID(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String emp_id = request.getParameter("emp_id");
Employee e = new Employee();
e.setEmp_id(Integer.parseInt(emp_id));
try {
Employee emp = ies.queryByID(e);
request.setAttribute("emp", emp);
request.getRequestDispatcher("updateEmployee.jsp").forward(request, response);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
7.数据处理测试类:TestEmployeeDaoImpl.java
package com.hr.test;
import java.sql.SQLException;
import java.util.List;
import com.hr.dao.EmployeeDaoImpl;
import com.hr.po.Employee;
public class TestEmployeeDaoImpl {
public static void main(String[] args) throws Exception{
EmployeeDaoImpl edi = new EmployeeDaoImpl();
edi.update(new Employee(1,"李晓明",1,25,"行政部"));
edi.update(new Employee(2,"杨伟林",2,29,"业务部"));
// edi.add(new Employee(0,"张三",2,25,"行政部"));//注意执行顺序
edi.delete(new Employee(4,"",0,0,""));
List<Employee> list = edi.queryAll();
System.out.println(list.toString());
}
}
8.字符编码过滤器类:CharacterEncodingFilter200.java
package com.hr.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
@WebFilter(
filterName="CharacterEncodingFilter200",
urlPatterns="/*",
initParams= {@WebInitParam(name="characterEncoding",value="utf-8")}
)
public class CharacterEncodingFilter200 implements Filter {
private String characterEncoding;
public CharacterEncodingFilter200() {
}
public void destroy() {
System.out.println("===destroy()方法=====");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("characterEncoding="+characterEncoding);
if(null!=characterEncoding) {
request.setCharacterEncoding(characterEncoding);
response.setCharacterEncoding(characterEncoding);
}
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("===init()方法=====");
characterEncoding = fConfig.getInitParameter("characterEncoding");
}
}
9.数据库连接工具类:DBUtils200.java
package com.hr.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;
public class DBUtils200 {
public static String URL;//数据库连接信息
public static String USERNAME;//用户名
public static String PASSWORD;//密码
public static String DRIVER;//mysql的驱动类
private static ResourceBundle rb = ResourceBundle.getBundle("com.hr.util.db-config");
private DBUtils200() {}
//使用静态代码块加载驱动程序
static {
URL = rb.getString("jdbc.url");
USERNAME = rb.getString("jdbc.username");
PASSWORD = rb.getString("jdbc.password");
DRIVER = rb.getString("jdbc.driver");
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//定义一个获取数据库连接的方法
public static Connection getConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("获取数据库连接失败,请检查URL,USERNAME,PASSWORD和DRIVER是否正确?");
}
return conn;
}
//关闭数据库的连接
public static void close(ResultSet rs,Statement stat,Connection conn) {
try {
if(null!=rs) {
rs.close();
}
if(null!=stat) {
stat.close();
}
if(null!=conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
System.out.println(DBUtils200.getConnection());
}
}
10.数据库配置属性文件:db-config.properties
jdbc.url=jdbc:mysql://localhost:3306/handson?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
jdbc.driver=com.mysql.jdbc.Driver
四.前端界面源代码分为C/S控制台版本和B/S版本
1.C/S控制台版本如下:
package com.hr.view;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;
import com.hr.dao.EmployeeDaoImpl;
import com.hr.dao.IEmployeeDao;
import com.hr.po.Employee;
/**
* EmployeeManager200.java(雇员管理系统业务界面类)
* @author baishenghua
*
*/
public class EmployeeManager200 {
static Scanner sc = new Scanner(System.in);
static IEmployeeDao ied = new EmployeeDaoImpl();
public static void main(String[] args) {
int cmd= 1;
while(true) {
System.out.println("|----------------雇员管理系统-----------------|");
System.out.println("|1-增加 2-删除 3-修改 4-查找 5-显示所有 0-退出|");
System.out.println("|--------------------------------------|");
System.out.println("请选择业务");
cmd = sc.nextInt();
if(cmd==0) {
break;
}
switch (cmd) {
case 1:add();break;
case 2:delete();break;
case 3:update();break;
case 4:queryLike();break;
case 5:queryAll();break;
default:System.out.println("你输入的命令有误,请检查确认后重新输入!");break;
}
}
}
public static void add() {
System.out.println("------------增加------------");
System.out.println("雇员姓名:");
String name = sc.next();
System.out.println("雇员性别[1-男,2-女]:");
int sex = sc.nextInt();
System.out.println("雇员年龄:");
int age = sc.nextInt();
System.out.println("雇员部门:");
String depart = sc.next();
Employee e = new Employee(0,name,sex,age,depart);
try {
ied.add(e);
System.out.println("增加成功!---------------");
} catch (SQLException e1) {
e1.printStackTrace();
}
}
public static void delete() {
System.out.println("------------删除------------");
System.out.println("请输入要删除的雇员编号:");
int no = sc.nextInt();
Employee emp = new Employee();
emp.setEmp_id(no);
try {
emp = ied.queryByID(emp);
System.out.println(emp.toString());
System.out.println("确认要删除吗?1-是 0-否");
int cmd = sc.nextInt();
if(1==cmd) {
ied.delete(emp);
System.out.println("删除成功!");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void update() {
System.out.println("------------修改------------");
System.out.println("请输入要修改雇员的编号:");
int no = sc.nextInt();
Employee emp = new Employee();
emp.setEmp_id(no);
try {
emp = ied.queryByID(emp);
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(emp.toString());
System.out.println("请重新输入雇员的信息:");
System.out.println("雇员姓名:");
String name = sc.next();
System.out.println("雇员性别[1-男,2-女]:");
int sex = sc.nextInt();
System.out.println("雇员年龄:");
int age = sc.nextInt();
System.out.println("雇员部门:");
String depart = sc.next();
Employee em = new Employee(no,name,sex,age,depart);
try {
ied.update(em);
System.out.println("修改成功!---------------");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void queryLike() {
System.out.println("-------------模糊查询------------");
System.out.println("请输入查询关键字:");
String name = sc.next();
Employee emp = new Employee();
emp.setEmp_name(name);
try {
List<Employee> list = ied.queryByName(emp);
for(Employee em:list) {
System.out.println(em.toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void queryAll() {
System.out.println("-------------查询所有------------");
try {
List<Employee> list = ied.queryAll();
for(Employee em:list) {
System.out.println(em.toString());
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.B/S版本如下:
1.增加雇员信息页面:addEmployee.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>增加雇员</title>
</head>
<body>
<div align="center"><span>增加雇员</span>
<form action="employeeServlet?action=add" method="post">
<table>
<tr><td>雇员姓名:</td><td><input type="text" name="name"/></td></tr>
<tr><td>雇员性别:</td><td><input type="radio" checked="checked" value="1" name="sex"/>男
<input type="radio" value="2" name="sex"/>女</td></tr>
<tr><td>雇员年龄:</td><td><input type="text" name="age"/></td></tr>
<tr><td>雇员部门:</td><td><input type="text" name="dept"/></td></tr>
<tr><td><input type="submit" value="增加"/></td><td><input type="reset" value="取消"/></td></tr>
</table>
</form>
</div>
</body>
</html>
2.雇员信息页面:emplyeelist.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>雇员信息</title>
<style>
table,table tr th,table tr td{
border:1px solid #000;
text-align:center;
}
table{
width:600px;
border-collapse:collapse;
}
#addemp{
width:600px;
height:50px;
}
#addemp p{
padding-top:5px;
padding-left:480px;
}
a{
text-decoration:none;
}
</style>
</head>
<body>
<div align="center">
<font size="5">雇员信息</font>
<div id="addemp"><p><a href="addEmployee.jsp">添加雇员</a></p></div>
<form action="" method="post">
<table>
<tr><td>雇员编号</td><td>雇员姓名</td><td>雇员性别</td><td>雇员年龄</td><td>所属部门</td><td>操作</td></tr>
<c:forEach items="${list}" var="emp">
<tr><td>${emp.emp_id}</td><td>${emp.emp_name}</td><td>${emp.emp_sex}</td>
<td>${emp.emp_age}</td><td>${emp.emp_depart}</td>
<td><a href="employeeServlet?action=queryByID&emp_id=${emp.emp_id }">修改</a>
<a href="employeeServlet?action=delete&emp_id=${emp.emp_id }" onclick="return confirm('您确定要删除吗?');">删除</a></td>
</tr>
</c:forEach>
</table>
</form>
</div>
</body>
</html>
3.修改雇员信息页面updateEmployee.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>修改雇员</title>
</head>
<body>
<div align="center">修改雇员
<form action="employeeServlet?action=update" method="post">
<table>
<tr><td>雇员编号:</td><td><input type="text" name="id" value="${emp.emp_id}" readonly="readonly"/></td></tr>
<tr><td>雇员姓名:</td><td><input type="text" name="name" value="${emp.emp_name}"/></td></tr>
<tr><td>雇员性别:</td><c:if test="${emp.emp_sex==1 }">
<td><input type="radio" checked="checked" name="sex" value="1"/>男
<input type="radio" name="sex" value="2"/>女</td>
</c:if>
<c:if test="${emp.emp_sex==2 }">
<td><input type="radio" name="sex" value="1"/>男
<input type="radio" checked="checked" name="sex" value="2"/>女</td>
</c:if>
</tr>
<tr><td>雇员年龄:</td><td><input type="text" name="age" value="${emp.emp_age}"/></td></tr>
<tr><td>雇员部门:</td><td><input type="text" name="dept" value="${emp.emp_depart}"/></td></tr>
<tr><td><input type="submit" value="修改"/></td><td><input type="reset" value="取消"/></td></tr>
</table>
</form>
</div>
</body>
</html>
五、数据库脚本
CREATE DATABASE IF NOT EXISTS `handson` DEFAULT charset utf8 collate utf8_general_ci;
USE `handson`;
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`EMP_ID` int(4) NOT NULL AUTO_INCREMENT,
`EMP_NAME` varchar(100) DEFAULT NULL,
`EMP_SEX` int(4) DEFAULT NULL,
`EMP_AGE` int(4) DEFAULT NULL,
`EMP_DEPART` varchar(50) DEFAULT NULL,
PRIMARY KEY (`EMP_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into `employee`(`EMP_ID`,`EMP_NAME`,`EMP_SEX`,`EMP_AGE`,`EMP_DEPART`) values (1,'李晓明',1,25,'行政部'),(2,'杨伟林',1,29,'行政部');
六、项目的源代码压缩包
点击下面连接:
https://download.csdn.net/download/kuailexiaohan/12523011