今日思考,完成一个工资管理系统项目,需要实现哪些功能?

此类项目常见描述如下:

随着经济的发展,企业正向着大型化、规模化发展,而对于大中型企业,员工、职称等跟工资管理有关的信息随之急剧增加。在这种情况下单靠人工来处理员工的工资不但显得力不从心,而且极容易出错。如何设计一个小型企业工资的数据库管理系统,由计算机代替人工执行一系列诸如增加新员工,删除旧员工,工资查询,统计等操作。这样就使办公人员可以轻松快捷地完成工资管理的任务。

SSM(MYECLIPSE)框架及其适合本类项目,使用MVC的思想可以极大程度减少重复工作量。和SSM(MYECLIPSE)框架最配的开发工具是MYECLIPSE。MYECLIPSE集成了大量插件,可以更好的使用SSM(MYECLIPSE)进行项目的开发,使得项目开发时事半功倍。

通过对工资管理系统系统的仔细分析,可以得出工资管理系统系统是一个 后台项目。

在这样一个项目中,系统的登录角色是必不可少的,对每个登录角色设置账号、密码。以确保系统可以正常登录使用。SSM(MYECLIPSE)项目中包含的登录角色有管理员、用户。

总结得出该系统所有数据为:管理员(admin)、用户(yonghu)、员工增加(yuangongzengjia)、工资清单(gongziqingdan)

管理员表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |管理员id

username| VARCHAR(255) | |账号

password| VARCHAR(255) | | 密码

用户表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |用户id

xingming| VARCHAR(255) | |姓名

zhiwu| VARCHAR(255) | |职务

nianling| VARCHAR(255) | |年龄

xingbie| VARCHAR(255) | |性别

quanxian| VARCHAR(255) | |权限

username| VARCHAR(255) | |账号

password| VARCHAR(255) | | 密码

员工增加表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |员工增加id

xingming| VARCHAR(255) | |姓名

nianling| VARCHAR(255) | |年龄

xingbie| VARCHAR(255) | |性别

xueli| VARCHAR(255) | | 学历

工资清单表

字段名 | 类型 | 属性 |描述

id| INT(11) | PRIMARY KEY |工资清单id

jibengongzi| VARCHAR(255) | |基本工资

yejiticheng| VARCHAR(255) | |业绩提成

jiangligongzi| VARCHAR(255) | | 奖励工资

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.GongziqingdanMapper;

import org.mypro.entity.Gongziqingdan;

import org.mypro.entity.GongziqingdanExample;

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 = "/")publicclass GongziqingdanController {

private static finalLog logger =LogFactory.getLog(GongziqingdanController.class);@Autowiredprivate GongziqingdanMapper gongziqingdandao;//定义方法tianjiagongziqingdan,响应页面tianjiagongziqingdan请求@RequestMapping(VALUE ="tianjiagongziqingdan")publicString tianjiagongziqingdan(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,String backurl) {

logger.debug("GongziqingdanController.tianjiagongziqingdan ......");IF(backurl != NULL && backurl.indexOf("tianjiagongziqingdan.action") == -1){RETURN "forward:/" +backurl; }RETURN"tianjiagongziqingdan";

}@RequestMapping(VALUE ="tianjiagongziqingdanact")publicString tianjiagongziqingdanact(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,Gongziqingdan gongziqingdan,String backurl) throws IOException {

logger.debug("GongziqingdanController.tianjiagongziqingdanact ......");

gongziqingdandao.insert(gongziqingdan);

request.setAttribute("message", "添加工资清单成功");IF(backurl != NULL && backurl.indexOf("tianjiagongziqingdanact.action") == -1){RETURN "forward:/" +backurl; }//返回tianjiagongziqingdan方法RETURN "forward:/tianjiagongziqingdan.action";

}//定义gongziqingdanguanli方法响应页面请求@RequestMapping(VALUE ="gongziqingdanguanli")publicString gongziqingdanguanli(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,String backurl) {

logger.debug("GongziqingdanController.gongziqingdanguanli ......");

