江洋幼儿园健康教育工作计划项目2: 人力资源管理系统的设计与实现
实验目的: 1.了解项目需求;
2. 掌握数据库的设计和开发; 3. 掌握图形用户界面的设计和开发;
4. 掌握利用JDBC技术访问数据库的步骤和方法。 实验内容:
(1)系统功能需求分析
该系统的功能需求模块分析设计如下:
登陆模块:实现登陆功能的数据处理,如果员工编号和密码正确,则根据员工级别进入相应的界面。
退出模块:退出本系统。
管理员管理模块:包含添加新员工、修改员工级别、查看个人信息和修改个人密码功能。 部门经理管理模块:包含考评员工、查看员工工作汇报、给员工布置任务、查看个人信息和修改个人密码功能。
普通员工管理模块:包含汇报工作、查看考评成绩、查看个人信息和修改个人密码功能。 (2)企业人力资源管理系统功能图
页脚内容7
江洋幼儿园健康教育工作计划HR系统 登录 退出 管理员 部门经理 普通员工 个人信息维查看个人信修改密码 添加员工 修改员工角查看员工信查看个人信个人信息维修改密码 查看 员工工考评员工 查看部门员工查看个人信个人信息维修改密码 查看考评 汇报工作 3.数据库的设计
一个结构良好的数据库可以很好实现系统的查询和管理,并且能够极大地提高系统的运行效率。
对于本项目用到的表格,可以根据所学的数据库管理系统知识,按照数据优化的思想设计表。根据业务需求,设计用户表、角色表、部门表、考评表、汇报表。这些表之间按照ID建立关系。
4.数据库的实现
本系统采用MySQL数据库设计数据库以及表格。 步骤一:创建数据库hr;
步骤二创建员工表(employee)、角色表(role)、部门表(department)、考评表(evaluation)、汇报表(report),并建立关系。
表结构如下:
页脚内容7
江洋幼儿园健康教育工作计划(1)CREATE TABLE `department` (
`DEPARTID` int(11) NOT NULL AUTO_INCREMENT, `NAME` varchar(50) NOT NULL, PRIMARY KEY (`DEPARTID`) )
(2)CREATE TABLE `employee` ( `empNo` varchar(20) NOT NULL, `empName` varchar(50) NOT NULL, `passWord` varchar(20) NOT NULL,、 `sex` varchar(2) NOT NULL, `roleId` int(11) NOT NULL, `departmentid` int(11) NOT NULL, `salary` double NOT NULL, PRIMARY KEY (`empNo`) )
(3)CREATE TABLE `evaluation` (
`evaluationId` int(11) NOT NULL AUTO_INCREMENT, `evaluatorId` int(20) NOT NULL, `evaluatedId` int(20) NOT NULL, `score` double NOT NULL, PRIMARY KEY (`evaluationId`) )
页脚内容7
江洋幼儿园健康教育工作计划
(4)CREATE TABLE `report` (
`REPORTID` int(11) NOT NULL AUTO_INCREMENT, `REPORTDATE` varchar(50) NOT NULL, `REPORTERID` int(20) NOT NULL, `CONTENT` varchar(100) NOT NULL, PRIMARY KEY (`REPORTID`) )
(5)CREATE TABLE `role` (
`ROLEID` int(11) NOT NULL AUTO_INCREMENT, `ROLENAME` varchar(50) NOT NULL, PRIMARY KEY (`ROLEID`) )
步骤三:向employee表中添加几条记录 insert
into
employee
values
('0001','zhangsan','0001','
男
',1,1,4000),('0002','lisi','0002','男',2,2,5000),('0003','wangwu','0003','男',3,3,4500);
5.项目的创建与组织
根据目前企业开发的习惯,我们将项目中的类分别放到不同的包中:
Entity包:实体层,存放实体功能类。一般将数据库中的表映射为实体类:表名映射为类名,列名映射为属性,然后在类中增加上get/set方法、构造方法等。
Dao包:存放访问数据库的业务逻辑类。 View包:存放界面相关的类。
页脚内容7
江洋幼儿园健康教育工作计划Util包:存放辅助工具类。
包的明名习惯:企业域名倒写+项目名。如cn.edu.uzz.entity 6.实体类的设计
Employee、Role、Report、Department、Evaluation类。 7.业务逻辑类的设计
EmployeeDao、RoleDao、ReportDao、DepartmentDao、EvaluationDao类。 EmployeeDao类的参考代码如下:
public class EmployeeDao {
//通过员工编号和密码实现员工登录
public Employee loginByEmpNoAndPassword(String empNo,String password){ Employee employee=null;
try{Class.forName(\加载MySQL驱动
Connection conn = DriverManager.getConnection( \\\建立数据库连接
PreparedStatement pstmt = conn.prepareStatement(\employee where empno=? and password=?\创建PreparedStatment对象
pstmt.setString(1,empNo); pstmt.setString(2,password);
ResultSet rs = pstmt.executeQuery();// 获取查询结果集 // 如果访问结果集中有数据,则用这些数据实例化Employee对象并返回 if (rs.next()) { employee=new
Employee(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getInt(6),rs.getDouble(7));
}
rs.close();// 关闭结果集 pstmt.close();// 关闭载体 conn.close();// 关闭连接 }
catch (Exception e) {
e.printStackTrace(); }
return employee; } }
7
页脚内容江洋幼儿园健康教育工作计划8.图形用户界面的设计以及事件处理 界面1:员工登录界面
参考代码如下:
public class Login extends JFrame {
private static final long serialVersionUID = 1L; protected JPanel jp;
private JButton btnLogin; private JButton btnCancel; private JLabel lblLogin; private JLabel lblPassword; private JTextField txtLogin;
private JPasswordField txtPassword; EmployeeDao ed=new EmployeeDao(); public Login(){
setTitle(\登录系统\
jp = new JPanel(null);//容器设置为空布局 lblLogin = new JLabel(\编号:\登陆标签 txtLogin = new JTextField();//登陆文本框 lblPassword = new JLabel(\密码:\密码标签 txtPassword = new JPasswordField();//密码输入框 btnLogin = new JButton(\登录\登陆按钮 btnCancel = new JButton(\退出\退出按钮 this.add(jp);
jp .add(lblLogin); jp .add(txtLogin); jp .add(lblPassword); jp .add(txtPassword); jp.add(btnLogin); jp.add(btnCancel);
//坐标布局,参数为左上点坐标,宽,高
7
页脚内容江洋幼儿园健康教育工作计划 lblLogin.setBounds(53, 30, 35, 15); txtLogin.setBounds(100, 26, 140, 20); lblPassword.setBounds(53, 70, 35 , 15); txtPassword.setBounds(100, 66, 136, 21); btnLogin.setBounds(70, 120, 60, 23); btnCancel.setBounds(180, 120, 60, 23); this.setSize(350, 300);//设置Frame大小
this.setLocationRelativeTo(null);//Frame居中 this.setResizable(false);//禁止改变框架大小
this.getRootPane().setDefaultButton(btnLogin);//主框架中默认按钮 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //登陆按钮注册事件
btnLogin.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { String empNo = txtLogin.getText();
char[] passwordChars = txtPassword.getPassword(); String password = new String(passwordChars); Employee emp = null; try {
emp = ed.loginByEmpNoAndPassword(empNo, password); } catch (Exception e1) { e1.printStackTrace(); }
if(emp == null){
//提示,用户名或者密码错误,用户名获取焦点
JOptionPane.showMessageDialog(Login.this.btnLogin, \用户名或者密码错误,请重新输入\
//用户名输入框得到焦点
Login.this.txtLogin.requestFocus(); return;
//如果登陆帐号是Staff角色
}else if(emp.getEmpLevel() == 1){
StaffMain sm = new StaffMain(emp); sm.setVisible(true); //如果登陆帐号是Manager角色
}else if(emp.getEmpLevel() == 2){
ManagerMain mm = new ManagerMain(emp); mm.setVisible(true); //如果登陆帐号是Admin角色
}else if(emp.getEmpLevel()== 3){
AdminMain am = new AdminMain(emp); am.setVisible(true); }
Login.this.setVisible(false);
7
页脚内容江洋幼儿园健康教育工作计划 } });
//退出按钮注册事件
btnCancel.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub int response = JOptionPane.showConfirmDialog(Login.this.btnCancel, \确定退出本系统吗?\退出\
if(response == JOptionPane.YES_OPTION){ System.exit(0); } } }); } }
界面2:普通员工界面
界面3:部门经理界面
界面4:管理员界面
页脚内容7
江洋幼儿园健康教育工作计划
当选择各个菜单项时还会有各自的界面。 例如:查看个人信息的界面。如下图
再如:查看所有员工信息的界面。如下图所示。
在此不再一一列举。 9. 项目的优化方案。
页脚内容7
实验2:人力资源管理系统的设计与实现



