《面向对象技术课程设计A人事工资管理系统--课程设计.doc》由会员分享,可在线阅读,更多相关《面向对象技术课程设计A人事工资管理系统--课程设计.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象技术课程设计A 任务书一、课程设计目的“面向对象技术”是计算机科学与技术专业的核心专业课,面向对象程序设计技术也是软件工程师的基本技能,“面向对象课程设计”的目的是理解和巩固面向对象程序设计的基本理论、原理和方法的重要的实践环节。 本课程设计综合应用学生所学知识,结合小型应用系统的设计,建立面向对象程序设计的概念,理解和巩固封装、类与对象、继承与多态、JAVA数据结构、多线程、IO、UI设计及UML等知识,掌握常用设计模式知识以及分层设计思想,为后续课程的学习打下良好的基础。二、课程设计阶段教学内容与任务本课程设计分二个阶段,第一阶段为课程知识的复习与巩固,教学形式为讲授与训练相结合(
2、算法与程序设计基础课程设计实施计划);第二阶段为项目实战案例与职业素养教育,以学生编程训练为主,在这一阶段,学生需要以分组为单位,完成以下实训项目:人事管理系统。三、选题要求、学时分配和辅导选题要求(1)以学号的最低位为选题依据,每人1题,独立完成各自的任务。(2)任务完成后,以小组为单位,独立撰写课程设计报告并打印。四、评分和验收标准 1评分标准课程成绩组成:平时任务合作与设计质量课程设计报告质量2验收标准教师根据设计报告、软件的运行演示和学生回答问题的情况评定成绩。 (1)设计报告规范、完整,概念原理论述清楚、软件设计结构合理,独立完成设计,软件运行正常,能够突出表现多道程序运行的特点,回
3、答问题准确明了,可以评为优秀(A)。 (2)设计报告规范、完整,概念原理论述清楚、软件设计结构合理,独立完成、软件基本运行正常,能够表现多道程序运行的特点,回答问题正确,可以评为良(B)。 (3)设计报告规范、概念原理论述基本清楚、软件设计结构合理,基本独立完成,软件基本运行正常,基本能够表现多道程序运行的特点,回答问题部分正确,可以评为中良(C)。 (4)设计报告基本规范、概念原理论述基本清楚、软件设计结构基本合理,部分独立完成,软件基本可以运行,基本能够表现多道程序运行的特点,回答问题部分正确,可以评为及格(D)。 (5)设计报告不规范、概念原理论述不清楚、软件设计结构不合理,大部分不能独
4、立完成,软件基本不能运行,回答问题大部分不正确,可以评为不及格(E)。五、设计的基本步骤(1) 需求分析查找相关技术资料,了解基本原理,根据题目要求的功能,确定运行流程。.(2) 设计软件的界面程序运行界面要求使用中文或中英文对照.。(3) 总体设计、用UM图实现:用例图、类图、状态图、时序图 确定软件的总体结构、模块关系、总体流程;确定开发要使用的语言环境;要解决的关键技术问题。(4) 详细设计确定要使用的函数、API,掌握它们的使用的参数和返回值。确定模块内部的流程和实现算法;确定要设计的过程、构件、类、对象、函数和它们的参数。(5) 编码设计建立设计编程的环境;注意编程的风格的规范。(6
5、) 实际数据运行测试 检查程序是否有错误; 检查界面是否美观; 检查操作是否方便; 检查提供的信息是否清晰; 检查性能是否稳定。六、设计说明书内容要求6.1 概述 目的:实现人事管理。 主要完成的任务:实现了员工信息的查询,对员工信息的增、删、改,对员工工资的查询,和对员工信息的统计,数据的备份和恢复。 使用的开发工具:Myeclipse8.5,MySQL。 解决的主要问题:解决了对员工信息的管理,对工资的统计。6.2 总体设计 确定基本的技术路线:面向对象。确定软件的总体结构、模块关系、总体流程:人事管理系统工资管理系统统计管理系统管理管理系统人事工资管理系统数 据恢复数据备份部门个数统计部
6、门人数统计员工工资管理员工调薪管理员工信息管理员工奖惩管理6.3 详细设计 1. ResultSet executeQuery(Stringsql) throws SQLException/执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。 参数: sql - 要发送给数据库的 SQL 语句,通常为静态 SQL SELECT 语句;返回: 包含给定查询所生成数据的 ResultSet 对象;永远不能为 null ;抛出: SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者给定 SQL 语句生成单个 ResultSet 对象
7、之外的任何其他内容。2.3.主要的方法体: publicUserlogin(Useruser);/登录方法publicVectorfindUserAll();/查找所有员工信息publicvoidbackUp(Useruser);/数据备份publicUserrecOver(); /数据恢复 publicVectorshowUserType();/显示用户种类 publicVectorshowUserTypeMain();/显示用户种类 publicintupdateUserType(UserTypeuserType);/更新用户种类 publicintsaveUserType(UserTyp
8、euserType);/保存用户种类 publicintremoveUserType(inttid);/删除用户种类 publicVectorshowUserTypeAndUser();/连接查询员工信息及其种类 publicVectorshowUserTypeLikeType(StringuserType); /模糊查询用户种类 public Vector findStaffInfo(String staffname);/模糊查找 public int saveStaff(StaffInfo staffInfo);/添加员工 public int removeStaff(String nam
9、e);/根据姓名删除员工 public int updateStaff(StaffInfo2 staffInfo2);/修改员工信息 public Vector findStaffSalary(String staffname);/模糊查找 public int updateSalary(String depart,double salary);/调整员工薪水信息 public int addRewardPunish(RewardPunish rp);/增加奖惩数据 public int deleteRewardPunish(RewardPunish rp);/删除奖惩数据 public in
10、t updateRewardPunish(int id,String date, String type, String reason,int score,String remark);/更新奖惩数据 public Vector showRewardPunish(int id);/显示奖惩数据 public int SelectRewardPunish(RewardPunish rp);/选择奖惩数据 publicVectorfindDepart(Stringname);/根据部门名模糊查找 publicVectorshowDepartNumber(Stringname);/根据部门名统计各部
11、门人数6.4 编码设计开发环境的设置和建立:下载并安装My Eclipse8.5,My SQL6.0;程序设计时要注意的事项:需加载与MySQL相对应的驱动包; 关键构件/插件的特点和使用:JTable需要放在ScrollPane中,可与数据库中的表相对应,而且可以实现下拉滚动。主要程序的代码设计及注释:一登录模块是用户登录进去进行相关操作的,如员工信息的增删改查等等。(1)View层代码loginTitle = new javax.swing.JLabel();jLabel1 = new javax.swing.JLabel();jLabel2 = new javax.swing.JLabe
12、l();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.
13、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(u4ebau4e8bu5de5u8d44u7ba1u7406u7cfbu7edf);jLabel1
14、.setText(u7528u6237u540d);jLabel2.setText(u5bc6 u7801uff1a);/limit.setModel(javax.swing.DefaultComboBoxModel187e702);jLabel3.setText(u6743 u9650uff1a);loginBtn.setText(u767bu9646);(2) Action层private void registerBtnActionPerformed(java.awt.event.ActionEvent evt) registerFrame r = new registerFrame()
15、;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 us
16、er = 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数据交互层Overridepublic User login(User user) / TODO Auto-generated metho
17、d 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(s
18、ql); 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();finallyJDBCUtil.closeResource(conn
19、, psmt, stmt, rs);return resultUser;二人事管理模块设计及实现对员工的相关资料及记录进行管理。可在该模块对员工基本资料、奖惩记录、修改员工信息可实现对员工的调动、薪水记录进行修改。当进入到人事管理子系统模块,再点击模糊查询。删除员工按钮,会进入到下面的界面其中的模糊查询代码如下(1) view层private void initComponents() jScrollPane1 = new javax.swing.JScrollPane();jTable1 = new javax.swing.JTable();jButton1 = new javax.swin
20、g.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();
21、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.addActionListener(new java.awt.event.
22、ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton1ActionPerformed(evt););jLabel1.setText(u8bf7u8f93u5165u59d3u540duff0cu652fu6301u6a21u7ccau67e5u627e);jname.setText(null);jButton2.setText(u9000u51fau6a21u7ccau67e5u627e);jButton2.addActionListener(new java.awt.event
23、.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton2ActionPerformed(evt););jButton3.setText(u5237u65b0);jButton3.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton3ActionPerformed(evt););jLabel2.
24、setText(u5237u65b0u540eu53efu7ee7u7eedu67e5u627e);jButton4.setText(u5220u9664u6b64u5458u5de5);jButton4.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton4ActionPerformed(evt););jLabel3.setText(u7a7au503cu53efu67e5u627eu6240u6709u
25、5458u5de5);jLabel4.setText(u9700u8981u8f93u5165u5168u540du53efu4ee5u5220u9664u5458u5de5);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();
26、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 s
27、taffname) 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.getIn
28、t(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
29、(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);return list;4.4 工资管理模块设计与实现在员工基本信息管理界面里可以对单个员工进行基本工资的修改,因而在面向人数较多的企业时,这种方式存在弊端,部门整体调薪操作可
30、以对整个业绩高的部门进行整体调薪(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 jav
31、ax.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.s
32、wing.WindowConstants.EXIT_ON_CLOSE);jButton1.setText(u8fd4u56deu4e3bu754cu9762);jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton1ActionPerformed(evt););jLabel1.setText(u8bf7u8f93u5165u90e8u95e8u540du53efu8fdbu884cu6a21
33、u7ccau67e5u627e);jButton2.setText(u786eu5b9a);jButton2.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton2ActionPerformed(evt););jLabel2.setText(u7ed9u6307u5b9au90e8u95e8u7684u6240u6709u5458u5de5u8c03u85aa);jTable1.setModel(new j
34、avax.swing.table.DefaultTableModel(new Object , new String 部门编号, 部门名称 );jScrollPane1.setViewportView(jTable1);jLabel3.setText(u8f93u5165u5168u540du9009u5b9au90e8u95e8);sure.setText(u786eu5b9a);sure.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.Actio
35、nEvent evt) sureActionPerformed(evt););jLabel4.setText(u8f93u5165u8c03u6574u529bu5ea6);money.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) moneyActionPerformed(evt););jLabel5.setText(u6e29u99a8u63d0u793a:u63d0u85aau5219u8f93u5165u6b
36、63u6570,u964du85aau5219u8f93u5165u8d1fu6570);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);priv
37、ate 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(tr
38、ue);(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();/
39、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 blocke.printStackTrace(); finally JDBCUtil.closeResource(conn, psmt, stmt, r
40、s);return list;统计管理模块设计与实现统计部门总数和各部门人数(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.JButt
41、on();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 员工编号, 员工姓名, 统计人数 );jScrollPane1
42、.setViewportView(jTable1);jButton1.setText(u786eu5b9a);jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent 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(u8fd4u