GongziqingdanExample example=NEW GongziqingdanExample();

List gongziqingdanall=gongziqingdandao.selectByExample(example);

request.setAttribute("gongziqingdanall", gongziqingdanall);IF(backurl != NULL && backurl.indexOf("gongziqingdanguanli.action") == -1){RETURN "forward:/" +backurl; }RETURN"gongziqingdanguanli";

}//定义 gongziqingdanchakan方法@RequestMapping(VALUE ="gongziqingdanchakan")publicString gongziqingdanchakan(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,String backurl) {

logger.debug("GongziqingdanController.gongziqingdanchakan ......");

GongziqingdanExample example=NEW GongziqingdanExample();

List gongziqingdanall=gongziqingdandao.selectByExample(example);

request.setAttribute("gongziqingdanall", gongziqingdanall);IF(backurl != NULL && backurl.indexOf("gongziqingdanchakan.action") == -1){RETURN "forward:/" +backurl; }RETURN"gongziqingdanchakan";

}//定义 xiugaigongziqingdan方法@RequestMapping(VALUE ="xiugaigongziqingdan")public String xiugaigongziqingdan(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,INTid,String backurl){

logger.debug("GongziqingdanController.xiugaigongziqingdan ......");

Gongziqingdan gongziqingdan=gongziqingdandao.selectByPrimaryKey(id);

request.setAttribute("gongziqingdan", gongziqingdan);IF(backurl != NULL && backurl.indexOf("xiugaigongziqingdan.action") == -1){RETURN "forward:/" +backurl; }RETURN"xiugaigongziqingdan";

}//定义xiugaigongziqingdanact处理工资清单修改@RequestMapping(VALUE ="xiugaigongziqingdanact")publicString xiugaigongziqingdanact(HttpServletRequest request, HttpServletResponse response,Gongziqingdan gongziqingdan,HttpSession SESSION,String backurl) throws IOException {

logger.debug("GongziqingdanController.xiugaigongziqingdanact ......");

gongziqingdandao.updateByPrimaryKeySelective(gongziqingdan);

request.setAttribute("message", "修改工资清单信息成功");IF(backurl != NULL && backurl.indexOf("xiugaigongziqingdanact.action") == -1){RETURN "forward:/" +backurl; }RETURN "forward:/gongziqingdanguanli.action";

}//定义shanchugongziqingdan,处理删除工资清单@RequestMapping(VALUE ="shanchugongziqingdan")public String shanchugongziqingdan(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,INTid,String backurl){

logger.debug("GongziqingdanController.shanchugongziqingdan ......");

gongziqingdandao.deleteByPrimaryKey(id);

request.setAttribute("message", "删除工资清单成功");IF(backurl != NULL && backurl.indexOf("shanchugongziqingdan.action") == -1){RETURN "forward:/" +backurl; }RETURN "forward:/gongziqingdanguanli.action";

}//定义sousuogongziqingdan方法,处理搜索操作@RequestMapping(VALUE ="sousuogongziqingdan")publicString sousuogongziqingdan(HttpServletRequest request, HttpServletResponse response,HttpSession SESSION,String SEARCH,String backurl) {

logger.debug("GongziqingdanController.sousuogongziqingdan ......");

GongziqingdanExample example=NEW GongziqingdanExample();

GongziqingdanExample.Criteria criteria=example.createCriteria();IF(SEARCH != NULL){

criteria.andJibengongziLike("%" + SEARCH + "%");

}

List gongziqingdanall=gongziqingdandao.selectByExample(example);

request.setAttribute("gongziqingdanall", gongziqingdanall);IF(backurl != NULL && backurl.indexOf("sousuogongziqingdan.action") == -1){RETURN "forward:/" +backurl; }RETURN"sousuogongziqingdan";

}//定义GongziqingdanpinglunMapper@RequestMapping(VALUE ="gongziqingdanxiangqing")public String gongziqingdanxiangqing(HttpServletRequest request,HttpSession SESSION, HttpServletResponse response,INTid,String backurl) {

