标签:工作 spring message each 地址 update 时代 流程 单机
大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT)、PYTHON、PHP、C#、安卓等多项技术。
今天将为大家分析一个人事管理系统(人事管理的信息量和信息类型越来越多,工作流程越来越清晰,社会分工越来越细,原来传统上的人工处理方式和单机管理系统越来越来不能适应人事管理的需要,不能满足新形势下企业人事管理的需要。因此,必须有一套应用于网络时代的适应于新需求上的人事管理系统。传统的C/S模式虽然能有效的管理企业人事信息,但是随着社会的网络化,要求B/S模式的新系统的呼声越来越高。B/S模式能在很大程度上方便客户和员工的需求,无论在任何地方,只要能接入Internet,就可以获取企业相关的人事信息。),该项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。人事管理系统为一个 后台项目。
为了完成该系统,我们首先需要对该系统进行需求分析。一个人事管理系统应包含用户角色有管理员、员工。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。
为了完成系统的功能需要为员工设置工资表,记录工资信息。在工资表中定义了两者的关联关系,其中工资的员工与员工的mingzi字段对应、工资的员工id与员工的id字段对应
。为了完成系统的功能需要为部门设置员工表,记录员工信息。在员工表中定义了两者的关联关系,其中员工的部门与部门的mingzi字段对应、员工的部门id与部门的id字段对应
。
总结得出该系统所有数据为:管理员(admin)、工资(gongzi)、员工(yuangong)、部门(bumen)
管理员表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 管理员id username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码
工资表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 工资id yuangong | VARCHAR(255) | | 员工 yuangongid | VARCHAR(255) | | 员工id yuefen | VARCHAR(255) | | 月份 jichugongzi | VARCHAR(255) | | 基础工资 ticheng | VARCHAR(255) | | 提成
员工表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 员工id mingzi | VARCHAR(255) | | 名字 username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码 bumen | VARCHAR(255) | | 部门 bumenid | VARCHAR(255) | | 部门id
部门表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 部门id mingzi | VARCHAR(255) | | 名字
sql建表语句
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ---------------------------- -- Table structure for ggrenshiguanli -- ---------------------------- DROP TABLE IF EXISTS `t_admin`; CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘管理员id‘,`username` VARCHAR(255) DEFAULT NULL COMMENT ‘账号‘,`password` VARCHAR(255) DEFAULT NULL COMMENT ‘密码‘,PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘管理员‘; -- ---------------------------- DROP TABLE IF EXISTS `t_gongzi`; CREATE TABLE `t_gongzi` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘工资id‘,`yuangong` VARCHAR(255) DEFAULT NULL COMMENT ‘员工‘,`yuangongid` INT(11) DEFAULT NULL COMMENT ‘员工id‘,`yuefen` VARCHAR(255) DEFAULT NULL COMMENT ‘月份‘,`jichugongzi` VARCHAR(255) DEFAULT NULL COMMENT ‘基础工资‘,`ticheng` VARCHAR(255) DEFAULT NULL COMMENT ‘提成‘,PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘工资‘; -- ---------------------------- DROP TABLE IF EXISTS `t_yuangong`; CREATE TABLE `t_yuangong` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘员工id‘,`mingzi` VARCHAR(255) DEFAULT NULL COMMENT ‘名字‘,`username` VARCHAR(255) DEFAULT NULL COMMENT ‘账号‘,`password` VARCHAR(255) DEFAULT NULL COMMENT ‘密码‘,`bumen` VARCHAR(255) DEFAULT NULL COMMENT ‘部门‘,`bumenid` INT(11) DEFAULT NULL COMMENT ‘部门id‘,PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=‘员工‘;
添加部门模块:
通过添加部门模块,可以完成部门的添加操作。在页面中跳转到添加部门页面,输入部门的所有信息,点击添加操作,可以将部门数据以post提交到bumenController中。部门所包含的字段信息包括名字。在bumenController中通过定义bumen接受所有的部门参数。使用bumendao的insert方法将bumen实体插入到数据库中。完成数据的添加操作,在bumenMapper中匹配对应的bumenxml完成插入sql语句的执行操作。该部分核心代码如下:
通过bumendao的insert方法将页面传输的部门添加到数据库中 bumendao.insert(bumen);
将添加部门成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加部门成功");
返回部门管理界面
return "forward:/tianjiabumen.action";
查询部门模块:
在后台bumenguanli方法中,通过selectByexample方法获取所有的数据信息。将其保存到request中,在页面中通过foreach方法
进行循环展示到table中。完成部门查询操作。具体代码如下:
生成部门样例类,通过example定义查询条件 BumenExample example = new BumenExample();
通过bumendao的selectByExample方法查询出所有的部门信息 List bumenall = bumendao.selectByExample(example);
将部门信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("bumenall", bumenall);
返回部门管理界面
return "forward:/bumenguanli.action";
修改部门模块:
点击修改按钮,可以跳转到部门修改页面。在部门修改页面中,将初始化该部门的所有信息,并将信息一一对应填充到对应编辑栏中。编辑完部门信息后,页面通过post方法将数据封装为一个部门实体,传入到bumenController中。在xiugaibumen中进行接收,接收完毕后,调用bumenMapper中的updateByPrimaryKeySelective方法进行修改。该部分代码如下:
通过bumendao的修改方法根据id修改对应的部门 bumendao.updateByPrimaryKeySelective(bumen);
将修改部门成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改部门信息成功");
返回部门管理界面
return "forward:/bumenguanli.action";
删除部门模块:
删除部门功能的实现方式为,通过点击删除部门按钮,向服务器发起get请求。请求中包含部门的id信息,在bumenController中使用int接受该id,并将该id传入bumendao的deleteByPrimaryKey方法中。该方法的作用为根据id删除对应部门。最后将删除部门成功的信息返回页面,该部分核心代码如下:
通过bumendao的删除方法根据id删除对应的部门 bumendao.deleteByPrimaryKey(id);
将删除部门成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除部门成功");
返回部门管理界面
return "forward:/bumenguanli.action";
package org.mypro.front; import java.io.File; import java.io.IOException; import java.math.BigDecimal; 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.GongziMapper; import org.mypro.entity.Gongzi; import org.mypro.entity.GongziExample; import org.mypro.entity.Yuangong; import org.mypro.entity.YuangongExample; import org.mypro.dao.YuangongMapper; 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 GongziController { private static final Log logger = LogFactory.getLog(GongziController.class); @Autowired private GongziMapper gongzidao; // 定义yuangongdao参数 @Autowired private YuangongMapper yuangongdao; //定义方法tianjiagongzi,响应页面tianjiagongzi请求 @RequestMapping(value = "tianjiagongzi") public String tianjiagongzi(HttpServletRequest request, HttpServletResponse response,HttpSession session,String backurl) { logger.debug("GongziController.tianjiagongzi ......"); // 定义 example1为 YuangongExample的实例 YuangongExample example1 = new YuangongExample(); List yuangongall = yuangongdao.selectByExample(example1); request.setAttribute("yuangongall", yuangongall); if(backurl != null && backurl.indexOf("tianjiagongzi.action") == -1){ return "forward:/" + backurl; } return "tianjiagongzi"; } @RequestMapping(value = "tianjiagongziact") public String tianjiagongziact(HttpServletRequest request,HttpSession session, HttpServletResponse response,Gongzi gongzi,String backurl) throws IOException { logger.debug("GongziController.tianjiagongziact ......"); gongzidao.insert(gongzi); request.setAttribute("message", "添加工资成功"); if(backurl != null && backurl.indexOf("tianjiagongziact.action") == -1){ return "forward:/" + backurl; } //返回tianjiagongzi方法 return "forward:/tianjiagongzi.action"; } //定义gongziguanli方法响应页面请求 @RequestMapping(value = "gongziguanli") public String gongziguanli(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) { logger.debug("GongziController.gongziguanli ......"); GongziExample example = new GongziExample(); List gongziall = gongzidao.selectByExample(example); request.setAttribute("gongziall", gongziall); if(backurl != null && backurl.indexOf("gongziguanli.action") == -1){ return "forward:/" + backurl; } return "gongziguanli"; } // 定义 gongzichakan方法 @RequestMapping(value = "gongzichakan") public String gongzichakan(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) { logger.debug("GongziController.gongzichakan ......"); GongziExample example = new GongziExample(); List gongziall = gongzidao.selectByExample(example); request.setAttribute("gongziall", gongziall); if(backurl != null && backurl.indexOf("gongzichakan.action") == -1){ return "forward:/" + backurl; } return "gongzichakan"; } // 定义 xiugaigongzi方法 @RequestMapping(value = "xiugaigongzi") public String xiugaigongzi(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){ logger.debug("GongziController.xiugaigongzi ......"); Gongzi gongzi = gongzidao.selectByPrimaryKey(id); // 定义 example1为 YuangongExample的实例 YuangongExample example1 = new YuangongExample(); List yuangongall = yuangongdao.selectByExample(example1); request.setAttribute("yuangongall", yuangongall); request.setAttribute("gongzi", gongzi); if(backurl != null && backurl.indexOf("xiugaigongzi.action") == -1){ return "forward:/" + backurl; } return "xiugaigongzi"; } // 定义xiugaigongziact处理工资修改 @RequestMapping(value = "xiugaigongziact") public String xiugaigongziact(HttpServletRequest request, HttpServletResponse response,Gongzi gongzi,HttpSession session,String backurl) throws IOException { logger.debug("GongziController.xiugaigongziact ......"); gongzidao.updateByPrimaryKeySelective(gongzi); request.setAttribute("message", "修改工资信息成功"); if(backurl != null && backurl.indexOf("xiugaigongziact.action") == -1){ return "forward:/" + backurl; } return "forward:/gongziguanli.action"; } // 定义shanchugongzi,处理删除工资 @RequestMapping(value = "shanchugongzi") public String shanchugongzi(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){ logger.debug("GongziController.shanchugongzi ......"); gongzidao.deleteByPrimaryKey(id); request.setAttribute("message", "删除工资成功"); if(backurl != null && backurl.indexOf("shanchugongzi.action") == -1){ return "forward:/" + backurl; } return "forward:/gongziguanli.action"; } // 定义sousuogongzi方法,处理搜索操作 @RequestMapping(value = "sousuogongzi") public String sousuogongzi(HttpServletRequest request, HttpServletResponse response,HttpSession session,String search,String backurl) { logger.debug("GongziController.sousuogongzi ......"); GongziExample example = new GongziExample(); GongziExample.Criteria criteria = example.createCriteria(); if(search != null){ criteria.andYuangongLike("%" + search + "%"); } List gongziall = gongzidao.selectByExample(example); request.setAttribute("gongziall", gongziall); if(backurl != null && backurl.indexOf("sousuogongzi.action") == -1){ return "forward:/" + backurl; } return "sousuogongzi"; } // 定义GongzipinglunMapper @RequestMapping(value = "gongzixiangqing") public String gongzixiangqing(HttpServletRequest request,HttpSession session, HttpServletResponse response,int id,String backurl) { logger.debug("GongziController.gongzixiangqing ......"); Gongzi gongzi = gongzidao.selectByPrimaryKey(id); request.setAttribute("gongzi", gongzi); if(backurl != null && backurl.indexOf("gongzixiangqing.action") == -1){ return "forward:/" + backurl; } return "gongzixiangqing"; } // 上传文件图片等 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); // 完整的url String fileUrl = date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH)+1) + "/" + newFileName; return fileUrl; }}
标签:工作 spring message each 地址 update 时代 流程 单机
原文地址:https://www.cnblogs.com/erhabiancheng/p/11560133.html