Java项目:SSM企业工资管理系统

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

本项目包含管理员与普通员工两种角色,

管理员角色包含以下功能:

管理员登录,员工管理,部门管理,岗位管理,职称管理,工龄奖金管理,工资项管理,考勤管理,工资查询,统计图表等功能。

员工角色包含以下功能:

员工登录,个人信息管理,考勤管理,工资详情等功能。
PS:在折线图的工资展示分析模块,需要先结算某一个月的工资然后在折线图的地方查询才可以出来图哦

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 

5.数据库:MySql 5.7版本;

6.是否Maven项目:是;

技术栈

1. 后端:Spring+SpringMVC+Mybatis

2. 前端:HTML+CSS+JavaScript+LayUI+jquery+bootstrap

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;

3. 将项目中dbconfig.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ssm_esms 登录
注:tomcat中需配置路径为/ssm_esms,否则会有异常
管理员账号/密码:admin/admin

用户账号/密码:18080833/123456

运行截图

管理员端

 

 

 

 

 

员工页面

 

 

 

 

代码相关

工资管理控制器

@Controller
public class RankBonusController {
    @Autowired
    private IRankBonusService service;
    //@Qualifier("rankBonusService")

    public void setiRankBonusService(IRankBonusService iRankBonusService) {
        this.service = iRankBonusService;
    }


    //插入数据
    @RequestMapping("/insertRankBonus.do")
    @ResponseBody
    public String doInsertRankBonus(int bonus,String name){
        if(service.CountByName(name)>0){
            return "exist";
        }
        if(!name.equals("")&& bonus>=0){
            RankBonus rb= new RankBonus();
            rb.setRankName(name);
            rb.setRbBonus(bonus);
            service.addRankBonus(rb);

            return "ok";

        }
        else{
            return "no";
        }

    }
    //查询出所有记录
    @RequestMapping("/findAll.do")
    public String doFindAll(@RequestParam(value="pn",defaultValue = "1") Integer pn, Model model){
        // 引入PageHelper分页插件
        // 在查询之前只需要调用,传入页码,以及每页的大小
        int pageSize = 10;
        PageHelper.startPage(pn, pageSize);
        // startPage后面紧跟的这个查询就是一个分页查询
        List<RankBonus> rbs = service.findAll();
        System.out.println(rbs+"=================================");
        /*for (RankBonus rb:rbs) {
         System.out.println(rb.getRankName());
        }*/
        // 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
        // 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
        PageInfo page = new PageInfo(rbs, 5);
        //ModelAndView modelAndView = new ModelAndView();
       // modelAndView.setViewName("admin/rank-list.jsp");
         // modelAndView.addObject("pageInfo",page);
        model.addAttribute("pageInfo", page);
        return "admin/rank-list.jsp";
    }

    @RequestMapping("/findRankBonusList.do")
    @ResponseBody
    public RankBonusPages findSelective(
            @RequestParam(value="page", defaultValue="1")int pageNum,
            @RequestParam(value="limit", defaultValue="10") int limit,
            @RequestParam(value="rb_name", defaultValue="") String rb_name) throws Exception {
        /*return rb_name;*/
        List<RankBonus> list;
        //模糊查询,有多少个条件就接收多少个字段
        RankBonus rb = new RankBonus();
        rb.setRankName(rb_name);
        //pageNum:起始页面  pageSize:每页的大小
        PageHelper.startPage(pageNum,limit);
        //查找条件,一定要紧跟在startPage后
        list = service.findSelective(rb);
        PageInfo pageResult = new PageInfo(list);

        //设置前台需要的数据
        RankBonusPages rankBonusPages = new RankBonusPages();
        rankBonusPages.setCode(0);
        rankBonusPages.setMsg("");
        rankBonusPages.setCount((int) pageResult.getTotal());
        rankBonusPages.setData(pageResult.getList());
        return rankBonusPages;
    }

    //根据id删除数据
    @RequestMapping("rankBonusDelete.do")
    @ResponseBody
    public String doDelete(int id){
        if(service.CountByRbid(id)>0){
            return "exist";
        }
        if(service.moveRankBonus(id)==true)
            return "ok";
        else{
            return "no";}
    }
    //更新记录
    @RequestMapping("/updateRankBonus.do")
    @ResponseBody
    public String doUpdate(int id,String  rank,int bonus){
        RankBonus rankBonus=service.findByName(rank);
        if(rankBonus!=null&& !rankBonus.getRbId().equals(id)){
            return "exist";
        }
        RankBonus rb=new RankBonus();
        rb.setRbId(id);
        rb.setRbBonus(bonus);
        rb.setRankName(rank);
        if(service.modifyRankName(rb)==true)
            return "ok";
        else
            return "no";
    }


}

工资查询管理控制器

@Controller
public class SalaryController {
    @Autowired
    private SalaryServiceImpl salaryService = null;

