基于Web的人力资源管理系统。该系统包括9个模块:人事信息管理,考勤管理,职业规划及接任计划,培训管理,休假管理,考核评估管理,薪资福利计算和管理,网上招聘管理,图表功能。该项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。人力资源管理系统为一个 后台项目。
为了完成该系统,我们首先需要对该系统进行需求分析。一个人力资源管理系统应包含用户角色有管理员、用户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。

总结得出该系统所有数据为:管理员(admin)、用户(yonghu)、人事信息(renshixinxi)、考勤(kaoqin)、培训(peixun)

管理员表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 管理员id
username | VARCHAR(255) | | 账号
password | VARCHAR(255) | | 密码

用户表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 用户id
username | VARCHAR(255) | | 账号
password | VARCHAR(255) | | 密码
xingming | VARCHAR(255) | | 姓名
nianling | VARCHAR(255) | | 年龄
xingbie | VARCHAR(255) | | 性别

人事信息表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 人事信息id
xingming | VARCHAR(255) | | 姓名
nianling | VARCHAR(255) | | 年龄
xingbie | VARCHAR(255) | | 性别
zhiwei | VARCHAR(255) | | 职位
gongzi | VARCHAR(255) | | 工资
xuexijingli | VARCHAR(255) | | 学习经历

考勤表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 考勤id
chidaorenshu | VARCHAR(255) | | 迟到人数
shijiarenshu | VARCHAR(255) | | 事假人数
bingjiarenshu | VARCHAR(255) | | 病假人数
quanqinrenshu | VARCHAR(255) | | 全勤人数
chuchairenshu | VARCHAR(255) | | 出差人数

培训表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 培训id
shenqing | VARCHAR(255) | | 申请
weicanjia | VARCHAR(255) | | 未参加
zhiwei | VARCHAR(255) | | 职位
package org.mypro.front;

import java.io.File;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Collections;

import java.util.Date;

import java.util.List;

import javax.jms.Session;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.mypro.dao.AdminMapper;

import org.mypro.entity.Admin;

import org.mypro.entity.AdminExample;
import org.mypro.dao.YonghuMapper;

import org.mypro.entity.Yonghu;

import org.mypro.entity.YonghuExample;import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.multipart.MultipartFile;

@Controller

@RequestMapping(VALUE = "/")

