1、苏州科技大学电子信息与智能化实验中心面向对象技术课程设计 A 报告人事工资管理系统专业年级 计算机科学与技术(嵌入式培养)15 级班 级 嵌入式 1511学 号 15200141119 15200141115 15200141101 15200141137 15200141136姓 名 张梓轩 戚春阳 徐敏杰 袁祺林 王雨欣成 绩指导教师 丁 俊2016 年 12 月 24 日0姓名 角色 承担任务 自评成绩张梓轩 组长 E-R 图;统一数据库;工资管理系统显示所有员工的工资,部门整体调薪的实现;人事管理系统的时序图和活动图;戚春阳 组员 统计管理系统显示各个部门和人数功能的实现;用户权限和密
2、码设置;系统时间输出;实现系统设置管理中的数据备份和数据恢复;整合所有人代码,实现功能的统一和代码的优化;登录界面的活动图和时序图;徐敏杰 组员 人事管理系统添加员工信息,修改员工信息;用例图和用例说明;任务书的编写;系统设置系统的活动图、时序图;袁祺林 组员 人事管理系统查询员工的登陆信息、模糊查询和删除员工;课程总结;任务书的编写;人事管理系统的时序图和活动图;王雨欣 组员 员工奖惩表的增、删、改、查;系统类图;课程设计与需求分析;统计管理系统的活动图和时序图;注:如果按小组进行,需要此表,否则删除。人事工资系统设计报告1 课程设计任务概述人事工资管理系统是非常通用的管理信息系统,一个公司
3、必须要有健全的人事工资管理系统来管理员工的信息,才能实现它的日常运转。因此,为了支持企业规范化的管理,高效率地完成人事的业务,需要实现包括员工的姓名、年龄、编号、电话号码等基本信息的建立,授予员工所能获取的权限,例如管理员权限,就可以对普通员工进行信息管理,其中包括新员工个人的基本信息资料的增加、修改,退休员工的信息的删除,员工奖惩信息的增加、删除和修改;此外还支持管理员对部门整体进行调薪,扩大了管理员的管理范围;同时为了支持人事管理及其相关方面的科学决策,增加了员工的个人基本信息查询、薪资查询、奖惩情况查询和部门的总体情况查询等,大大提高了公司内部员工管理的效率,减少了不必要的精力的投入,使
4、得企业的正常维护得以实现。 12 系统需求分析2.1 系统功能分析本系统主要是实现企业人事管理的系统化、规范化和自动化,实现数据的录入、插入、删除、查询、统计、更新等功能。具有员工注册以及登录的功能,且登录后管理员可修改自己用户权限;大体分为以下四个主功能:1.人事管理系统:主要用来实现对员工的基本信息的增加、信息的删除、信息的修改以及模糊查询,还包括对员工的奖惩信息的增加,信息的删除,信息的修改以及信息的查询;2.工资管理系统:主要包括模糊查询部门信息、员工的总体以及个人工资信息,以及对部门的薪资进行整体调整的功能;3.统计管理系统:主要指用来显示部门的整体情况以及员工人数;4.系统设置系统
5、:主要是用来对数据进行恢复和备份。2.2 用例图及用例说明22.2.1 用户注册用例1.用例名称: 注册 2.用例描述: 注册成为本管理系统的用户 3.角色: 用户 4.前置条件: 格式输入正确 5.后置条件: 保存此用户的信息6.基本路径: A.填写用户名和密码 B.保存用户信息 7.扩展点: A.未填写完整或者格式错误 a1.错误提示B.用户已经存在 b1.错误提示3 系统设计3.1 系统类图33.2 系统活动图用户登陆活动图:人事管理系统活动图:4统计管理系统活动图: 工资管理系统活动图:系统设置管理活动图:3.3 系统时序图用户登陆时序图:5人事管理系统时序图:工资管理系统时序图:6统
6、计管理系统时序图:系统设置管理时序图:74 系统实现4.1 登录模块设计与实现登录模块是用户登录进去进行相关操作的,如员工信息的增删改查等等。8(1)View 层代码loginTitle = new javax.swing.JLabel();jLabel1 = new javax.swing.JLabel();jLabel2 = new javax.swing.JLabel();uname = new javax.swing.JTextField();pwd = new javax.swing.JPasswordField();limit = new javax.swing.JComboBox
7、();jLabel3 = new javax.swing.JLabel();loginBtn = new javax.swing.JButton();registerBtn = new javax.swing.JButton();jLabel4 = new javax.swing.JLabel();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);setForeground(java.awt.Color.white);setResizable(false);setState(1);loginTitle.set
8、Font(new java.awt.Font(“Microsoft YaHei UI“, 1, 44);loginTitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);loginTitle.setText(“u4ebau4e8bu5de5u8d44u7ba1u7406u7cfbu7edf“);jLabel1.setText(“u7528u6237u540d“);jLabel2.setText(“u5bc6 u7801uff1a“);/limit.setModel(javax.swing.DefaultComboBoxMo
9、del187e702);jLabel3.setText(“u6743 u9650uff1a“);loginBtn.setText(“u767bu9646“);(2)Action 层private void registerBtnActionPerformed(java.awt.event.ActionEvent evt) registerFrame r = new registerFrame();r.setVisible(true);9private void loginBtnMouseClicked(java.awt.event.MouseEvent evt) String name = t
10、his.uname.getText();String pwd = this.pwd.getText();String limit = this.limit.getSelectedItem().toString();int type = 0;if (“管理员“.equals(limit) type = 1;usertype=“管理员 “; else type = 2;usertype=“普通员工 “;User user = new User(name, pwd, type);User flag = userService.login(user);if (flag != null) wuserna
11、me = name;wtype = limit;ok o = new ok();o.setVisible(true);setVisible(false); else fail f = new fail();f.setVisible(true);dispose();(3)Dao 数据交互层Overridepublic User login(User user) / TODO Auto-generated method stubUser resultUser=null;String sql = “select user_no,user_name,user_pwd,user_type“ +“ fro
12、m t_user “ +“ where user_name=“+user.getUserName()+“ “ +“ and user_pwd=“+user.getUserPwd()+“ +“ and user_type=“+user.getUserType()+“;conn = JDBCUtil.getConnection();try stmt = conn.createStatement();rs = stmt.executeQuery(sql);10if(rs.next()resultUser = new User();resultUser.setUserNo(rs.getInt(“use
13、r_no“);resultUser.setUserName(rs.getString(“user_name“);resultUser.setUserPwd(rs.getString(“user_pwd“);resultUser.setUserType(rs.getInt(“user_type“); catch (SQLException e) e.printStackTrace();finallyJDBCUtil.closeResource(conn, psmt, stmt, rs);return resultUser;4.2 系统主界面可在该模块完成员工资料的常用操作。员工的各项人事记录可在
14、选择员工后,在主界面下面的分栏里面进行添加、修改、删除操作。4.3 人事管理模块设计及实现11对员工的相关资料及记录进行管理。可在该模块对员工基本资料、奖惩记录、修改员工信息可实现对员工的调动、薪水记录进行修改。当进入到人事管理子系统模块,再点击模糊查询。删除员工按钮,会进入到下面的界面其中的模糊查询代码如下(1)view 层private void initComponents() jScrollPane1 = new javax.swing.JScrollPane();jTable1 = new javax.swing.JTable();jButton1 = new javax.swing
15、.JButton();jLabel1 = new javax.swing.JLabel();jname = new javax.swing.JTextField();jButton2 = new javax.swing.JButton();jButton3 = new javax.swing.JButton();12jLabel2 = new javax.swing.JLabel();jButton4 = new javax.swing.JButton();jLabel3 = new javax.swing.JLabel();jLabel4 = new javax.swing.JLabel()
16、;setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object , new String “姓名“ , “编号“, “部门编号“, “职称“, “性别“, “基本工资 “,“电话号码“ , “工号“ );jScrollPane1.setViewportView(jTable1);jButton1.setText(“u786eu5b9a“);jButton1.addActionListen
17、er(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton1ActionPerformed(evt););jLabel1.setText(“u8bf7u8f93u5165u59d3u540duff0cu652fu6301u6a21u7ccau67e5u627e“);jname.setText(null);jButton2.setText(“u9000u51fau6a21u7ccau67e5u627e“);jButton2.addActionL
18、istener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton2ActionPerformed(evt););jButton3.setText(“u5237u65b0“);jButton3.addActionListener(new 13java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton3A
19、ctionPerformed(evt););jLabel2.setText(“u5237u65b0u540eu53efu7ee7u7eedu67e5u627e“);jButton4.setText(“u5220u9664u6b64u5458u5de5“);jButton4.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton4ActionPerformed(evt););jLabel3.setText(“u
20、7a7au503cu53efu67e5u627eu6240u6709u5458u5de5“);jLabel4.setText(“u9700u8981u8f93u5165u5168u540du53efu4ee5u5220u9664u5458u5de5“);public void findStaffName(JTable jTable, String name) DefaultTableModel model = (DefaultTableModel) jTable.getModel();model.setRowCount(0);Vector v = staffInfoDao.findStaffI
21、nfo(name);for (int i = 0; i v.size(); i+) model.addRow(Vector) v.get(i);(2)action 层private void jButton1ActionPerformed(java.awt.event.ActionEvent 14evt) String name = jname.getText();if (name != null) staff.findStaffName(jTable1, name); else pleaseInput p = new pleaseInput();p.setVisible(true);(3)d
22、ao 层public Vector findStaffInfo(String staffname) Vector list = new Vector();String sql = “select *“ + “from t_staff_info “+ “where staff_name like%“ + staffname + “%“;conn = JDBCUtil.getConnection();try stmt = conn.createStatement();rs = stmt.executeQuery(sql);while (rs.next() Vector listObject = n
23、ew Vector();/ listObject.add( new/ User(rs.getInt(“id“),rs.getString(“uname“),rs.getString(“pwd“);listObject.add(rs.getString(“staff_name“);listObject.add(rs.getInt(“staff_id“);listObject.add(rs.getInt(“dept_no“);listObject.add(rs.getString(“staff_pos_name“);listObject.add(rs.getString(“staff_sex“);
24、listObject.add(rs.getInt(“staff_baseSal“);listObject.add(rs.getInt(“staff_phoneNum“);listObject.add(rs.getString(“staff_workNum“);list.add(listObject); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally JDBCUtil.closeResource(conn, psmt, stmt, rs);15return list;4.4
25、工资管理模块设计与实现在员工基本信息管理界面里可以对单个员工进行基本工资的修改,因而在面向人数较多的企业时,这种方式存在弊端,部门整体调薪操作可以对整个业绩高的部门进行整体调薪(1)view 层private void initComponents() jButton1 = new javax.swing.JButton();jLabel1 = new javax.swing.JLabel();jdepart = new javax.swing.JTextField();jButton2 = new javax.swing.JButton();jLabel2 = new javax.swing
26、.JLabel();16jScrollPane1 = new javax.swing.JScrollPane();jTable1 = new javax.swing.JTable();jLabel3 = new javax.swing.JLabel();jdepart2 = new javax.swing.JTextField();sure = new javax.swing.JButton();jLabel4 = new javax.swing.JLabel();money = new javax.swing.JTextField();jLabel5 = new javax.swing.JL
27、abel();jLabel6 = new javax.swing.JLabel();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jButton1.setText(“u8fd4u56deu4e3bu754cu9762“);jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton1ActionPerform
28、ed(evt););jLabel1.setText(“u8bf7u8f93u5165u90e8u95e8u540du53efu8fdbu884cu6a21u7ccau67e5u627e“);jButton2.setText(“u786eu5b9a“);jButton2.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton2ActionPerformed(evt););jLabel2.setText(“u7e
29、d9u6307u5b9au90e8u95e8u7684u6240u6709u5458u5de5u8c03u85aa“);jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object 17, new String “部门编号“ , “部门名称“ );jScrollPane1.setViewportView(jTable1);jLabel3.setText(“u8f93u5165u5168u540du9009u5b9au90e8u95e8“);sure.setText(“u786eu5b9a“);sure.addAction
30、Listener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) sureActionPerformed(evt););jLabel4.setText(“u8f93u5165u8c03u6574u529bu5ea6“);money.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt
31、) moneyActionPerformed(evt););jLabel5.setText(“u6e29u99a8u63d0u793a:u63d0u85aau5219u8f93u5165u6b63u6570,u964du85aau5219u8f93u5165u8d1fu6570“);jLabel6.setText(“u5143“);(2)action 层private void sureActionPerformed(java.awt.event.ActionEvent evt) String jdept = jdepart2.getText();Double money2 = Double.
32、parseDouble(money.getText();StaffInfo s=new StaffInfo();s.num(staff.updateSalary(jdept,money2);18private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) dispose();private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) String department = jdepart.getText();if (department !=
33、 null) depart.findDepart(jTable1, department); else pleaseInput p = new pleaseInput();p.setVisible(true);(3)dao 层public Vector findDepart(String name) Vector list = new Vector();String sql = “select *“ + “from t_department “+ “where dept_name like%“ + name + “%“;conn = JDBCUtil.getConnection();try s
34、tmt = conn.createStatement();rs = stmt.executeQuery(sql);while (rs.next() Vector listObject = new Vector();/ listObject.add( new/ User(rs.getInt(“id“),rs.getString(“uname“),rs.getString(“pwd“);listObject.add(rs.getInt(“dept_no“);listObject.add(rs.getString(“dept_name“);list.add(listObject); catch (S
35、QLException e) / TODO Auto-generated catch blocke.printStackTrace();19 finally JDBCUtil.closeResource(conn, psmt, stmt, rs);return list;4.5 统计管理模块设计与实现统计部门总数和各部门人数(1)view 层private void initComponents() jScrollPane1 = new javax.swing.JScrollPane();jTable1 = new javax.swing.JTable();jButton1 = new jav
36、ax.swing.JButton();jLabel1 = new javax.swing.JLabel();jdepart = new javax.swing.JTextField();jButton2 = new javax.swing.JButton();jScrollPane3 = new javax.swing.JScrollPane();jTable2 = new javax.swing.JTable();jLabel2 = new javax.swing.JLabel();20setDefaultCloseOperation(javax.swing.WindowConstants.
37、EXIT_ON_CLOSE);jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object , new String “员工编号“ , “员工姓名“, “统计人数“ );jScrollPane1.setViewportView(jTable1);jButton1.setText(“u786eu5b9a“);jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.Act
38、ionEvent evt) jButton1ActionPerformed(evt););jLabel1.setText(“u8bf7u8f93u5165u90e8u95e8u540du8fdbu884cu6a21u7ccau67e5u627e“);jdepart.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jdepartActionPerformed(evt););jButton2.setText(“u8fd4
39、u56deu4e3bu754cu9762“);jButton2.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton2ActionPerformed(evt););jTable2.setModel(new javax.swing.table.DefaultTableModel(new Object 21, new String “部门编号“ , “部门名称“ );jScrollPane3.setViewpo
40、rtView(jTable2);jLabel2.setText(“u8f93u5165u7a7au503cu53efu67e5u627eu5168u90e8u5458u5de5u6240u5728u90e8u95e8u7684u4fe1u606f“);public void findDepart(JTable jTable, String name) DefaultTableModel model = (DefaultTableModel) jTable.getModel();model.setRowCount(0);Vector v = departDao.findDepart(name);
41、for (int i = 0; i v.size(); i+) model.addRow(Vector) v.get(i);Overridepublic void showDepartNumber(JTable jTable, String name) DefaultTableModel model = (DefaultTableModel) jTable.getModel();model.setRowCount(0);Vector v = departDao.showDepartNumber(name);for (int i = 0; i v.size(); i+) model.addRow
42、(Vector) v.get(i);(2)action 层private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) String depart2 = jdepart.getText();if (depart2 != null) d.showDepartNumber(jTable1, depart2);d.findDepart(jTable2, depart2); else pleaseInput p = new pleaseInput();p.setVisible(true);22(3)dao 层public Ve
43、ctor findDepart(String name) Vector list = new Vector();String sql = “select *“ + “from t_department “+ “where dept_name like%“ + name + “%“;conn = JDBCUtil.getConnection();try stmt = conn.createStatement();rs = stmt.executeQuery(sql);while (rs.next() Vector listObject = new Vector();/ listObject.ad
44、d( new/ User(rs.getInt(“id“),rs.getString(“uname“),rs.getString(“pwd“);listObject.add(rs.getInt(“dept_no“);listObject.add(rs.getString(“dept_name“);list.add(listObject); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally JDBCUtil.closeResource(conn, psmt, stmt, rs);
45、return list;Overridepublic Vector showDepartNumber(String name) / TODO Auto-generated method stubVector list = new Vector();String sql = “select staff_id,staff_name from t_staff_info “ +“where dept_no in “ +“(select dept_no from t_department “ +“where dept_name like %“+name+“%)“;conn = JDBCUtil.getC
46、onnection();23try stmt = conn.createStatement();rs = stmt.executeQuery(sql);int rowCount=0;while (rs.next() listObject = new Vector();listObject.add(rs.getInt(“staff_id“);listObject.add(rs.getString(“staff_name“);/int rowCount = rs.last().getRow();/得到当前行号,也就是记录数rowCount+;list.add(listObject);listObj
47、ect.add(rowCount); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally JDBCUtil.closeResource(conn, psmt, stmt, rs);return list;4.6 系统设置模块设计与实现可以对数据库备份,恢复,管理操作员,基础资料设置.其中数据备份和数据恢复的代码是public void backUp(User user) 24/ TODO Auto-generated method stubtry ObjectOutputStr
48、eam oos = new ObjectOutputStream(new FileOutputStream(“g:user.txt“);oos.writeObject(user);oos.close();backupok b=new backupok();b.setVisible(true); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();backupfalse b=new backupfalse();b.setVisible(true); catch (IOException e) / TODO Auto-generated catch blocke.print