首先展示运行界面及功能(java、数据库代码在后头):

这篇文章中红色字体所代表的的是此人力资源系统的使用顺序。

主界面,选择身份。

先选择进入薪酬专员界面,因为要先定义薪酬标准,为后续人事专员录入员工信息时提供一个拥有薪酬标准的职位供选择。

薪酬专员录入薪酬标准

薪酬专员录入薪酬标准完毕后,薪酬标准需要薪酬经理审核才能生效,因此,进入薪酬经理界面,选择审核薪酬标准。

薪酬经理通过某个薪酬标准。

上述薪酬标准定义完毕了。

人事专员便能够录入员工资料信息。

进入录入员工信息界面,填写或选择相应的内容,点击 录入按钮发送至sql server数据库。

在人事经理-->查询员工信息界面中,可以查看到刚刚人事专员录入的员工信息。

同样,员工资料是需要人事经理审核的,当然人事经理还有删除该员工资料的能力,这个删除并不是真正在数据库中删除,而是标记为“已删除”,人事经理后续仍然可以将其还原。

当存在一些通过人事经理审核的员工资料时,在薪酬经理-->查看个人薪酬发放标准界面中就可以查看这些员工的个人薪酬发放表,里面包含总工资等。

以下的代码为具有代表性的几个类,其他的类与这些类大同小异。

我的做法是:主界面这个类一个继承jframe的窗口;

其他的每一个继承jpanel,它们都是一个jpanel面板。

主界面:

import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.UIManager;
public class 主界面_jframe extends JFrame {private static final long serialVersionUID = 1L;public 主界面_jframe() {// 初始界面身份选择_jpanel 身份选择 = new 身份选择_jpanel();setTitle("人力管理系统");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(1080, 720);this.setLocationRelativeTo(null);// 窗口居中this.setVisible(true);setLayout(null);// 布局管理器取消默认设置this.add(身份选择);}public static void main(String[] args) {Font f = new Font("宋体", Font.PLAIN, 20);UIManager.put("Button" + ".font", f);new 主界面_jframe();}
}

身份选择界面:

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class 身份选择_jpanel extends JPanel {public 身份选择_jpanel() {setSize(1080, 720);JLabel l1 = new JLabel("身份选择");JButton b1 = new JButton("人事专员");JButton b2 = new JButton("人事经理");JButton b3 = new JButton("薪酬专员");JButton b4 = new JButton("薪酬经理");JButton exitButton = new JButton("退出");setLayout(null);// jPanel布局管理器取消默认设置add(l1);add(b1);add(b2);add(b3);add(b4);add(exitButton);l1.setFont(new Font("黑体", Font.PLAIN, 32));l1.setBounds(335, 50, 300, 100);b1.setBounds(300, 150, 200, 50);b2.setBounds(300, 220, 200, 50);b3.setBounds(300, 290, 200, 50);b4.setBounds(300, 360, 200, 50);exitButton.setBounds(300, 430, 200, 50);b1.addActionListener(new ActionListener() // 监听人事专员按钮{public void actionPerformed(ActionEvent e) {removeAll();人事专员_jpanel 人事专员 = new 人事专员_jpanel();add(人事专员);repaint();}});b2.addActionListener(new ActionListener() // 监听人事经理按钮{public void actionPerformed(ActionEvent e) {removeAll();人事经理_jpanel 人事经理 = new 人事经理_jpanel();add(人事经理);repaint();}});b3.addActionListener(new ActionListener() // 监听薪酬专员按钮{public void actionPerformed(ActionEvent e) {removeAll();薪酬专员_jpanel 薪酬专员 = new 薪酬专员_jpanel();add(薪酬专员);repaint();}});b4.addActionListener(new ActionListener() // 监听薪酬经理按钮{public void actionPerformed(ActionEvent e) {removeAll();薪酬经理_jpanel 薪酬经理 = new 薪酬经理_jpanel();add(薪酬经理);repaint();}});exitButton.addActionListener(new ActionListener() // 退出按钮{public void actionPerformed(ActionEvent e) {System.exit(0);}});}
}

人事专员界面:

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class 人事专员_jpanel extends JPanel {public 人事专员_jpanel() {setSize(1080, 720);JLabel l1 = new JLabel("人事专员");JButton 录入员工资料按钮 = new JButton("录入员工资料");JButton 查询与修改按钮 = new JButton("查询/修改");JButton backButton = new JButton("返回");this.setLayout(null);// jPanel布局管理器取消默认设置this.add(l1);this.add(录入员工资料按钮);this.add(查询与修改按钮);this.add(backButton);l1.setFont(new Font("黑体", Font.PLAIN, 32));l1.setBounds(335, 50, 300, 100);录入员工资料按钮.setBounds(300, 150, 200, 50);查询与修改按钮.setBounds(300, 220, 200, 50);backButton.setBounds(300, 290, 200, 50);录入员工资料按钮.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {removeAll();录入员工资料_jpanel 录入员工资料 = new 录入员工资料_jpanel();add(录入员工资料);repaint();}});查询与修改按钮.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {removeAll();查询与修改_jpanel 查询与修改 = new 查询与修改_jpanel();add(查询与修改);repaint();}});backButton.addActionListener(new ActionListener() // 监听人事经理按钮{public void actionPerformed(ActionEvent e) {removeAll();身份选择_jpanel 身份选择 = new 身份选择_jpanel();add(身份选择);repaint();}});}
}

录入员工资料(录入的信息以t-sql代码发送至数据库,在数据库端执行这段t-sql代码):

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class 录入员工资料_jpanel extends JPanel {public 录入员工资料_jpanel() {setSize(1080, 720);JLabel l1 = new JLabel("一级机构:");JComboBox<String> c1 = new JComboBox<String>();// 一级机构下拉框JLabel l2 = new JLabel("二级机构:");JComboBox<String> c2 = new JComboBox<String>();// 二级机构下拉框JLabel l3 = new JLabel("三级机构:");JComboBox<String> c3 = new JComboBox<String>();// 三级机构下拉框JLabel l4 = new JLabel("职位:");JComboBox<String> c4 = new JComboBox<String>();// 职位下拉框JLabel l5 = new JLabel("姓名:");JTextField t5 = new JTextField();// 姓名输入框JLabel l6 = new JLabel("性别:");JComboBox<String> c6 = new JComboBox<String>();// 性别下拉框c6.addItem("男");c6.addItem("女");JLabel l7 = new JLabel("Email:");JTextField t7 = new JTextField();// Email输入框JLabel l8 = new JLabel("电话:");JTextField t8 = new JTextField();// 电话输入框JLabel l9 = new JLabel("QQ:");JTextField t9 = new JTextField();// QQ输入框JLabel l10 = new JLabel("住址:");JTextField t10 = new JTextField();// 住址输入框JLabel l11 = new JLabel("国籍:");JTextField t11 = new JTextField();// 国籍输入框JLabel l12 = new JLabel("民族:");JTextField t12 = new JTextField();// 民族输入框JLabel l13 = new JLabel("年龄:");JTextField t13 = new JTextField();// 年龄输入框JLabel l14 = new JLabel("学历:");JComboBox<String> c14 = new JComboBox<String>();// 学历下拉框c14.addItem("专科");c14.addItem("本科");c14.addItem("研究生");JLabel l15 = new JLabel("薪酬标准:");JComboBox<String> c15 = new JComboBox<String>();// 薪酬标准下拉框String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=人力资源管理系统2"; // 人力资源管理系统为数据库名String userName = "sa"; // 账号String userPwd = "sa"; // 填写密码try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();System.out.println("连接数据库成功1");String strSQL = "select 薪酬标准名称 from dbo.薪酬标准表 where 标准状态='正常'";ResultSet rs = st.executeQuery(strSQL);while (rs.next()) {c15.addItem(rs.getString(1));}String strSQL1 = "select 单位名称 from 机构与职位表 where 单位关系 like '_'";ResultSet rs1 = st.executeQuery(strSQL1);while (rs1.next()) {c1.addItem(rs1.getString(1));}String strSQL3 = "select 单位名称 from 机构与职位表 where 单位关系='0.0.0'";ResultSet rs3 = st.executeQuery(strSQL3);while (rs3.next()) {c3.addItem(rs3.getString(1));}String strSQL4 = "select 单位名称 from 机构与职位表 where 单位关系='0.0.0.0'";ResultSet rs4 = st.executeQuery(strSQL4);while (rs4.next()) {c4.addItem(rs4.getString(1));}dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}c1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {c2.removeAllItems();try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();System.out.println("连接数据库成功1");String strSQL1 = "declare @单位关系 varchar(10) set @单位关系=(select 单位关系 from 机构与职位表 where 单位名称='"+ c1.getSelectedItem() + "' ) select 单位名称 from 机构与职位表 where 单位关系 like @单位关系+'._'";ResultSet rs1 = st.executeQuery(strSQL1);while (rs1.next()) {c2.addItem(rs1.getString(1));}dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}}});JLabel l16 = new JLabel("个人履历:");JTextField t16 = new JTextField();// 个人履历输入框JLabel l17 = new JLabel("家庭关系信息:");JTextField t17 = new JTextField();// 家庭关系信息输入框JLabel l18 = new JLabel("备注:");JTextField t18 = new JTextField();// 备注输入框JLabel l19 = new JLabel("登记人:");l19.setFont(new Font(null, Font.BOLD, 20));JTextField t19 = new JTextField();// 登记人输入框JLabel l20 = new JLabel("建档时间" + gettime());l20.setFont(new Font(null, Font.BOLD, 20));JLabel l21 = new JLabel("当前正在做的业务是:");JLabel l22 = new JLabel("<html><u>首页--></u><html>");l22.setForeground(Color.blue);JLabel l23 = new JLabel("<html><u>人事专员--></u><html>");l23.setForeground(Color.blue);JLabel l24 = new JLabel("录入员工信息");JButton b1 = new JButton("录入");// 录入按钮JButton b2 = new JButton("清空");// 清空按钮JButton backButton = new JButton("返回");// 返回按钮setLayout(null);// jPanel布局管理器取消默认设置add(l1);add(l2);add(l3);add(l4);add(l5);add(l6);add(l7);add(l8);add(l9);add(l10);add(l11);add(l12);add(l13);add(l14);add(l15);add(l16);add(l17);add(l18);add(l19);add(l20);add(c1);add(c2);add(c3);add(c4);add(t5);add(c6);add(t7);add(t8);add(t9);add(t10);add(t11);add(t12);add(t13);add(c14);add(c15);add(t16);add(t17);add(t18);add(t19);add(l21);add(l22);add(l23);add(l24);add(b1);add(b2);add(backButton);l1.setBounds(50, 50, 75, 25);// 一级机构位置c1.setBounds(125, 50, 100, 25);l2.setBounds(225, 50, 75, 25);// 二级机构位置c2.setBounds(300, 50, 100, 25);l3.setBounds(400, 50, 75, 25);// 三级机构位置c3.setBounds(475, 50, 100, 25);l4.setBounds(575, 50, 75, 25);// 职位位置c4.setBounds(650, 50, 100, 25);l5.setBounds(750, 50, 75, 25);// 姓名位置t5.setBounds(825, 50, 100, 25);l6.setBounds(50, 100, 75, 25);// 性别位置c6.setBounds(125, 100, 100, 25);l7.setBounds(225, 100, 75, 25);// Email位置t7.setBounds(300, 100, 100, 25);l8.setBounds(400, 100, 75, 25);// 电话位置t8.setBounds(475, 100, 100, 25);l9.setBounds(575, 100, 75, 25);// QQ位置t9.setBounds(650, 100, 100, 25);l10.setBounds(750, 100, 75, 25);// 住址位置t10.setBounds(825, 100, 100, 25);l11.setBounds(50, 150, 75, 25);// 国籍位置t11.setBounds(125, 150, 100, 25);l12.setBounds(225, 150, 75, 25);// 民族位置t12.setBounds(300, 150, 100, 25);l13.setBounds(400, 150, 75, 25);// 年龄位置t13.setBounds(475, 150, 100, 25);l14.setBounds(575, 150, 75, 25);// 学历位置c14.setBounds(650, 150, 100, 25);l15.setBounds(750, 150, 75, 25);// 薪酬标准位置c15.setBounds(825, 150, 100, 25);l16.setBounds(50, 200, 75, 25);// 个人履历位置t16.setBounds(125, 200, 400, 35);l17.setBounds(50, 250, 75, 25);// 家庭关系信息位置t17.setBounds(125, 250, 400, 35);l18.setBounds(50, 300, 75, 25);// 备注位置t18.setBounds(125, 300, 400, 35);l19.setBounds(680, 250, 75, 25);// 登记人位置t19.setBounds(750, 250, 150, 30);l20.setBounds(690, 280, 200, 35);// 登记时间位置l21.setBounds(50, 10, 150, 25);l22.setBounds(200, 10, 50, 25);l23.setBounds(270, 10, 75, 25);l24.setBounds(350, 10, 75, 25);b1.setBounds(150, 400, 150, 30);// 录入按钮位置b2.setBounds(350, 400, 150, 30);// 清空按钮位置backButton.setBounds(550, 400, 150, 30);// 返回按钮位置l22.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));l23.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));addMouseListener(new MouseListener() {@Overridepublic void mouseClicked(MouseEvent e) {if (e.getX() <= l22.getX() + l22.getWidth() && e.getX() >= l22.getX()&& e.getY() <= l22.getY() + l22.getHeight() && e.getY() >= l22.getY()) {removeAll();身份选择_jpanel 身份选择 = new 身份选择_jpanel();add(身份选择);repaint();}if (e.getX() <= l23.getX() + l23.getWidth() && e.getX() >= l23.getX()&& e.getY() <= l23.getY() + l23.getHeight() && e.getY() >= l23.getY()) {removeAll();人事专员_jpanel 人事专员 = new 人事专员_jpanel();add(人事专员);repaint();}}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}});b1.addActionListener(new ActionListener() // 录入按钮{public void actionPerformed(ActionEvent e) {if (t5.getText().length() != 0 && t7.getText().length() != 0 && t8.getText().length() != 0&& t9.getText().length() != 0 && t10.getText().length() != 0 && t11.getText().length() != 0&& t12.getText().length() != 0 && t13.getText().length() != 0 && t16.getText().length() != 0&& t17.getText().length() != 0 && t18.getText().length() != 0 && t19.getText().length() != 0) {try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();System.out.println("连接数据库成功111");String strSQL = "insert into dbo.员工资料表(一级机构,二级机构,三级机构,职位,姓名,性别,Email,电话,QQ,住址,国籍,民族,年龄,学历,薪酬标准,个人履历,家庭关系信息,备注,登记人,状态)"+ " values('" + c1.getSelectedItem() + "','" + c2.getSelectedItem() + "','"+ c3.getSelectedItem() + "','" + c4.getSelectedItem() + "','" + t5.getText() + "','"+ c6.getSelectedItem() + "','" + t7.getText() + "','" + t8.getText() + "','"+ t9.getText() + "','" + t10.getText() + "','" + t11.getText() + "','" + t12.getText()+ "','" + t13.getText() + "','" + c14.getSelectedItem() + "','" + c15.getSelectedItem()+ "','" + t16.getText() + "','" + t17.getText() + "','" + t18.getText() + "','"+ t19.getText() + "','待复核')";boolean rs = st.execute(strSQL);System.out.println(rs);JOptionPane.showMessageDialog(null, "录入成功!", "恭喜", JOptionPane.DEFAULT_OPTION);dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}} else {JOptionPane.showMessageDialog(null, "不能留空!", "提示", JOptionPane.ERROR_MESSAGE);}}});b2.addActionListener(new ActionListener() // 清空按钮{public void actionPerformed(ActionEvent e) {removeAll();录入员工资料_jpanel 录入员工资料 = new 录入员工资料_jpanel();add(录入员工资料);repaint();}});backButton.addActionListener(new ActionListener() // 返回按钮{public void actionPerformed(ActionEvent e) {removeAll();人事专员_jpanel 人事专员 = new 人事专员_jpanel();add(人事专员);repaint();}});}public static String gettime() {Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");return sdf.format(date);}}

人事专员的查询与修改功能(查询到的员工资料输出在表格内,点击表格单元可以进行修改):

import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class 查询与修改_jpanel extends JPanel {public 查询与修改_jpanel() {setSize(1080, 720);setLayout(null);// jPanel布局管理器取消默认设置JLabel l1 = new JLabel("一级机构:");JLabel l2 = new JLabel("二级机构:");JLabel l3 = new JLabel("三级机构:");JLabel l4 = new JLabel("职位:");JLabel l5 = new JLabel("建档时间:");JLabel l6 = new JLabel("至");JComboBox<String> c1 = new JComboBox<String>();// 一级机构下拉框JComboBox<String> c2 = new JComboBox<String>();// 二级机构下拉框JComboBox<String> c3 = new JComboBox<String>();// 三级机构下拉框JComboBox<String> c4 = new JComboBox<String>();// 职位下拉框String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=人力资源管理系统2"; // 人力资源管理系统为数据库名String userName = "sa"; // 账号String userPwd = "sa"; // 填写密码try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();System.out.println("连接数据库成功1");String strSQL1 = "select 单位名称 from 机构与职位表 where 单位关系 like '_'";ResultSet rs1 = st.executeQuery(strSQL1);while (rs1.next()) {c1.addItem(rs1.getString(1));}String strSQL3 = "select 单位名称 from 机构与职位表 where 单位关系='0.0.0'";ResultSet rs3 = st.executeQuery(strSQL3);while (rs3.next()) {c3.addItem(rs3.getString(1));}String strSQL4 = "select 单位名称 from 机构与职位表 where 单位关系='0.0.0.0'";ResultSet rs4 = st.executeQuery(strSQL4);while (rs4.next()) {c4.addItem(rs4.getString(1));}dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}c1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {c2.removeAllItems();try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();System.out.println("连接数据库成功1");String strSQL1 = "declare @单位关系 varchar(10) set @单位关系=(select 单位关系 from 机构与职位表 where 单位名称='"+ c1.getSelectedItem() + "' ) select 单位名称 from 机构与职位表 where 单位关系 like @单位关系+'._'";ResultSet rs1 = st.executeQuery(strSQL1);while (rs1.next()) {c2.addItem(rs1.getString(1));}dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}}});JTextField t1 = new JTextField();// 查找时间范围JTextField t2 = new JTextField();JButton b1 = new JButton("按条件查询");// 查找按钮JButton b2 = new JButton("清空");// 清空按钮JButton b3 = new JButton("显示所有");// 显示所有员工按钮JButton b4 = new JButton("修改");// 修改按钮JButton backButton = new JButton("返回");// 返回按钮JLabel l21 = new JLabel("当前正在做的业务是:");JLabel l22 = new JLabel("<html><u>首页--></u><html>");l22.setForeground(Color.blue);JLabel l23 = new JLabel("<html><u>人事专员--></u><html>");l23.setForeground(Color.blue);JLabel l24 = new JLabel("查询与修改员工资料");String[][] datas = {};String[] titles = { "档案编号", "员工编号", "一级机构", "二级机构", "三级机构", "职位", "姓名", "性别", "Email", "电话", "QQ", "住址", "国籍","民族", "年龄", "学历", "薪酬标准", "个人履历", "家庭关系信息", "备注", "登记人", "登记时间", "状态" };DefaultTableModel myModel = new DefaultTableModel(datas, titles);// myModel存放表格的数据JTable table = new JTable(myModel);// 表格对象table的数据来源是myModel对象JScrollPane scrollPane = new JScrollPane(table);// 带滚动条的面板table.setRowHeight(20);// 行高table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);// 将表格自动调整的状态给关闭掉scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);// 设置水平滚动条需要时可见scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);table.setSelectionForeground(Color.red);TableColumn tableColumn = table.getColumn("状态");// DefaultTableCellRenderer类可以绘制单元格的背景、字体颜色等功能DefaultTableCellRenderer backGroundColor = new DefaultTableCellRenderer();// 绘制类别列的背景为蓝色backGroundColor.setForeground(Color.BLUE);tableColumn.setCellRenderer(backGroundColor);add(l1);add(l2);add(l3);add(l4);add(l5);add(l6);add(c1);add(c2);add(c3);add(c4);add(t1);add(t2);add(b1);add(b2);add(b3);add(b4);add(backButton);add(scrollPane);add(l21);add(l22);add(l23);add(l24);l1.setBounds(70, 50, 75, 25);// 一级机构位置c1.setBounds(125, 50, 100, 25);l2.setBounds(245, 50, 75, 25);// 二级机构位置c2.setBounds(300, 50, 100, 25);l3.setBounds(420, 50, 75, 25);// 三级机构位置c3.setBounds(475, 50, 100, 25);l4.setBounds(595, 50, 75, 25);// 职位位置c4.setBounds(650, 50, 100, 25);l5.setBounds(770, 50, 75, 25);// 建档时间t1.setBounds(825, 50, 75, 25);l6.setBounds(900, 50, 25, 25);t2.setBounds(925, 50, 75, 25);b1.setBounds(75, 100, 150, 30);// 查找按钮位置b2.setBounds(275, 100, 150, 30);// 清空按钮位置b3.setBounds(475, 100, 150, 30);// 显示所有员工按钮位置b4.setBounds(675, 100, 150, 30);// 修改按钮位置backButton.setBounds(875, 100, 150, 30);// 返回按钮位置scrollPane.setBounds(50, 150, 950, 500);l21.setBounds(50, 10, 150, 25);l22.setBounds(200, 10, 50, 25);l23.setBounds(270, 10, 75, 25);l24.setBounds(350, 10, 150, 25);l22.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));l23.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));addMouseListener(new MouseListener() {@Overridepublic void mouseClicked(MouseEvent e) {if (e.getX() <= l22.getX() + l22.getWidth() && e.getX() >= l22.getX()&& e.getY() <= l22.getY() + l22.getHeight() && e.getY() >= l22.getY()) {removeAll();身份选择_jpanel 身份选择 = new 身份选择_jpanel();add(身份选择);repaint();}if (e.getX() <= l23.getX() + l23.getWidth() && e.getX() >= l23.getX()&& e.getY() <= l23.getY() + l23.getHeight() && e.getY() >= l23.getY()) {removeAll();人事专员_jpanel 人事专员 = new 人事专员_jpanel();add(人事专员);repaint();}}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}});b1.addActionListener(new ActionListener() // 查询按钮{public void actionPerformed(ActionEvent e) {if (t1.getText().length() != 0 && t2.getText().length() != 0) {try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();System.out.println("连接数据库成功");String strSQL = "select * from dbo.员工资料表 where 一级机构='" + c1.getSelectedItem() + "' and 二级机构='"+ c2.getSelectedItem() + "' and 三级机构='" + c3.getSelectedItem() + "' and 职位='"+ c4.getSelectedItem() + "' and 登记时间 between convert(date,'" + t1.getText()+ "',120) and CONVERT(date,'" + t2.getText() + "',120)";ResultSet rs = st.executeQuery(strSQL);if (myModel.getRowCount() != 0) {int num = myModel.getRowCount();for (int i = num - 1; i >= 0; i--) {myModel.removeRow(i);}}while (rs.next()) {Vector<String> ve = new Vector<String>();ve.addElement(rs.getString(1));ve.addElement(rs.getString(2));ve.addElement(rs.getString(3));ve.addElement(rs.getString(4));ve.addElement(rs.getString(5));ve.addElement(rs.getString(6));ve.addElement(rs.getString(7));ve.addElement(rs.getString(8));ve.addElement(rs.getString(9));ve.addElement(rs.getString(10));ve.addElement(rs.getString(11));ve.addElement(rs.getString(12));ve.addElement(rs.getString(13));ve.addElement(rs.getString(14));ve.addElement(rs.getString(15));ve.addElement(rs.getString(16));ve.addElement(rs.getString(17));ve.addElement(rs.getString(18));ve.addElement(rs.getString(19));ve.addElement(rs.getString(20));ve.addElement(rs.getString(21));ve.addElement(rs.getString(22));ve.addElement(rs.getString(23));myModel.addRow(ve); // 添加一行到模型结尾}dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}} else {JOptionPane.showMessageDialog(null, "建档时间不能留空!", "提示", JOptionPane.ERROR_MESSAGE);}}});b2.addActionListener(new ActionListener() // 清空按钮{public void actionPerformed(ActionEvent e) {removeAll();查询与修改_jpanel 查询与修改 = new 查询与修改_jpanel();// 重新打开此页面add(查询与修改);repaint();}});b3.addActionListener(new ActionListener() // 显示所有员工信息按钮{public void actionPerformed(ActionEvent e) {try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();System.out.println("连接数据库成功");String strSQL = "select * from dbo.员工资料表";ResultSet rs = st.executeQuery(strSQL);if (myModel.getRowCount() != 0) {int num = myModel.getRowCount();for (int i = num - 1; i >= 0; i--) {myModel.removeRow(i);}}while (rs.next()) {Vector<String> ve = new Vector<String>();ve.addElement(rs.getString(1));ve.addElement(rs.getString(2));ve.addElement(rs.getString(3));ve.addElement(rs.getString(4));ve.addElement(rs.getString(5));ve.addElement(rs.getString(6));ve.addElement(rs.getString(7));ve.addElement(rs.getString(8));ve.addElement(rs.getString(9));ve.addElement(rs.getString(10));ve.addElement(rs.getString(11));ve.addElement(rs.getString(12));ve.addElement(rs.getString(13));ve.addElement(rs.getString(14));ve.addElement(rs.getString(15));ve.addElement(rs.getString(16));ve.addElement(rs.getString(17));ve.addElement(rs.getString(18));ve.addElement(rs.getString(19));ve.addElement(rs.getString(20));ve.addElement(rs.getString(21));ve.addElement(rs.getString(22));ve.addElement(rs.getString(23));myModel.addRow(ve); // 添加一行到模型结尾}dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}}});b4.addActionListener(new ActionListener() // 修改按钮{public void actionPerformed(ActionEvent e) {int count = table.getSelectedRow();// 获取选中的行if (count != -1) {String s1 = table.getValueAt(count, 22).toString();String s2 = "已删除";if (!s1.equals(s2)) {try {Class.forName(driverName);Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);Statement st = dbConn.createStatement();String strSQL = "update 员工资料表 set 姓名='" + table.getValueAt(count, 6) + "',性别='"+ table.getValueAt(count, 7) + "',Email='" + table.getValueAt(count, 8) + "',电话='"+ table.getValueAt(count, 9) + "',QQ='" + table.getValueAt(count, 10) + "',住址='"+ table.getValueAt(count, 11) + "',国籍='" + table.getValueAt(count, 12) + "',民族='"+ table.getValueAt(count, 13) + "',年龄=" + table.getValueAt(count, 14) + ",学历='"+ table.getValueAt(count, 15) + "',薪酬标准='" + table.getValueAt(count, 16)+ "',个人履历='" + table.getValueAt(count, 17) + "',家庭关系信息='"+ table.getValueAt(count, 18) + "',备注='" + table.getValueAt(count, 19) + "',登记人='"+ table.getValueAt(count, 20) + "',状态='待复核'  where 档案编号='"+ table.getValueAt(count, 0) + "'";boolean rs = st.execute(strSQL);System.out.println(rs);JOptionPane.showMessageDialog(null, "修改成功!", "提示", JOptionPane.DEFAULT_OPTION);dbConn.close();} catch (Exception ee) {ee.printStackTrace();System.out.print("连接失败");}} else {JOptionPane.showMessageDialog(null, "不能修改已删除的数据!", "提示", JOptionPane.ERROR_MESSAGE);}} else {JOptionPane.showMessageDialog(null, "请先选择需要修改的一行!", "提示", JOptionPane.ERROR_MESSAGE);}}});backButton.addActionListener(new ActionListener() // 返回按钮{public void actionPerformed(ActionEvent e) {removeAll();人事专员_jpanel 人事专员 = new 人事专员_jpanel();add(人事专员);repaint();}});}
}

在java中,连接数据库的部分需要更改成自己数据库账号密码,以及数据库名称

接下来就是数据库:

表的创建:

create table 员工资料表
(档案编号 char(12),
员工编号 int IDENTITY(1,1) primary key,
一级机构 varchar(20),
二级机构 varchar(20),
三级机构 varchar(20),
职位 varchar(20),
姓名 varchar(20),
性别 char(2) check (性别='男' or 性别='女'),
Email varchar(20),
电话 varchar(11),
QQ varchar(20),
住址 varchar(20),
国籍 varchar(20),
民族 varchar(20),
年龄 int check(年龄 between 20 and 55),
学历 varchar(20) check (学历 in ('专科','本科','研究生')),
薪酬标准 varchar(20),
个人履历 varchar(20),
家庭关系信息 varchar(20),
备注 varchar(20),
登记人 varchar(20),
登记时间 date default getdate(),
状态 varchar(20) check(状态 in('待复核','正常','已删除'))
)create table 机构与职位表
(单位关系 varchar(10 ),
单位编号 char(2) check(单位编号 between '01' and '99'),
单位名称 varchar(20)
)create table 薪酬标准表
(薪酬标准编号 int IDENTITY(10001,1) primary key,
薪酬标准名称 varchar(20),
职位名称 varchar(20),
薪酬总额 numeric(18, 2) default 0.00,
制定人 varchar(20),
登记人 varchar(20),
登记时间 date default getdate(),
基本工资 numeric(18, 2) default 0.00,
交通补助 numeric(18, 2) default 0.00,
午餐补助 numeric(18, 2) default 0.00,
通信补助 numeric(18, 2) default 0.00,
养老保险 numeric(18, 2) default 0.00,
失业保险 numeric(18, 2) default 0.00,
医疗保险 numeric(18, 2) default 0.00,
住房公积金 numeric(18, 2) default 0.00,
标准状态 varchar(20) check(标准状态 in('待复核','正常','已删除'))
)create table 个人薪酬发放表
(
档案编号 char(12),
姓名 varchar(20),
总工资 numeric(18, 2) default 0,
基本工资 numeric(18, 2) default 0.00,
职位名称 varchar(20) default 0.00,
交通补助 numeric(18, 2) default 0.00,
午餐补助 numeric(18, 2) default 0.00,
通信补助 numeric(18, 2) default 0.00,
养老保险 numeric(18, 2) default 0.00,
失业保险 numeric(18, 2) default 0.00,
医疗保险 numeric(18, 2) default 0.00,
住房公积金 numeric(18, 2)
)

触发器的创建:

create trigger 档案编号生成触发器
on 员工资料表
after insert
asdeclare @员工编号 char(2)declare @一级机构编号 char(2)declare @二级机构编号 char(2)declare @三级机构编号 char(2)declare @当前时间 varchar(4)declare @一级机构名称 char(2)declare @二级机构名称 char(2)declare @三级机构名称 char(2)set @员工编号=convert(char(2),(select 员工编号 from inserted))set @一级机构名称=(select 一级机构 from inserted)set @二级机构名称=(select 二级机构 from inserted)set @三级机构名称=(select 三级机构 from inserted)set @当前时间=datepart(year,getdate())set @一级机构编号=(select 单位编号 from 机构与职位表 where 单位名称 =(select 一级机构 from inserted))set @二级机构编号=(select 单位编号 from 机构与职位表 where 单位名称 =(select 二级机构 from inserted))set @三级机构编号=(select 单位编号 from 机构与职位表 where 单位名称 =(select 三级机构 from inserted))if(@员工编号 between 1 and 9)beginset @员工编号='0'+@员工编号endupdate 员工资料表set 档案编号=@当前时间+@一级机构编号+@二级机构编号+@三级机构编号+convert(char(4),@员工编号),登记时间=getdate()where 员工编号=@员工编号print'档案编号生成成功!'
gocreate trigger 定义薪酬标准的取值范围_触发器
on 员工资料表
after insert,update
asdeclare @薪酬标准 varchar(20)set @薪酬标准 =(select 薪酬标准 from inserted)if(@薪酬标准 not in (select 薪酬标准名称 from 薪酬标准表 where 标准状态='正常'))beginprint '新建资料失败,薪酬标准表中无此数据!'rollback tranend
gocreate trigger 更新当前时间_触发器
on 薪酬标准表
for insert
as
declare @薪酬标准编号 int
set @薪酬标准编号=(select 薪酬标准编号 from inserted)
print('更新当前时间成功')
update 薪酬标准表set 登记时间=getdate()where 薪酬标准编号=@薪酬标准编号
gocreate trigger 个人薪酬发放表数据生成_触发器
on 员工资料表
after update
as
declare @薪酬标准 varchar(20)
declare @薪酬标准1 varchar(20)
declare @档案编号 char(12)
declare @档案编号1 char(12)
declare @状态 varchar(20)
declare @状态1 varchar(20)
set @薪酬标准=(select 薪酬标准 from inserted)
set @薪酬标准1=(select 薪酬标准 from deleted)
set @档案编号=(select 档案编号 from inserted)
set @档案编号1=(select 档案编号 from deleted)
set @状态=(select 状态 from inserted)
set @状态1=(select 状态 from deleted)delete from 个人薪酬发放表where 档案编号=@档案编号1print '22'
if( @状态='正常')
begininsertinto 个人薪酬发放表(档案编号,姓名,总工资,基本工资,职位名称,交通补助,午餐补助,通信补助,养老保险,失业保险,医疗保险,住房公积金)select 档案编号,姓名,薪酬总额,基本工资,职位名称,交通补助,午餐补助,通信补助,养老保险,失业保险,医疗保险,住房公积金from 员工资料表,薪酬标准表where 薪酬标准=@薪酬标准 and 薪酬标准名称=@薪酬标准 and 档案编号=@档案编号 and 标准状态='正常' print'个人薪酬发放表数据生成成功!'
endgocreate trigger 薪酬标准表资料生成_触发器
on 薪酬标准表
after update
as
declare @薪酬标准编号 int
set @薪酬标准编号=(select 薪酬标准编号 from inserted)
declare @基本工资 numeric(18, 2)
set @基本工资=(select 基本工资 from inserted)
declare @交通补助 numeric(18, 2)
set @交通补助=(select 交通补助 from inserted)
declare @午餐补助 numeric(18, 2)
set @午餐补助=(select 午餐补助 from inserted)
declare @通信补助 numeric(18, 2)
set @通信补助=(select 通信补助 from inserted)
declare @养老保险 numeric(18, 2)
set @养老保险=@基本工资*0.08
declare @医疗保险 numeric(18, 2)
set @医疗保险=@基本工资*0.02+3
declare @失业保险 numeric(18, 2)
set @失业保险=@基本工资*0.005
declare @住房公积金 numeric(18, 2)
set @住房公积金=@基本工资*0.08
update 薪酬标准表
set  养老保险=@养老保险,医疗保险=@医疗保险,失业保险=@失业保险,住房公积金=@住房公积金,薪酬总额=@基本工资+@交通补助+@午餐补助+@通信补助-@养老保险-@失业保险-@医疗保险-@住房公积金
where 薪酬标准编号=@薪酬标准编号
print('薪酬标准表的资料生成成功!')
go

数据的插入:

insert into 机构与职位表 values('1','01','广州集团')
insert into 机构与职位表 values('2','02','北京集团')
insert into 机构与职位表 values('3','03','深圳集团')insert into 机构与职位表 values('1.1','01','生物公司')
insert into 机构与职位表 values('1.2','02','植物公司')
insert into 机构与职位表 values('1.3','03','药物公司')insert into 机构与职位表 values('2.1','01','芯片公司')
insert into 机构与职位表 values('2.2','02','显卡公司')
insert into 机构与职位表 values('2.3','03','硬盘公司')insert into 机构与职位表 values('3.1','01','电气公司')
insert into 机构与职位表 values('3.2','02','运输公司')
insert into 机构与职位表 values('3.3','03','水利公司')insert into 机构与职位表 values('0.0.0','01','市场部门')
insert into 机构与职位表 values('0.0.0','02','测试部门')
insert into 机构与职位表 values('0.0.0','03','开发部门')
insert into 机构与职位表 values('0.0.0','04','财务部门')insert into 机构与职位表 values('0.0.0.0','01','工程师')
insert into 机构与职位表 values('0.0.0.0','02','技术员')
insert into 机构与职位表 values('0.0.0.0','03','总监')
insert into 机构与职位表 values('0.0.0.0','04','会计')
insert into 机构与职位表 values('0.0.0.0','05','规划师')

安装数据库、jdk、eclipse以及jdbc前往我的b站。

https://www.bilibili.com/video/BV1ch411z75B

Java连接sql server数据库实现简单版人力资源系统相关推荐

  1. 通过Java连接Sql Server数据库

    1.下载JDBC JDBC是Java DateBase Connectivity的简写,翻译过来就是java连接数据库,或者更通俗地说就是java语言操作数据库.JDBC的本质其实是官方定义的一套操作 ...

  2. java连接sql server数据库的代码如何改成连接mysql_连接sqlserver数据库代码

    Sql Server的JDBC测试程序与远程连接 参考文献: 1.MySql与oracle的JDBC测试程序 2.查看sqlserver的端口号 代码示例 在我的机器上安装了多个版本的sqlserve ...

  3. java连接sql server数据库的代码如何改成连接mysql_Java连接sql server或mysql数据库(代码)...

    Java连接sql server或mysql数据库(代码) package Test; import java.sql.Connection; import java.sql.DriverManage ...

  4. java 打开sql数据库_idea 使用Java连接SQL Server数据库教程

    一.工具 1.IntelliJ IDEA 2019.2.4 2.SQL Server数据库,我这里使用的是SQL Server2008 二.数据库用户配置 1.新建一个登录用户 登录数据库 进入如下界 ...

  5. java学习(168):java连接SQL server数据库

    1安装sql server数据库 2打开eclipse写入以下代码 package sjk;import java.sql.*;public class Main {//这里可以设置数据库名称priv ...

  6. idea的java项目怎么连数据库_idea 使用Java连接SQL Server数据库教程

    一.工具 1.IntelliJ IDEA 2019.2.4 2.SQL Server数据库,我这里使用的是SQL Server2008 二.数据库用户配置 1.新建一个登录用户 登录数据库 进入如下界 ...

  7. java连接SQL Server数据库失败学习小结

    文章目录 TCP/IP未启用 SQL Server身份验证错误 用户sa被禁用 TCP/IP未启用 这几天在练习一个java项目在连接数据库时遇到了错误,如下: 于是对错误进行百度,发现是SQLsev ...

  8. JAVA连接SQL Server数据库的端口配置操作步骤

    首先,在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份验证方式.如果在安装时选用了后者,则重新设置如下: http://blog.1 ...

  9. Java 连接 SQL Server 数据库

    //连接数据库public Connection getConnection(){//url为绝对路径String url="jdbc:sqlserver://127.0.0.1:1433; ...

最新文章

  1. 素数和_只愿与一人十指紧扣_新浪博客
  2. Shell脚本中信号处理实践
  3. 可以给img元素设置背景图
  4. java解非线性方程组_Scipy - 非线性方程组的所有解
  5. ionic4监听返回事件 AppMinimize navController
  6. # 和 ## 的区别
  7. 在 CTreeCtrl 中枚举系统中的所有窗口!(II)
  8. Thinkphp5 请求报错
  9. Python必不可少的小技巧,一行代码减少一半内存占用!
  10. VBS可扩展类库--语音库
  11. C语言调用pow( )函数实现幂运算
  12. imap接收邮件服务器怎么填,邮件接收(POP3或IMAP)服务器应该填 – 手机爱问
  13. 单节点部署gpmall商城系统
  14. 弘辽科技:淘宝开店审核不通过怎么办?认证复核不通过怎么办?
  15. 【算法-1】输出网格图形
  16. 【CTO讲堂】支付接入开发的陷阱有多深? 京东支付
  17. thinkphp6 通过命令行快速生成多应用模块报 【Command “build“ is not defined.】错误的解决办法
  18. 注意力机制——Spatial Transformer Networks(STN)
  19. C#中sealed的用法
  20. 面试问题:如何开展接口测试

热门文章

  1. 源码解析 --skywalking agent 插件加载流程
  2. 2021-05-07-今日活动方案分享
  3. Linux Ubuntu下安装libdmtx并在Linux下配置OpenCV和libdmtx的Cmakelist,同时对Data Matric码进行解码
  4. python制作中秋贺卡_使用Python为中秋节绘制一块美味的月饼
  5. 6款大神级PPT辅助工具,帮你轻松完成PPT制作
  6. 3ds MAX 多边形十大命令
  7. python中文小写数字排序
  8. ISO/OSI七层模型理解
  9. 王权富贵:强化学习Q-learning
  10. 北华大学第九届程序设计竞赛 题解