logger.debug("GongziqingdanController.gongziqingdanxiangqing ......");

Gongziqingdan gongziqingdan=gongziqingdandao.selectByPrimaryKey(id);request

.setAttribute("gongziqingdan", gongziqingdan);IF(backurl != NULL && backurl.indexOf("gongziqingdanxiangqing.action") == -1){RETURN "forward:/" +backurl; }RETURN"gongziqingdanxiangqing";

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

(MultipartFilefile, 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();FiledateDirs= 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;RETURNfileUrl;

}}

添加工资清单模块:

在gongziqingdanController中定义tianjiagongziqingdanact接收页面传入的工资清单参数,定义为gongziqingdan。其中gongziqingdan包含字段:基本工资,业绩提成,奖励工资,使用tianjiagongziqingdanact将该工资清单对象存入数据库中,在gongziqingdanMapper中定义了insert方法,匹配数据库中的insert into gongziqingdan语句实现将工资清单数据存入数据库的操作。该部分核心代码如下:

通过gongziqingdandao的insert方法将页面传输的工资清单添加到数据库中 gongziqingdandao.insert(gongziqingdan);

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

返回工资清单管理界面

return "forward:/tianjiagongziqingdan.action";

查询工资清单模块:

在后台gongziqingdanguanli方法中,通过selectByexample方法获取所有的数据信息。将其保存到request中,在页面中通过foreach方法

进行循环展示到table中。完成工资清单查询操作。具体代码如下:

生成工资清单样例类,通过example定义查询条件 GongziqingdanExample example = new GongziqingdanExample();

通过gongziqingdandao的selectByExample方法查询出所有的工资清单信息 List gongziqingdanall = gongziqingdandao.selectByExample(example);

将工资清单信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("gongziqingdanall", gongziqingdanall);

返回工资清单管理界面

return "forward:/gongziqingdanguanli.action";

修改工资清单模块:

点击修改按钮,可以跳转到工资清单修改页面。在工资清单修改页面中,将初始化该工资清单的所有信息,并将信息一一对应填充到对应编辑栏中。编辑完工资清单信息后,页面通过post方法将数据封装为一个工资清单实体,传入到gongziqingdanController中。在xiugaigongziqingdan中进行接收,接收完毕后,调用gongziqingdanMapper中的updateByPrimaryKeySelective方法进行修改。该部分代码如下:

通过gongziqingdandao的修改方法根据id修改对应的工资清单 gongziqingdandao.updateByPrimaryKeySelective(gongziqingdan);

将修改工资清单成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改工资清单信息成功");

返回工资清单管理界面

return "forward:/gongziqingdanguanli.action";

删除工资清单模块:

在页面中通过a标签,shanchugongziqingdan?id=将id传入到后台中,通过shanchugongziqingdan接收工资清单id。使用deleteByid的方法

删除该工资清单,完成删除操作。定义删除成功提示信息,删除工资清单成功,并保存到request中,该部分代码如下:

通过gongziqingdandao的删除方法根据id删除对应的工资清单 gongziqingdandao.deleteByPrimaryKey(id);

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

返回工资清单管理界面

return "forward:/gongziqingdanguanli.action";

