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

来源:互联网 发布:jquery.min.js冲突 编辑:程序博客网 时间:2024/06/15 00:27

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

项目运行结果

环境

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

模板介绍

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

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

数据库设计

主要包括用户登录注册表User,人员信息表Person, 部门表Dept , 人员历史信息表 Histrjn, 考核历史信息表Test,薪资历史信息表Salary。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

功能设计

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);        }