【Java实践 I】简易人事管理系统

源码和数据库:https://github.com/xuna123/java-study
推荐一个界面设计特别好用的插件 : windows builderhttp://blog.csdn.net/xunalove/article/details/72621194

项目运行结果

【Java实践 I】简易人事管理系统_第1张图片

环境

操作系统:WIN7
编译器 : eclipse
界面设计工具:windows builder
数据库 : Access

模板介绍

简易人事管理系统麻雀虽小,五脏俱全, 完成人员基本信息的操作,重要包含5个模块。

  • 登录界面(系统的入口)
    • 包含注册,登录的验证
  • 基本人员信息管理(人员基本信息操作)
    • 添加,修改,删除,查询
  • 部门管理(部门的操作)
    • 添加,修改,删除,查询
  • 人员调动管理 (记录人员调动的信息)
    • 人员调动
    • 调动历史查询
  • 人员考核记录 (记录人员考核的情况)
    • 人员考核
    • 调动历史查询
  • 劳资管理(记录人员薪资的变化情况)
    • 劳资分配管理
    • 劳资历史查询

数据库设计

主要包括用户登录注册表User,人员信息表Person, 部门表Dept , 人员历史信息表 Histrjn, 考核历史信息表Test,薪资历史信息表Salary。
这里写图片描述
【Java实践 I】简易人事管理系统_第2张图片
【Java实践 I】简易人事管理系统_第3张图片
【Java实践 I】简易人事管理系统_第4张图片

功能设计

1. 简易验证码如何实现?
答:通过随机函数产生两个10~20范围的数字,计算出结果,登录是判断当前文本框输入的内容是否和正确答案一致。
对应代码:

//简易验证码设计
    int max=20,min=10;
        Random random = new Random();
        a = random.nextInt(max)%(max-min+1) + min;
        b = random.nextInt(max)%(max-min+1) + min;
        c = a+b;
        String temp = Integer.toString(a) + " + " + Integer.toString(b) + " = ?";
        textField_2.setText(temp) ;

2. 如何判断你输入的用户名和密码正确?
答:把输入的用户名当做已知条件,在数据库中查找对应的password(类似于 y = 3x,给你x,求y),判断数据库中的password是否和输入文本框中的密码一直。

                String username =null,password=null,check=null;
                int n;
                username =  textField.getText().trim();
                password =  passwordField .getText().trim();
                check =  textField_3.getText().trim();
                n = Integer.parseInt(check);
                String sql = "select password from User where username='"+username+"'";  
                Connection con = a1.getConn();//此处为通过自己写的方法getConn()获得连接  
                try{
                    Statement stmt = con.createStatement();
                    ResultSet rs = stmt.executeQuery(sql); //ResultSet类,用来存放获取的结果集!!
                    String temp=null;
                    while(rs.next())
                    {
                        temp = rs.getString(1);
                    }
                    System.out.println("n= "+n);
                    System.out.println("c= "+ c);
                    if(temp.equals(password))
                    {
                        if(n == c)
                        {
                            HrMain window = new HrMain();
                            window.frame.setVisible(true);
                        }
                        else
                        {
                            JOptionPane.showMessageDialog(null, "验证码错误");
                        }
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "用户名或者密码不正确");
                    }
                    rs.close();
                    con.close();
                }
                catch(SQLException e1)
                {      
                    e1.printStackTrace();   
                } 

答:把输入的用户名当做已知条件,在数据库中查找对应的
3. 修改或者删除部门时,若部门下有人员应该如何处理?
答:对于修改来说,修改部门相应的修改部门下的人员的部门信息。对于删除来说,若删除的部门下有人则取消删除。修改具体实现步骤为:选中部门,根据部门id查询人员信息表,如表中返回有值,则更新人员信息表,反之直接修改。删除部门思路类似。

if(cmd.equals("修改"))
        {
            String DeptID = textField.getText().trim();
            String B_Dept = textField_1.getText().trim();
            String S_Dept = textField_2.getText().trim();
            String res="";
            int i = 0;
            Connection con = a.getConn();
            String sql_old = "select * from Dept where DeptID="+DeptID;
            try 
            {
                Statement stmt = con.createStatement();
                ResultSet rs = stmt.executeQuery(sql_old); //ResultSet类,用来存放获取的结果集!!
                while(rs.next()){
                    res+=rs.getString(1); res+="-";
                    res+=rs.getString(2); res+="-";
                    res+=rs.getString(3);}
                System.out.println("res="+res);
                String sql = "update Dept set DeptID=?,B_Dept=?,S_Dept=? where DeptID='"+DeptID+"'";
                String sql2 ="update Person set DeptID=? where DeptID='" + res +"'";

                PreparedStatement pst = con.prepareStatement(sql); 
                pst.setString(1, DeptID); 
                pst.setString(2, B_Dept); 
                pst.setString(3, S_Dept); 
                i = pst.executeUpdate();
                System.out.println("sql="+i);

                PreparedStatement pst1 = con.prepareStatement(sql2); 
                pst1.setString(1,DeptID+"-"+B_Dept+"-"+S_Dept); 
                System.out.println("sql2="+sql2);
                i = pst1.executeUpdate();
                System.out.println("sql2="+i);
                JOptionPane.showMessageDialog(null, "修改成功");

            }
            catch (Exception e1) {
                e1.printStackTrace();
                JOptionPane.showMessageDialog(null, "失败,添加数据不完整或者重复添加等其他原因");
            }
            System.out.println(i);
        }

你可能感兴趣的:(【Java】,java)