一个高效、简洁的人事管理系统不仅能够提升企业的工作效率,还能优化资源配置,降低运营成本
本文将详细介绍如何使用Java的Swing框架与MySQL数据库结合,实现一个简单但功能全面的人事管理系统
一、引言 Swing是Java提供的一套图形用户界面(GUI)工具包,它以丰富的组件和灵活的布局管理器著称,非常适合开发桌面应用程序
MySQL则是一款开源的关系型数据库管理系统,具有高性能、稳定性和易用性,是中小型应用的首选数据库
结合Swing和MySQL,我们可以开发出既具备良好用户界面又拥有强大数据存储和处理能力的人事管理系统
二、系统需求分析 在开发人事管理系统之前,我们需要明确系统的功能需求
一个简单的人事管理系统应包括以下主要功能: 1.员工信息管理:包括添加、修改、删除和查询员工信息
2.部门信息管理:包括添加、修改、删除和查询部门信息
3.用户管理:提供系统登录功能,对不同用户分配不同权限
4.数据备份与恢复:确保数据的安全性
三、系统设计 1. 数据库设计 首先,我们需要设计数据库表结构
为了简化设计,假设系统只需要两张表:员工表(Employee)和部门表(Department)
员工表(Employee): - EmployeeID(员工ID):主键,自动递增 - Name(姓名):字符串类型 - Gender(性别):字符串类型 - Age(年龄):整数类型 - DepartmentID(部门ID):外键,关联到部门表 - Position(职位):字符串类型 - Salary(薪水):浮点数类型 - HireDate(入职日期):日期类型 部门表(Department): - DepartmentID(部门ID):主键,自动递增 - DepartmentName(部门名称):字符串类型 2. 界面设计 系统界面应简洁明了,便于用户操作
我们可以设计以下几个主要界面: -登录界面:用于用户登录,验证用户名和密码
-主界面:显示系统的主要功能菜单,如员工管理、部门管理等
-员工信息管理界面:用于添加、修改、删除和查询员工信息
-部门信息管理界面:用于添加、修改、删除和查询部门信息
四、系统实现 1. 环境准备 - 安装JDK(Java Development Kit):确保Java开发环境
- 安装MySQL数据库:存储系统数据
- 配置MySQL JDBC驱动:连接Java程序与MySQL数据库
2. 数据库连接 首先,我们需要编写一个数据库连接类,用于管理数据库连接
java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection{ private static final String URL = jdbc:mysql://localhost:3306/personnel_system; private static final String USER = root; private static final String PASSWORD = password; public static Connection getConnection() throws SQLException{ return DriverManager.getConnection(URL, USER, PASSWORD); } } 3. 登录界面实现 使用Swing组件创建一个简单的登录界面,并验证用户输入的用户名和密码
java import javax.swing.; import java.awt.; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class LoginForm extends JFrame{ private JTextField usernameField; private JPasswordField passwordField; private JButton loginButton; public LoginForm(){ // 设置窗体属性 setTitle(人事管理系统登录); setSize(300,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // 创建组件并添加到窗体 JPanel panel = new JPanel(); panel.setLayout(new GridLayout(3,2)); JLabel usernameLabel = new JLabel(用户名:); usernameField = new JTextField(20); JLabel passwordLabel = new JLabel(密码:); passwordField = new JPasswordField(20); loginButton = new JButton(登录); panel.add(usernameLabel); panel.add(usernameField); panel.add(passwordLabel); panel.add(passwordField); panel.add(new JLabel()); //占位 panel.add(loginButton); add(panel); // 添加按钮点击事件监听器 loginButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ String username = usernameField.getText(); char【】 password = passwordField.getPassword(); if(validateLogin(username, new String(password))){ JOptionPane.showMessageDialog(null, 登录成功!); //跳转到主界面 new MainForm().setVisible(true); dispose(); } else{ JOptionPane.showMessageDialog(null, 用户名或密码错误!); } } }); } private boolean validateLogin(String username, String password){ String sql = SELECT - FROM Users WHERE Username = ? AND Password = ?; try(Connection conn = DBConnection.getConnection(); PreparedStatement stmt = conn.prepareStatement(sql)){ stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery(); return rs.next(); } catch(SQLException e){ e.printStackTrace(); return false; } } public static void main(String【】 args){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ new Lo