工资管理系统
一,设计数据库 SalaryManagement
职工表:
工资表
二,创建“数据源(ODBC)”
具体步骤:
“开始”-“控制面板”-“管理工具”-“数据源(ODBC)
-在用户 DNS 里,点“添加”--在数据源驱动列表最下方选择“SQLServer”
-点“完成”--出现了一个创建到 SQL Server 的新数据源
-在数据源“名称”右侧,填写数据库的名称;在“服务器”右侧,写(local)
-点“下一步”--继续点“下一步”
-在更改默认的数据库为“SalaryManagement”,这里的数据库为我刚刚新建的数据库。
-点“下一步”
-点“完成”
-出现一个“ODBC Microsoft SQL Server 安装”对话框
-点击下面的“测试数据源”
-出现图 2.1 就好了。
-下面依次点击“确定”就完成了。
-完成了以后,你会在数据源里看到自己刚刚新建的数据源,名为:“SalaryManagement”
图 2.1
三代码的编写:
3.1 数据库连接(文件名:DBConnect.java)
注意,这个文件最好先编译,因为后面的 main.java 文件的编译会用到该文件编译完产生的
DBConnect.class 文件
//类 DBConnect 用于数据库的连接
//导入 sql 包
import java.sql.*;
//创建数据库连接类 DBConnect
public class DBConnect
{
//静态方法提高数据库的连接效率
public static Connection getConn() throws Exception
{
//加载 JDBC 驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//以系统默认用户身份,连接数据库 StudentManager
return DriverManager.getConnection("jdbc:odbc:SalaryManagement","","");
}
}
3.2 添加职工信息(文件名:AddEmployee.java)
//添加职工面板类 AddEmployee
//导入系统的类包
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
//创建“添加职工“面板类
public class AddEmployee extends JPanel implements ActionListener
{
//声明连接数据库对象
Connection con;
//声明 SQL 语句对象
Statement st;
//创建组件对象:标签、文本行、单选
JLabel jLabel1=new JLabel("职工工号");
JLabel jLabel2=new JLabel("职工姓名");
JLabel jLabel3=new JLabel("职工性别");
JLabel jLabel4=new JLabel("职工年龄");
JLabel jLabel5=new JLabel("家庭住址");
JLabel jLabel6=new JLabel("联系电话");
JTextField jTextField1=new JTextField();
JTextField jTextField2=new JTextField();
JTextField jTextField3=new JTextField();
JTextField jTextField4=new JTextField();
JTextField jTextField5=new JTextField();
JRadioButton jRadioButton1=new JRadioButton("男");
JRadioButton jRadioButton2=new JRadioButton("女");
ButtonGroup buttonGroup1=new ButtonGroup();
JButton jButton1=new JButton("添加职工");
//构造方法
public AddEmployee()
{
try{
//调用初始化方法
jbInit();
}
catch(Exception exception){
exception.printStackTrace();
}
}
//界面初始化方法
private void jbInit() throws Exception
{
//连接数据库
con=DBConnect.getConn();
st=con.createStatement();
//框架的布局
this.setLayout(null);
//设置各组件的大小
jLabel1.setBounds(new Rectangle(21,17,64,24));
jLabel2.setBounds(new Rectangle(21,51,53,22));
jLabel3.setBounds(new Rectangle(21,86,61,27));
jLabel4.setBounds(new Rectangle(21,122,59,25));
jLabel5.setBounds(new Rectangle(21,168,54,24));
jLabel6.setBounds(new Rectangle(21,205,54,24));
jTextField1.setBounds(new Rectangle(102,10,200,30));
jTextField2.setBounds(new Rectangle(102,49,200,30));
jTextField3.setBounds(new Rectangle(102,117,80,33));
jTextField4.setBounds(new Rectangle(102,163,200,29));
jTextField5.setBounds(new Rectangle(102,200,200,29));
jRadioButton1.setBounds(new Rectangle(102,83,65,30));
jRadioButton2.setBounds(new Rectangle(190,85,85,30));
jButton1.setBounds(new Rectangle(130,240,150,32));
//设置单选按钮被选中
jRadioButton1.setSelected(true);
//添加按钮动作事件
jButton1.addActionListener(this);
//添加组件到面板
this.add(jLabel1);
this.add(jTextField1);
this.add(jLabel2);
this.add(jTextField2);
this.add(jLabel3);
buttonGroup1.add(jRadioButton1);
buttonGroup1.add(jRadioButton2);
this.add(jRadioButton1);
this.add(jRadioButton2);
this.add(jLabel4);
this.add(jTextField3);
this.add(jLabel5);
this.add(jTextField4);
this.add(jLabel6);
this.add(jTextField5);
this.add(jButton1);
}
//点击按钮事件
public void actionPerformed(ActionEvent e)
{
//获取用户输入的信息
String EmployeeID=jTextField1.getText();
String EmployeeName=jTextField2.getText();
String EmployeeSex="";
if(jRadioButton1.isSelected())
EmployeeSex+="男";
if(jRadioButton2.isSelected())
EmployeeSex+="女";
String EmployeeAge=jTextField3.getText();
String EmployeeAddress=jTextField4.getText();
String EmployeePhone=jTextField5.getText();
try{
//设置日期格式
st.execute("set dateformat ymd");
//利用 st 对象执行 SQL 语句,进行插入操作
st.executeUpdate("insert
Employee
values('"+EmployeeID+"','"+EmployeeName+"','"+EmployeeSex+"','"+EmployeeAge+"','"+Empl
oyeeAddress+"','"+EmployeePhone+"')");
into
//利用消息对话框提示职工添加成功
JOptionPane.showMessageDialog(this,"职工添加成功!");
//清空文本行的内容
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextField5.setText("");
}
catch(Exception ex){
//利用消息对话框提示异常的信息
JOptionPane.showMessageDialog(this,"职工添加失败!");
ex.printStackTrace();
}
}
}
3.3 修改职工信息(文件名:ModifyEmployee.java)
//“职工信息修改”面板类 ModifyEmployee
//导入系统的类包
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
//创建“职工信息修改资”类
public class ModifyEmployee extends JPanel implements ActionListener
{
//声明连接数据库对象
Connection con;
//声明 SQL 语句对象
Statement st;
//创建组件对象:标签、文本行、单选
JLabel jLabel1=new JLabel("请输入职工的编号:");
JTextField jTextField1=new JTextField();
JButton jButton1=new JButton("查找该职工");
JLabel jLabel2=new JLabel("职工编号:");
JTextField jTextField2=new JTextField();
JLabel jLabel3=new JLabel("职工姓名:");
JTextField jTextField3=new JTextField();
JLabel jLabel4=new JLabel("职工性别:");
JTextField jTextField4=new JTextField();
JLabel jLabel5=new JLabel("职工年龄:");
JTextField jTextField5=new JTextField();
JLabel jLabel6=new JLabel("家庭住址:");
JTextField jTextField6=new JTextField();
JLabel jLabel7=new JLabel("联系电话:");
JTextField jTextField7=new JTextField();
JButton jButton2=new JButton("修改职工信息");
//构造方法
public ModifyEmployee()
{
try{
//调用初始化方法
jbInit();
}
catch(Exception exception){
exception.printStackTrace();
}
}
//面板初始化方法
private void jbInit() throws Exception
{
//连接数据库
con=DBConnect.getConn();
st=con.createStatement();
//框架的布局
this.setLayout(null);
//设置各组件的大小
jLabel1.setFont(new java.awt.Font("楷体",Font.BOLD,14));
jLabel1.setBounds(new Rectangle(40,15,140,30));
jTextField1.setBounds(new Rectangle(185,15,120,30));
jButton1.setBounds(new Rectangle(110,55,150,30));
jLabel2.setFont(new java.awt.Font("楷体",Font.BOLD,14));
jLabel2.setBounds(new Rectangle(20,105,80,30));
jTextField2.setBounds(new Rectangle(100,105,80,30));
jLabel3.setFont(new java.awt.Font("楷体",Font.BOLD,14));
jLabel3.setBounds(new Rectangle(190,105,80,30));
jTextField3.setBounds(new Rectangle(270,105,80,30));
jLabel4.setFont(new java.awt.Font("楷体",Font.BOLD,14));
jLabel4.setBounds(new Rectangle(20,145,80,30));
jTextField4.setBounds(new Rectangle(100,145,80,30));
jLabel5.setFont(new java.awt.Font("楷体",Font.BOLD,14));
jLabel5.setBounds(new Rectangle(190,145,80,30));
jTextField5.setBounds(new Rectangle(270,145,80,30));
jLabel6.setFont(new java.awt.Font("楷体",Font.BOLD,14));
jLabel6.setBounds(new Rectangle(20,185,80,30));
jTextField6.setBounds(new Rectangle(100,185,80,30));
jLabel7.setFont(new java.awt.Font("楷体",Font.BOLD,14));
jLabel7.setBounds(new Rectangle(190,185,80,30));
jTextField7.setBounds(new Rectangle(270,185,80,30));
jButton2.setBounds(new Rectangle(120,240,150,30));
//添加按钮动作事件
jButton1.addActionListener(this);
jButton2.addActionListener(this);
//添加组件到面板
this.add(jLabel1);
this.add(jTextField1);
this.add(jButton1);
this.add(jLabel2);
this.add(jTextField2);
jTextField2.setEditable(false);
this.add(jLabel3);
this.add(jTextField3);
this.add(jLabel4);
this.add(jTextField4);
this.add(jLabel5);
this.add(jTextField5);
this.add(jLabel6);
this.add(jTextField6);
this.add(jLabel7);
this.add(jTextField7);
this.add(jButton2);
}
//点击按钮事件
public void actionPerformed(ActionEvent actionevent)
{
//点击“查找该职工”按钮
if(actionevent.getSource()==jButton1)
{
try{
//利用 st 对象执行 SQL 语句,返回结果集对象
ResultSet rs=st.executeQuery("select * from Employee where 职 工 编 号
='"+jTextField1.getText()+"'");
//处理结果集
if(rs.next())
{
jTextField2.setText(rs.getString("职工编号"));
jTextField3.setText(rs.getString("职工姓名"));
jTextField4.setText(rs.getString("职工性别"));
jTextField5.setText(rs.getString("职工年龄"));
jTextField6.setText(rs.getString("家庭住址"));
jTextField7.setText(rs.getString("联系电话"));
}
else
{
JOptionPane.showMessageDialog(this,"没有这个工号的职工!");
}
}
catch(Exception ex){
//利用消息对话框提示查询失败
JOptionPane.showMessageDialog(this,"职工信息修改失败!");
}
}
//点击“修改工资”按钮
if(actionevent.getSource()==jButton2)
{
//获取用户更改的工资
try{
//利用 st 对象执行 SQL 语句,进行插入操作
st.executeUpdate("update
set
Employee
职 工 姓 名
='"+jTextField3.getText()+"' where 职工编号='"+jTextField2.getText()+"'");
st.executeUpdate("update
Employee
set
职 工 性 别
='"+jTextField4.getText()+"' where 职工编号='"+jTextField2.getText()+"'");
st.executeUpdate("update
Employee
set
职 工 年 龄
='"+jTextField5.getText()+"' where 职工编号='"+jTextField2.getText()+"'");
st.executeUpdate("update
Employee
set
家 庭 住 址