    @RequestMapping("salarySettlementByAcount.do")
    @ResponseBody
    public Map<String, String> salarySettlementByAcount(String eAccount, String date) {
        Map<String, String> stringMap = new HashMap<String, String>();
        try {
            salaryService.insertSalaryByAcountAndDate(eAccount, date);
            stringMap.put("msg", "工资结算完成");
            return stringMap;
        } catch (CustomException e) {
            stringMap.put("msg", e.getMessage());
            return stringMap;
        }
    }

    @RequestMapping("salarySettlementAll.do")
    @ResponseBody
    public Map<String, String> salarySettlementAll(String date) {
        Map<String, String> stringMap = new HashMap<String, String>();
        try {
            salaryService.insertSalaryAllByDate(date);
            stringMap.put("msg", "工资结算完成");
            return stringMap;
        } catch (CustomException e) {
            stringMap.put("msg", e.getMessage());
            return stringMap;
        }
    }

    // 删除工资项目
    @RequestMapping("deleteSalaryByEid.do")
    @ResponseBody
    public int deleteSalaryByEid(@RequestParam(value = "arr")int[] ids) {
        salaryService.deleteSalaryByEid(ids);
        return 1;
    }

    // 发放工资项目
    @RequestMapping("issueSalaryByEid.do")
    @ResponseBody
    public void issueSalaryByEid(@RequestParam(value = "arr")int[] ids) {
        salaryService.updateSalaryBySid(ids);
    }

    @RequestMapping(value = "selectSalaryByEaccountDIdDate.do",
            produces = "application/json;charset=utf-8")
    @ResponseBody
    public String selectSalaryByEaccountDIdDate(@RequestParam(value = "page", defaultValue = "1") int pageNum,
                                                @RequestParam(value = "limit", defaultValue = "5") int limit,
                                                String eAccount, Integer dId, String sTime) {
        /**
         * @Author: 方宏泰
         * @Description: 工资查询
         * @Date: 12:37 2020/02/11
         * @Param: [pageNum , limit, eAccount, dId, sTime]
         * @Return: java.lang.String
         **/
        SalaryPages salaryPages = salaryService.selectSalaryByEaccountDIdDate(pageNum, limit, eAccount, dId, sTime);
        //使用fastjson以字符串形式返回数据
        JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM";
        return JSON.toJSONString(salaryPages, SerializerFeature.WriteDateUseDateFormat);
    }

    @RequestMapping(value = "selectSalaryByEaccountDIdDateState.do",
            produces = "application/json;charset=utf-8")
    @ResponseBody
    public String selectSalaryByEaccountDIdDateState(@RequestParam(value = "page", defaultValue = "1") int pageNum,
                                                @RequestParam(value = "limit", defaultValue = "5") int limit,
                                                String eAccount, Integer dId, String sTime) {
        SalaryPages salaryPages = salaryService.selectSalaryByEaccountDIdDateState(pageNum, limit, eAccount, dId, sTime);
        //使用fastjson以字符串形式返回数据
        JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM";
        return JSON.toJSONString(salaryPages, SerializerFeature.WriteDateUseDateFormat);
    }

    @RequestMapping(value = "updateSalaryByEidAndRissuePay.do")
    @ResponseBody
    public void updateSalaryByEidAndRissuePay(int sId, double rissuePay) {
        salaryService.updateSalaryByEidAndRissuePay(sId, rissuePay);
    }
}

 

