人事工資管理系統(tǒng)課程設(shè)計報告.doc
《人事工資管理系統(tǒng)課程設(shè)計報告.doc》由會員分享,可在線閱讀,更多相關(guān)《人事工資管理系統(tǒng)課程設(shè)計報告.doc(29頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
蘇州科技大學(xué) 電子信息與智能化實(shí)驗(yàn)中心 面向?qū)ο蠹夹g(shù)課程設(shè)計A 報告 ——人事工資管理系統(tǒng) 專業(yè)年級 計算機(jī)科學(xué)與技術(shù)(嵌入式培養(yǎng))15級 班 級 嵌入式1511 學(xué) 號 15200141119 15200141115 15200141101 15200141137 15200141136 姓 名 張梓軒 戚春陽 徐敏杰 袁祺林 王雨欣 成 績 指導(dǎo)教師 丁 俊 2016年12月24日 姓名 角色 承擔(dān)任務(wù) 自評成績 張梓軒 組長 E-R圖;統(tǒng)一數(shù)據(jù)庫;工資管理系統(tǒng)顯示所有員工的工資,部門整體調(diào)薪的實(shí)現(xiàn);人事管理系統(tǒng)的時序圖和活動圖; 戚春陽 組員 統(tǒng)計管理系統(tǒng)顯示各個部門和人數(shù)功能的實(shí)現(xiàn);用戶權(quán)限和密碼設(shè)置;系統(tǒng)時間輸出;實(shí)現(xiàn)系統(tǒng)設(shè)置管理中的數(shù)據(jù)備份和數(shù)據(jù)恢復(fù);整合所有人代碼,實(shí)現(xiàn)功能的統(tǒng)一和代碼的優(yōu)化;登錄界面的活動圖和時序圖; 徐敏杰 組員 人事管理系統(tǒng)添加員工信息,修改員工信息;用例圖和用例說明;任務(wù)書的編寫;系統(tǒng)設(shè)置系統(tǒng)的活動圖、時序圖; 袁祺林 組員 人事管理系統(tǒng)查詢員工的登陸信息、模糊查詢和刪除員工;課程總結(jié);任務(wù)書的編寫;人事管理系統(tǒng)的時序圖和活動圖; 王雨欣 組員 員工獎懲表的增、刪、改、查;系統(tǒng)類圖;課程設(shè)計與需求分析;統(tǒng)計管理系統(tǒng)的活動圖和時序圖; 注:如果按小組進(jìn)行,需要此表,否則刪除。 人事工資系統(tǒng)設(shè)計報告 1 課程設(shè)計任務(wù)概述 人事工資管理系統(tǒng)是非常通用的管理信息系統(tǒng),一個公司必須要有健全的人事工資管理系統(tǒng)來管理員工的信息,才能實(shí)現(xiàn)它的日常運(yùn)轉(zhuǎn)。 因此,為了支持企業(yè)規(guī)范化的管理,高效率地完成人事的業(yè)務(wù),需要實(shí)現(xiàn)包括員工的姓名、年齡、編號、電話號碼等基本信息的建立,授予員工所能獲取的權(quán)限,例如管理員權(quán)限,就可以對普通員工進(jìn)行信息管理,其中包括新員工個人的基本信息資料的增加、修改,退休員工的信息的刪除,員工獎懲信息的增加、刪除和修改;此外還支持管理員對部門整體進(jìn)行調(diào)薪,擴(kuò)大了管理員的管理范圍; 同時為了支持人事管理及其相關(guān)方面的科學(xué)決策,增加了員工的個人基本信息查詢、薪資查詢、獎懲情況查詢和部門的總體情況查詢等,大大提高了公司內(nèi)部員工管理的效率,減少了不必要的精力的投入,使得企業(yè)的正常維護(hù)得以實(shí)現(xiàn)。 2 系統(tǒng)需求分析 2.1 系統(tǒng)功能分析 本系統(tǒng)主要是實(shí)現(xiàn)企業(yè)人事管理的系統(tǒng)化、規(guī)范化和自動化,實(shí)現(xiàn)數(shù)據(jù)的錄入、插入、刪除、查詢、統(tǒng)計、更新等功能。 具有員工注冊以及登錄的功能,且登錄后管理員可修改自己用戶權(quán)限; 大體分為以下四個主功能: 1.人事管理系統(tǒng):主要用來實(shí)現(xiàn)對員工的基本信息的增加、信息的刪除、信息的修改以及模糊查詢,還包括對員工的獎懲信息的增加,信息的刪除,信息的修改以及信息的查詢; 2.工資管理系統(tǒng):主要包括模糊查詢部門信息、員工的總體以及個人工資信息,以及對部門的薪資進(jìn)行整體調(diào)整的功能; 3.統(tǒng)計管理系統(tǒng):主要指用來顯示部門的整體情況以及員工人數(shù); 4.系統(tǒng)設(shè)置系統(tǒng):主要是用來對數(shù)據(jù)進(jìn)行恢復(fù)和備份。 2.2 用例圖及用例說明 2.2.1 用戶注冊用例 1.用例名稱: 注冊 2.用例描述: 注冊成為本管理系統(tǒng)的用戶 3.角色: 用戶 4.前置條件: 格式輸入正確 5.后置條件: 保存此用戶的信息 6.基本路徑: A.填寫用戶名和密碼 B.保存用戶信息 7.擴(kuò)展點(diǎn): A.未填寫完整或者格式錯誤 a1.錯誤提示 B.用戶已經(jīng)存在 b1.錯誤提示 3 系統(tǒng)設(shè)計 3.1 系統(tǒng)類圖 3.2 系統(tǒng)活動圖 用戶登陸活動圖: 人事管理系統(tǒng)活動圖: 統(tǒng)計管理系統(tǒng)活動圖: 工資管理系統(tǒng)活動圖: 系統(tǒng)設(shè)置管理活動圖: 3.3 系統(tǒng)時序圖 用戶登陸時序圖: 人事管理系統(tǒng)時序圖: 工資管理系統(tǒng)時序圖: 統(tǒng)計管理系統(tǒng)時序圖: 系統(tǒng)設(shè)置管理時序圖: 4 系統(tǒng)實(shí)現(xiàn) 4.1登錄模塊設(shè)計與實(shí)現(xiàn) 登錄模塊是用戶登錄進(jìn)去進(jìn)行相關(guān)操作的,如員工信息的增刪改查等等。 (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(); 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.setFont(new java.awt.Font("Microsoft YaHei UI", 1, 44)); loginTitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); loginTitle.setText("\u4eba\u4e8b\u5de5\u8d44\u7ba1\u7406\u7cfb\u7edf"); jLabel1.setText("\u7528\u6237\u540d"); jLabel2.setText("\u5bc6 \u7801\uff1a"); //limit.setModel(javax.swing.DefaultComboBoxModel@187e702); jLabel3.setText("\u6743 \u9650\uff1a"); loginBtn.setText("\u767b\u9646"); (2) Action層 private void registerBtnActionPerformed(java.awt.event.ActionEvent evt) { registerFrame r = new registerFrame(); r.setVisible(true); } private void loginBtnMouseClicked(java.awt.event.MouseEvent evt) { String name = this.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) { wusername = name; wtype = limit; ok o = new ok(); o.setVisible(true); setVisible(false); } else { fail f = new fail(); f.setVisible(true); dispose(); } } (3) Dao數(shù)據(jù)交互層 @Override public User login(User user) { // TODO Auto-generated method stub User resultUser=null; String sql = "select user_no,user_name,user_pwd,user_type" + " from 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); if(rs.next()){ resultUser = new User(); resultUser.setUserNo(rs.getInt("user_no")); resultUser.setUserName(rs.getString("user_name")); resultUser.setUserPwd(rs.getString("user_pwd")); resultUser.setUserType(rs.getInt("user_type")); } } catch (SQLException e) { e.printStackTrace(); } finally{ JDBCUtil.closeResource(conn, psmt, stmt, rs); } return resultUser; } 4.2系統(tǒng)主界面 可在該模塊完成員工資料的常用操作。員工的各項(xiàng)人事記錄可在選擇員工后,在主界面下面的分欄里面進(jìn)行添加、修改、刪除操作。 4.3人事管理模塊設(shè)計及實(shí)現(xiàn) 對員工的相關(guān)資料及記錄進(jìn)行管理。可在該模塊對員工基本資料、獎懲記錄、修改員工信息可實(shí)現(xiàn)對員工的調(diào)動、薪水記錄進(jìn)行修改。 當(dāng)進(jìn)入到人事管理子系統(tǒng)模塊,再點(diǎn)擊模糊查詢。刪除員工按鈕,會進(jìn)入到下面的界面 其中的模糊查詢代碼如下 (1) view層 private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton1 = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jname = new javax.swing.JTextField(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jLabel2 = new javax.swing.JLabel(); jButton4 = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object[][] { }, new String[] { "姓名", "編號", "部門編號", "職稱", "性別", "基本工資", "電話號碼", "工號" })); jScrollPane1.setViewportView(jTable1); jButton1.setText("\u786e\u5b9a"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLabel1 .setText("\u8bf7\u8f93\u5165\u59d3\u540d\uff0c\u652f\u6301\u6a21\u7cca\u67e5\u627e"); jname.setText(null); jButton2.setText("\u9000\u51fa\u6a21\u7cca\u67e5\u627e"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jButton3.setText("\u5237\u65b0"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); jLabel2.setText("\u5237\u65b0\u540e\u53ef\u7ee7\u7eed\u67e5\u627e"); jButton4.setText("\u5220\u9664\u6b64\u5458\u5de5"); jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt); } }); jLabel3 .setText("\u7a7a\u503c\u53ef\u67e5\u627e\u6240\u6709\u5458\u5de5"); jLabel4 .setText("\u9700\u8981\u8f93\u5165\u5168\u540d\u53ef\u4ee5\u5220\u9664\u5458\u5de5"); public void findStaffName(JTable jTable, String name) { DefaultTableModel model = (DefaultTableModel) jTable.getModel(); model.setRowCount(0); Vector v = staffInfoDao.findStaffInfo(name); for (int i = 0; i < v.size(); i++) { model.addRow((Vector) v.get(i)); } } (2) action層 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String name = jname.getText(); if (name != null) { staff.findStaffName(jTable1, name); } else { pleaseInput p = new pleaseInput(); p.setVisible(true); } } (3) dao層 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 = new 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")); 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 block e.printStackTrace(); } finally { JDBCUtil.closeResource(conn, psmt, stmt, rs); } return list; } 4.4 工資管理模塊設(shè)計與實(shí)現(xiàn) 在員工基本信息管理界面里可以對單個員工進(jìn)行基本工資的修改,因而在面向人數(shù)較多的企業(yè)時,這種方式存在弊端,部門整體調(diào)薪操作可以對整個業(yè)績高的部門進(jìn)行整體調(diào)薪 (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.JLabel(); jScrollPane1 = 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.JLabel(); jLabel6 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jButton1.setText("\u8fd4\u56de\u4e3b\u754c\u9762"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLabel1 .setText("\u8bf7\u8f93\u5165\u90e8\u95e8\u540d\u53ef\u8fdb\u884c\u6a21\u7cca\u67e5\u627e"); jButton2.setText("\u786e\u5b9a"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); jLabel2 .setText("\u7ed9\u6307\u5b9a\u90e8\u95e8\u7684\u6240\u6709\u5458\u5de5\u8c03\u85aa"); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object[][] { }, new String[] { "部門編號", "部門名稱" })); jScrollPane1.setViewportView(jTable1); jLabel3.setText("\u8f93\u5165\u5168\u540d\u9009\u5b9a\u90e8\u95e8"); sure.setText("\u786e\u5b9a"); sure.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { sureActionPerformed(evt); } }); jLabel4.setText("\u8f93\u5165\u8c03\u6574\u529b\u5ea6"); money.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { moneyActionPerformed(evt); } }); jLabel5 .setText("\u6e29\u99a8\u63d0\u793a:\u63d0\u85aa\u5219\u8f93\u5165\u6b63\u6570,\u964d\u85aa\u5219\u8f93\u5165\u8d1f\u6570"); jLabel6.setText("\u5143"); (2) action層 private void sureActionPerformed(java.awt.event.ActionEvent evt) { String jdept = jdepart2.getText(); Double money2 = Double.parseDouble(money.getText()); StaffInfo s=new StaffInfo(); s.num(staff.updateSalary(jdept,money2)); } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { dispose(); } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { String department = jdepart.getText(); if (department != 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 { stmt = 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 (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { JDBCUtil.closeResource(conn, psmt, stmt, rs); } return list; } 4.5 統(tǒng)計管理模塊設(shè)計與實(shí)現(xiàn) 統(tǒng)計部門總數(shù)和各部門人數(shù) (1) view層 private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButton1 = new javax.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(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object[][] { }, new String[] { "員工編號", "員工姓名", "統(tǒng)計人數(shù)" })); jScrollPane1.setViewportView(jTable1); jButton1.setText("\u786e\u5b9a"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jLabel1 .setText("\u8bf7\u8f93\u5165\u90e8\u95e8\u540d\u8fdb\u884c\u6a21\u7cca\u67e5\u627e"); jdepart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jdepartActionPerformed(evt); } }); jButton2.setText("\u8fd4\u56de\u4e3b\u754c\u9762"); 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[][] { }, new String[] { "部門編號", "部門名稱" })); jScrollPane3.setViewportView(jTable2); jLabel2 .setText("\u8f93\u5165\u7a7a\u503c\u53ef\u67e5\u627e\u5168\u90e8\u5458\u5de5\u6240\u5728\u90e8\u95e8\u7684\u4fe1\u606f"); public void findDepart(JTable jTable, String name) { DefaultTableModel model = (DefaultTableModel) jTable.getModel(); model.setRowCount(0); Vector v = departDao.findDepart(name); for (int i = 0; i < v.size(); i++) { model.addRow((Vector) v.get(i)); } } @Override public 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((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); } } (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 { stmt = 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 (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { JDBCUtil.closeResource(conn, psmt, stmt, rs); } return list; } @Override public Vector showDepartNumber(String name) { // TODO Auto-generated method stub Vector 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.getConnection(); try { 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();//得到當(dāng)前行號,也就是記錄數(shù) rowCount++; list.add(listObject); listObject.add(rowCount); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { JDBCUtil.closeResource(conn, psmt, stmt, rs); } return list; } 4.6 系統(tǒng)設(shè)置模塊設(shè)計與實(shí)現(xiàn) 可以對數(shù)據(jù)庫備份,恢復(fù),管理操作員,基礎(chǔ)資料設(shè)置. 其中數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)的代碼是 public void backUp(User user) { // TODO Auto-generated method stub try { ObjectOutputStream 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 block e.printStackTrace(); backupfalse b=new backupfalse(); b.setVisible(true); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); backupfalse2 b=new backupfalse2(); b.setVisible(true); } } @Override public User recOver() { User user=null; try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("g:\\user.txt")); user=(User)ois.readObject(); ois.close(); recoverok r=new recoverok(); r.setVisible(true); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); recoverfalse2 r=new recoverfalse2(); r.setVisible(true); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); recoverfalse r=new recoverfalse(); r.setVisible(true); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return user; } 5 系統(tǒng)測試 測試1 系統(tǒng)登錄測試: 步驟及操作:運(yùn)行系統(tǒng),轉(zhuǎn)到登陸界面,輸入賬號及密碼,選擇用戶類型,測試登陸功能。 允許偏差:不允許任何偏差 條件:用戶即可,包括管理員和普通用戶。 測試1 系統(tǒng)登錄結(jié)果: 測試數(shù)據(jù) 期望輸出 實(shí)際輸出 選取理由 用戶名 密碼 ‘12abc’ ‘ ‘ 錯誤 錯誤 密碼為空 ‘56789’ ‘134我5’ 錯誤 錯誤 密碼非法 ‘ ’ ‘a(chǎn)123’ 錯誤 錯誤 用戶名為空 ‘123的34’ ‘a(chǎn)123’ 錯誤 錯誤 用戶名非法 ‘陳思成’ ‘a(chǎn)123’ 登錄成功 登錄成功 為合法登錄請求 測試2 獎懲系統(tǒng)增加獎懲信息測試如下表所示: 測試數(shù)據(jù) 期望輸出 實(shí)際輸出 選取理由 員工編號 獎懲日期 獎懲原因 獎懲類別 獎懲分?jǐn)?shù) 213 七月二十八日 上班睡覺 懲 三十 失敗 失敗 獎懲分?jǐn)?shù)格式錯誤 十五 七月二十八日 獲獎 獎 90 失敗 失敗 員工編號格式錯誤 24 2017-3-4 業(yè)績突出 獎 100 成功 成功 輸入符合條件 在測試獎懲系統(tǒng)時,用戶不存在提示界面 原因:不存在此員工。 6 課程設(shè)計總結(jié) 已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)備份,數(shù)據(jù)恢復(fù)。查詢員工的登錄信息,模糊查詢,刪除、增加、修改員工信息。顯示所有員工工資,部門整體調(diào)薪,員工獎懲。顯示各個部門和各個部門的人數(shù)。還沒有實(shí)現(xiàn)對員工的請假管理,考評管理,以及操作日志管理相關(guān)功能。 經(jīng)過老師的一步步地指導(dǎo),我們一步步地完善自己的代碼,使系統(tǒng)能夠?qū)崿F(xiàn)越來越多的功能。在實(shí)驗(yàn)的過程中,我們也會發(fā)現(xiàn)一些問題,比如:在數(shù)據(jù)庫設(shè)計初時,在劃分模塊確定各實(shí)體及關(guān)系,也許是因?yàn)樽约簩θ耸鹿芾聿惶私?,也許是因?yàn)樽约簩τ跀?shù)據(jù)庫整體概念還是理解的不到位,所以遲遲不能確定該系統(tǒng)所設(shè)計相關(guān)的實(shí)體以及它們的關(guān)系,最后在查閱相關(guān)資料和老師的點(diǎn)撥下,我們克服了困難。 我覺得計算機(jī)語言最大的特點(diǎn)就是得靠我們認(rèn)真務(wù)實(shí),因?yàn)槲覀兙邆涞挠嬎銠C(jī)方面的基礎(chǔ)知識太少,我們得邊聽邊自學(xué),這樣既能培養(yǎng)我們的興趣,又能學(xué)到實(shí)在的知識。通過課程設(shè)計我們進(jìn)一步掌握了許多課本知識,同時還了解了許多課外的有關(guān)計算機(jī)語言的知識如數(shù)據(jù)庫的有關(guān)知識,這對于我們來說受益匪淺。 7 參考文獻(xiàn) [1] 王國旭. 基于企業(yè)需求的人事管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J]. 江西廣播電視大學(xué)學(xué)報,2013,04:72-75. [2] 張瑩瑩. 企業(yè)人事管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].吉林大學(xué),2014. [3] 范雯芩. 人事工資管理系統(tǒng)的分析與設(shè)計[D].云南大學(xué),2013. [4] 李港港. 一個中小企業(yè)人力資源管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].華中科技大學(xué),2012. [5] 常濤. 人事數(shù)據(jù)庫管理系統(tǒng)研發(fā)背景和現(xiàn)狀分析[J]. 電腦知識與技術(shù),2014,07:1364-1365+1386. [6] 薩維奇,施平安,李牧譯. Java完美編程(第3版). 清華大學(xué)出版社,2008. [7] 陶永明. 企業(yè)人事管理系統(tǒng)設(shè)計[J]. 計算機(jī)與信息技術(shù),2008,Z1:96-100. [8] Connolly,T.M.著,何玉潔 譯. 數(shù)據(jù)庫設(shè)計教程(第二版),2005. [9] 趙靜. 人事檔案管理系統(tǒng)分析[J]. 經(jīng)營管理者,2013,30:285.- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 人事 工資管理 系統(tǒng) 課程設(shè)計 報告
鏈接地址:http://m.appdesigncorp.com/p-6488395.html