数据库课程设计 人事管理系统 (一)

一、JAVA与数据库的合作此次开发语言为Java,所用的数据库驱动是mysql-connector-java-5.1.8-bin.jar第一步 用Java连接MySQL数据库(驱动下载:https://dev.mysql.com/downloads/connector/j/ )将下载好的mysql-connector-java-5.1.8-bin.jar复制到本机下载的Java的文件夹中 (作者的是 C:\Program Files (x86)\Java\jdk1.7.0_07)然后在 Eclipse 中,鼠标选中人事管理系统工程,右键点击 Build Path,选择 Configure Build Path,会 跳 出 一 个 属 性 框 图 。选 择 Java Build Path 下 的 Libraries , 查 看 是 否 有 mysql-connector-java-5.1.8-bin.jar。如果没有,点击Add External JARs,浏览到JDBC的MySQL 驱动的 jar 包,点击确定,将其导入到项目中。
图片描述
第二步 在项目下跑一个测试代码来检测数据库是否链接成功

 public  class Test() {
         public static void main(String []args){
 try {
             //mysql数据库设置驱动程序类型
             Class.forName("com.mysql.jdbc.Driver"); 
             System.out.println("mysql数据库驱动加载成功");
             
             //sqlserver数据库设置驱动程序类型
             //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
             //System.out.println("sqlserver数据库驱动加载成功");
 
         }
         catch(java.lang.ClassNotFoundException e) {
             e.printStackTrace();
         }
     }
 }

第三步:驱动链接成功后,就可以在数据库建立待操作的基本表了

人事管理系统主要表为  (员工信息表 和 人事变更表)   
图片描述

图片描述

图片描述

对表的基本操作包括 用SQL语句对表中数据进行查询和更新(增删改)

首先创建一个Connection对象 然后用SQL语句对数据库进行操作 具体代码如下


package exercise3;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;


public class DbProcess{


static Connection connection = null;   //链接对象
    static ResultSet rs=null ;    //操作后结果集
    
       //mysql数据库url
    static String userMySql="root";     //数据库用户名
    static String passwordMySql="a123456";    //密码
    static String urlMySql = "jdbc:mysql://localhost:3306/StaffDb?user="+userMySql+"&password="+passwordMySql+"&useUnicode=true&characterEncoding=gbk";       //将数据库与Java链接
    


    public DbProcess() {            DbProcess//构造函数
        try {
            //mysql数据库设置驱动程序类型
            Class.forName("com.mysql.jdbc.Driver"); 
            System.out.println("mysql数据库驱动加载成功");
        }
        catch(java.lang.ClassNotFoundException e) {
            e.printStackTrace();
        }
    }


    public static void connect(){           //连接
        try{
            //mysql数据库
            connection = DriverManager.getConnection(urlMySql);  
            
            if(connection!=null){
                System.out.println("数据库连接成功");
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }


    public static void disconnect(){        //断开连接
        try{
            
            if(connection != null){
                connection.close();
                connection = null;
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
   
    

    public static  ResultSet executeQuery(String sql) {       //把查询SQL语句传送至数据库并执行  然后返回查询的结果集
        
        try {
            System.out.println("executeQuery(). sql = " + sql);
            
            PreparedStatement pstm = connection.prepareStatement(sql); //PreparedStatement:用于执行sql语句的对象
                                 //用connection的PreparedStatement(sql)方法获取

            rs = pstm.executeQuery();
        
        //    ResultSet rw=rs;
        //while(rs.next()){
            //System.out.println(rs.getString("pNo"));
        //    }
        } 
        catch(SQLException ex) { 
            ex.printStackTrace();
        }
        
        return rs;
    }
    

    
    //插入
    //executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。
    //executeUpdate用于执行 INSERT、UPDATE 或 DELETE 语句
    //以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。
    
    //执行增、删、改语句的方法
    public static int executeUpdate(String sql) {        //把更新SQL语句传送至数据库执行
        int count = 0;
        connect();
        try {
            Statement stmt = connection.createStatement();
            count = stmt.executeUpdate(sql);
        } 
        catch(SQLException ex) { 
            System.err.println(ex.getMessage());        
        }
        disconnect();
        return count;
    }
}

例如 查询所有员工的个人信息

         try{
             // 建立查询条件
             String sql = "select * from person;";
             System.out.println("queryAllProcess(). sql = " + sql);
     
                 // 将查询获得的记录数据,转换成适合生成JTable的数据形式
             DbProcess.connect();
             
              DbProcess.executeQuery(sql);   //结果集ResultSet
         
         
             
             // 将查询获得的记录数据,转换成适合生成JTable的数据形式
             staffVector.clear();    //此条为UI部分  可不管
             while(DbProcess.rs.next()){
                 Vector v = new Vector();
                 System.out.println(DbProcess.rs.getString("pName"));      //测试语句:输出查询出来的姓名
                 v.add(DbProcess.rs.getString("pId"));
                 v.add(DbProcess.rs.getString("pName"));
                 v.add(DbProcess.rs.getString("pSex"));
         v.add(MD5.decrypt(DbProcess.rs.getString("pPasswd")));       
                  //MD5.decrypt()为我的数据库密码算法  
                 v.add(DbProcess.rs.getString("pAuthority"));
                 v.add(DbProcess.rs.getString("pDepartment"));
                 v.add(DbProcess.rs.getString("pJob"));
                 v.add(DbProcess.rs.getString("pEdulevel"));
                 v.add(DbProcess.rs.getString("pSpcialty"));
                 v.add(DbProcess.rs.getString("pBirthday"));
                 v.add(DbProcess.rs.getString("pAddress"));
                 v.add(DbProcess.rs.getString("pTel"));
                 v.add(DbProcess.rs.getString("pEmail"));
                 v.add(DbProcess.rs.getString("pState"));
                 v.add(DbProcess.rs.getString("pRemark"));
                 
                 staffVector.add(v);                //    查询结果集已转换为Vector v ,并将v添加到我的GUI中显示
             }
     StaffJTable.updateUI();        //此条更新UI,在本次可以不管
             DbProcess.disconnect();
         }catch(SQLException sqle){
             System.out.println("sqle = " + sqle);
             JOptionPane.showMessageDialog(null,
                 "数据操作错误","错误",JOptionPane.ERROR_MESSAGE);
         }catch(Exception e){
             System.out.println("e = " + e);
             JOptionPane.showMessageDialog(null,
                 "数据操作错误","错误",JOptionPane.ERROR_MESSAGE);
         }

最后提前预览一波,俺本次课程设计做出最后的作品
图片描述

用户模式:

图片描述

管理员模式:

图片描述

图片描述

图片描述

图片描述

图片描述

(各位大佬如果有好意见欢迎及时提出,假如没有及时回复可以邮件738156044@qq.com)