public class loginAndRegistController {

private static final Log logger = LogFactory.getLog(loginAndRegistController.class);

@Autowired
private AdminMapper admindao;

@Autowired
private YonghuMapper yonghudao;

//定义login方法,跳转到login页面

@RequestMapping(VALUE = "login")

public String login(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION) {

logger.debug("loginAndRegistController.login ......");

RETURN "login";

}

//定义regist方法,跳转到regist页面

@RequestMapping(VALUE = "regist")

public String regist(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION) {

logger.debug("loginAndRegistController.regist ......");

RETURN "regist";

}

//定义loginact,处理登录

@RequestMapping(VALUE = "loginact")

public String loginact(HttpServletRequest request, HttpServletResponse response,Admin admin,String shenfen,HttpSession SESSION) {

logger.debug("loginAndRegistController.loginact ......"); // 判断管理员是否与 shenfen一致

IF("管理员".equals(shenfen)){

AdminExample example = NEW AdminExample();

AdminExample.Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo(admin.getUsername());

criteria.andPasswordEqualTo(admin.getPassword());

List<Admin> admins = admindao.selectByExample(example);

IF(admins.isEmpty()){

request.setAttribute("message", "账号或密码错误");

RETURN "login";

}ELSE{

SESSION.setAttribute("mingzi", admins.get(0).getUsername());

// 登录成功,将登录用户id保存到SESSION中

SESSION.setAttribute("id", admins.get(0).getId());

SESSION.setAttribute("userinfo", admins.get(0));

SESSION.setAttribute("shenfen", shenfen);

RETURN "adminindex";

}

} // 判断用户是否与 shenfen一致

IF("用户".equals(shenfen)){

YonghuExample example = NEW YonghuExample();

YonghuExample.Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo(admin.getUsername());

criteria.andPasswordEqualTo(admin.getPassword());

List<Yonghu> admins = yonghudao.selectByExample(example);

IF(admins.isEmpty()){

request.setAttribute("message", "账号或密码错误");

RETURN "login";

}ELSE{

SESSION.setAttribute("mingzi", admins.get(0).getUsername());

// 登录成功,将登录用户id保存到SESSION中

SESSION.setAttribute("id", admins.get(0).getId());

SESSION.setAttribute("userinfo", admins.get(0));

SESSION.setAttribute("shenfen", shenfen);

RETURN "yonghuindex";

}

} //将请选择登录身份保存到request的message中

request.setAttribute("message", "请选择登录身份");

RETURN "login";

}

//定义registact,处理注册

@RequestMapping(VALUE = "registact")

public String registact(HttpServletRequest request, HttpServletResponse response,Admin admin,String shenfen,HttpSession SESSION,String repassword) {

logger.debug("loginAndRegistController.registact ......");

IF( !repassword.equals(admin.getPassword())){

request.setAttribute("message", "两次密码不一致");
RETURN "regist"; } // 判断管理员和shenfen是否一致

IF("管理员".equals(shenfen)){

AdminExample example = NEW AdminExample();

AdminExample.Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo(admin.getUsername());

List admins = admindao.selectByExample(example);

IF(!admins.isEmpty()){

request.setAttribute("message", "该账号已存在");

RETURN "regist";

}ELSE{

admindao.insert(admin);

request.setAttribute("message", "注册成功,请登录");

RETURN "login";

}

} // 判断用户和shenfen是否一致

IF("用户".equals(shenfen)){

YonghuExample example = NEW YonghuExample();

YonghuExample.Criteria criteria = example.createCriteria();

criteria.andUsernameEqualTo(admin.getUsername());

List admins = yonghudao.selectByExample(example);

// 实例化Yonghu

Yonghu yonghu = NEW Yonghu();

yonghu.setUsername(admin.getUsername());

yonghu.setPassword(admin.getPassword());

IF(!admins.isEmpty()){

request.setAttribute("message", "该账号已存在");

RETURN "regist";

}ELSE{yonghudao

.insert(yonghu);request

.setAttribute("message", "注册成功,请登录");

RETURN "login";

}

}request

.setAttribute("message", "请选择登录身份");

RETURN "login";

}

//定义tuichuxitong方法,清除系统中的SESSION数据@RequestMapping

(VALUE = "tuichuxitong")public String tuichuxitong

(HttpServletRequest request, HttpServletResponse response,Admin admin,HttpSession SESSION) {logger

.debug("loginAndRegistController.tuichuxitong ......");

SESSION.invalidate();

RETURN "login";

}

// 定义adminindex方法@RequestMapping

(VALUE = "adminindex")public String adminindex

(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response) {logger

.debug("loginAndRegistController.adminindex ......");

RETURN "adminindex";

} // 定义yonghuindex方法@RequestMapping

(VALUE = "yonghuindex")public String yonghuindex

(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response) {logger

.debug("loginAndRegistController.yonghuindex ......");

RETURN "yonghuindex";

} //定义adminxiugaigerenxinxiact方法@RequestMapping

(VALUE = "adminxiugaigerenxinxiact")public String adminxiugaigerenxinxiact

(HttpServletRequest request, HttpServletResponse response,Admin admin,HttpSession SESSION ) throws IOException {logger

.debug("loginAndRegistController.adminxiugaigerenxinxiact ......");admindao

.updateByPrimaryKey(admin);

SESSION.setAttribute("mingzi", admin.getUsername());

SESSION.setAttribute("id", admin.getId());

SESSION.setAttribute("userinfo", admin);request

.setAttribute("message", "修改个人信息成功");

RETURN "adminindex";

} //定义yonghuxiugaigerenxinxiact方法@RequestMapping

(VALUE = "yonghuxiugaigerenxinxiact")public String yonghuxiugaigerenxinxiact

(HttpServletRequest request, HttpServletResponse response,Yonghu yonghu,HttpSession SESSION ) throws IOException {logger

.debug("loginAndRegistController.yonghuxiugaigerenxinxiact ......");yonghudao

.updateByPrimaryKey(yonghu);

SESSION.setAttribute("mingzi", yonghu.getUsername());

SESSION.setAttribute("id", yonghu.getId());

SESSION.setAttribute("userinfo", yonghu);request

.setAttribute("message", "修改个人信息成功");

RETURN "yonghuindex";

}

// 上传文件图片等public String uploadUtile

(MultipartFile file, HttpServletRequest request) throws IOException {SimpleDateFormat sdf

= NEW SimpleDateFormat("yyyyMMddHHmmssSS");String res

= sdf.format(NEW DATE());

// uploads文件夹位置String rootPath 

= request.getSession().getServletContext().getRealPath("resource/uploads/");

// 原始名称String originalFileName 

= file.getOriginalFilename();

// 新文件名String newFileName 

= "sliver" + res + originalFileName.substring(originalFileName.lastIndexOf("."));

// 创建年月文件夹Calendar 

DATE = Calendar.getInstance();File dateDirs

= NEW File(DATE.get(Calendar.YEAR) + File.separator + (DATE.get(Calendar.MONTH)+1));

// 新文件File newFile 

= NEW File(rootPath + File.separator + dateDirs + File.separator + newFileName);

// 判断目标文件所在目录是否存在

IF( !newFile.getParentFile().exists()) {

// 如果目标文件所在的目录不存在,则创建父目录newFile

.getParentFile().mkdirs();

}System

.out.println(newFile);

// 将内存中的数据写入磁盘file

.transferTo(newFile);

// 完整的urlString fileUrl 

= DATE.get(Calendar.YEAR) + "/" + (DATE.get(Calendar.MONTH)+1) + "/" + newFileName;

RETURN fileUrl;

}}

添加培训模块:

通过添加培训模块,可以完成培训的添加操作。在页面中跳转到添加培训页面,输入培训的所有信息,点击添加操作,可以将培训数据以post提交到peixunController中。培训所包含的字段信息包括申请,未参加,职位。在peixunController中通过定义peixun接受所有的培训参数。使用peixundao的insert方法将peixun实体插入到数据库中。完成数据的添加操作,在peixunMapper中匹配对应的peixunxml完成插入sql语句的执行操作。该部分核心代码如下:

通过peixundao的insert方法将页面传输的培训添加到数据库中 peixundao.insert(peixun);

将添加培训成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加培训成功");

返回培训管理界面

return "forward:/tianjiapeixun.action";

删除培训模块:

在管理页面中,点击删除。页面将通过a标签的href属性,使用get方法将该培训

的id上传到服务器中,在服务器中通过peixunController类中的shanchupeixun进行接收,之后调用peixunMapper中的deleteByPrimaryKey方法根据ID进行删除。将删除信息保存到request的message中,在页面给出用户删除成功的提示信息,该部分核心代码如下:

通过peixundao的删除方法根据id删除对应的培训 peixundao.deleteByPrimaryKey(id);

将删除培训成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除培训成功");

返回培训管理界面

return "forward:/peixunguanli.action";

01-25 11:13