如果也想学习本系统,下面领取。关注并回复:108ssm 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
"得分: " " " " " 课程设计报告 "企业工资管理系统 " " "XXX " "班级 "XXXXX " "学号 "XXXXXX " "课程名称 "数据库原理及应用 " "指导教师 " " 201X年X月X日 目 录 一.工资管理系统需求分析………………………………… 1.1功能需求………………………………………………… 1.1.1功能划分……………………………………… 1.1.2功能描述…………………………………………… 1.2性能需求………………………………………………… 1.3数据流图……………………………………………… 二.总体设计………………………………………………… 2.1数据库概念设计………………………………………… 2.2功能模块………………………………………………… 三.系统详细设计…………………………………………… 3.1数据库逻辑设计………………………………………… 3.2各模块功能……………………………………………… 3.2.1职工信息管理系统………………………………… 3.2.2职工工资管理系统………………………………… 3.2.3职工津贴管理系统………………………………… 四.系统实现………………………………………………… 4.1界面截图………………………………………………… 4.1.1主界面及工资基本信息界面…………………… 4.1.2登录界面………………………………………… 4.1.3系统主界面……………………………………… 4.1.4信息录入,修改,删除,查询界面………… 4.2设计代码………………………………………………… 五.实验总结………………………………………………… 1. 需求分析 1. 功能需求 1.1.1功能划分 (1)、员工信息表;及时反映员工的基本信息 (2)、员工津贴表,反映员工津贴 (3)、员工基本工资表 1.1.2 功能描述 (1)、基本工资的设定 (2)、津贴的设定 (3)、计算出月工资 (4)、录入员工工资信息 (5)、添加员工工资信息 (6)、更改员工工资信息 1.2性能需求 此工资管理系统工资数据精度的计算能在默认情况之下精确到小数点后3位小数, 即是精确到分的计算。但在用户使用过程中,能自行根据实际情况进行小数计算精度的 设定,最大能允许保留小数点后5位的精度。在时间特性上,当用户发出命令请求时的服 务器的响应时间、对数据更新处理、工资数据的查询检索等上,同样要求系统响应时间 不会超过0.5秒时间。系统支持多种操作系统的运行环境,多不同操作系统,不同文件格 式的磁盘上的数据均能实现信息的互通,及共享。当服务器移植到其他的系统平台,如 :Linux平台下时,同样能和其他的系统进行数据存取同步,不会出现系统之间互不兼容 的情况,系统支持多系统之间的互连互通,系统有巨大的强健性。本课程设计是用Java 语言编写,mysql数据库。 1.3数据流图 根据工资管理要求及用户需求调查分析,得到以下数据流图 图1.1第一层数据流图 图1.2职工信息的载入 图1.4考勤的信息载入 2.总体设计 2.1数据库概念设计 有了数据流图,用E-R图来说明工资信息管理系统的数据库概念模式,如图 1 n m 图2.1实体之间关系E-R图 2.2功能模块 3.系统详细设计 3.1数据库逻辑设计 将以上E-R转换成如下关系模式 员工(职工号,,密码) 工资(职工号,,基本工资,) 津贴(职工号,,奖金) 其中,标有下划线的字段表示为该数据表的主码,即主关键字。在上面的实体以及实 体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。 工资信息管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表 示在数据库中的一个表。 表一:员工信息表: "列名 "数据类型 "可否取空 "备注说明 " "no " Char ( 8 ) "NOT NULL "职工号(主键) " "name "Char(10) "NOT NULL "职工 " "mi "Smallint "NOT NULL "登录密码 " 表二:基本工资表: "列名 "数据类型 "可否取空 "备注说明 " "no "Char ( 8 ) "NOT NULL "职工号(主键) " "name "Char(10) "NOT NULL "职工 " "Jb "money "NOT NULL "基本工资 " 表四:津贴信息表 "列名 "数据类型 "可否为空 "备注说明 " "no "Char ( 8 ) "NOT NULL "职工号(主键) " "name "Char(10) "NOT NULL "职工 " "Jt "money "NOT NULL "津贴 " 3.2各模块功能 3.2.1职工信息管理系统 功能为:财务部门相关
.2.2 职工需求描述 对于职工来说,职工可以修改其密码信息,查询其基本信息和工资信息,收发留言信息。 职工登陆 职工在登陆时输入自己的用户名和密码,如无误后进入职工信息中心界面。默认的密码由管理员分配。如果密码错误则提示密码出错请重新输入,职工可以返回登陆界面。 职工密码修改 职工在登陆后,可以修改自己的密码。在修改密码界面中,需要两次输入自己的新密码,然后系统经过判断修改密码。下次可以通过新密码登陆系统。 职工考勤信息查询 在职工登陆后,进入考勤查询界面,页面给出每月的考勤信息,点击相应的年月,可以查看自己每个月的考勤记录详细信息。 职工工资信息查询 进入查询界面,职工可以查看详细工资情况,职工可以通过选择月份,便可以查询职工固定月份的工资信息。职工还可以查询自己的奖惩信息。 职工留言管理 职工可以向管理员发送留言,查看管理员发送给自己的留言。 3.2.3 管理员需求描述 对于管理员来说,管理员的能够实现的功能是该工资管理系统的核心功能,包括员工基本档案信息的管理工资的设定与计算,考勤记录与统计,奖惩或其他重要事项的记录,留言管理,科室信息管理等。 管理员登陆 管理员在登陆框选择身份为管理员,输入自己的管理员号以及密码。如无误后进入管理员界面。如果密码不正确则提示密码错误信息,需要重新输入,返回管理员登陆界面。 密码修改 管理员可以修改自己的密码,下次登陆时管理员就需要输入自己的新密码登陆系统。 科室管理 随着医院规模的扩大,医院可能需要增加某些科室,修改科室信息等,管理员登陆系统后,可以对科室信息进行管理、操作。 员工信息管理 管理员登陆后,可以进行查看员工信息,增加员工,修改员工信息,删除员工信息等操作。 员工奖惩信息管理 根据 人民医院管理制度,管理员可以使用系统记录每个员工的奖励 ,惩罚等其他重要信息,以便确定员工的工作状况,实现相应的奖励和处罚。 员工工资设置 管理员登陆系统后,可以设置每个员工的每月工资信息,其中工资项包括基本工资,基本津贴,财务人员需要为每个在职的员工设定基本工资与基本津贴。财务人员根据员工的具体工资情况,输入奖金,税率等,系统自动计算应发,扣发,实发等工资项。 工资统计与报表打印 统计每个月所有员工的工资信息,并提供报表打印功能。 留言管理模块 职工查看自己的工资信息后,如有问题,可以向财务人员(系统管理员)发送留言,管理员可以回复留言,删除留言信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央5788

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值