java企业工资管理系统_基于B/S模式下的JAVA工资管理系统相关推荐

  1. java 网站统计工具_基于B/S模式下的JAVA网站流量统计系统

    今日思考,完成一个网站流量统计系统项目,需要实现哪些功能? 此类项目常见描述如下: 传统的网站只是在页面上使用计数器进行简单的访问者数量的统计.随着网站运营规模的扩大,依靠这种简单的数量统计并不能真正 ...

  2. Java锁定座位功能_自习室管理系统,基于B/S模式下的JAVA系统

    每天记录学习,每天会有好心情.*^_^* 今天记录的项目是自习室管理系统,这个项目是这么回事:习室管理系统的设计.开发和测试工作,该系统基于B/S结构,利用现有校园一卡通系统,通过JAVA和mysql ...

  3. 上机管理系统java_机房上机安排管理系统,基于B/S模式下的JAVA系统

    每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个机房上机安排管理系统(设计一个运行在学校局域网环境之下的机房管理系统并予以实现.该系统采用了目前流行的客户机/服务器模式,结合了先进的Wi ...

  4. java集合体检套餐管理系统_基于ssm vue的综合项目 健康体检管理系统-第六章

    移动端开发对体检预约进行的查询 当页面加载完毕时,利用vue的钩子函数 已加载页面就直接查询数据将数据进行渲染 created() { axios.post("/setmeal/getSet ...

  5. jsp mysql简单仓库信息管理系统_基于jsp+mysql的JSP简单学生信息管理系统

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x, ...

  6. c# 基于layui的通用后台管理系统_基于spring boot和vuejs的通用后台管理系统脚手架 guns-lite...

    Guns-lite 前言 guns-lite是在guns的基础上将数据库层由mybatis替换为spring data jpa的系统. guns-lite是一个基于spring boot的后台管理系统 ...

  7. freebsd java 能用吗_在FreeBSD 4.9下安装JAVA环境

    导读: 资源下载地址: 1.http://www.sun.com/softwarre/java2/download.html 2.http://ftp.csie.chu.edu.tw/FreeBSD/ ...

  8. 智能小区java_基于B/S模式下的JAVA智能小区规划系统

    最近了解了智能小区规划项目,在这个平台记录一下这个智能小区规划项目,方便以后再次使用或学习的时候能够及时的翻阅.在完成这个项目的时候,考虑了很多框架.最终决定选用SSM(MYECLIPSE),该框架具 ...

  9. java商城管理系统_基于SSM框架的JAVA商场管理系统

    每天记录学习,每天会有好心情.*^_^* 今天记录的项目是商场管理系统,这个项目是这么回事:随着人们对手机的需求日益增多,手机卖场的规模也随之扩大.众多手机卖场为了能够高效的运作,获得更大的收益,逐步 ...

最新文章

  1. Android SpannableString 给TextView 设置颜色,删除线等
  2. C语言快速幂取模算法小结
  3. techempower拿分系列之aspcore分析
  4. Excel的VBA连接数据库方法
  5. java roundingmode.UP,即使明确设置,DecimalFormat也使用不正确的RoundingMode
  6. 深入理解 Java 线程池!
  7. Python 基础——tuple与list、append与extend
  8. 大华摄像机调试以及保存视频
  9. 微信公众号群发模板消息占用每月4次群发次数吗
  10. 百变鹏仔缤纷彩色文字广告位代码美化版
  11. 非常简单的四子棋【java编写】
  12. golang时间类型字符串转时间类型
  13. 计算机主机显卡安装,安装后如何在计算机中启用独立显卡
  14. 计算机控制课设直流电机控制,计算机控制系统课程设计 直流电机测速调速系统 (精选可编辑)...
  15. 网页无法显示GIF动画图片解决办法
  16. OS Review3 并发进程
  17. STM32摄像头实验
  18. HTTP 升级到 HTTPS 基础知识详解
  19. 【面试大全-缓存】-Redis有哪些适合的场景
  20. 云+X案例展 | 民生类:易趋云全面提升三德科技管理效能

热门文章

  1. 13000亿!目瞪口呆!
  2. android日记本功能界面图片,基于android的日记本的设计和开发.ppt
  3. gradle groovy_Eclipse Mars:具有Gradle,Groovy和GSP支持的Grails 3.1
  4. RouterOS 配置VLAN教程(超详细)
  5. 一个基本成功的TM模式FDFD代码
  6. CVPR2021超分辨率汇总(附论文链接/代码/解析)[持续更新]
  7. Niagara内容示例 2.2 Dynamic Beam
  8. /usr/lib/hpux32/dld.so: Unable to find library ‘libintl.so‘
  9. 参加2020年全国大学生机器人大赛ROBOCON的一点心得
  10. 2021年安全员-C证(陕西省)考试报名及安全员-C证(陕西省)复审考试