基于java+ssm+jsp的中小型企业财务管理系统

项目介绍

网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此中小型企业财务信息的管理计算机化,系统化是必要的。设计开发中小型企业财务管理系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于中小型企业财务信息的维护和检索也不需要花费很多时间,非常的便利。

中小型企业财务管理系统是在MySQL中建立数据表保存信息,运用SSM框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。管理员管理职工和部门,管理企业资产,经营信息和职工薪资。职工查询和查看企业经营和企业资产信息,查看每月发放给职工的薪资。

中小型企业财务管理系统在让中小型企业财务信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升中小型企业财务管理系统提供的数据的可靠性,让系统数据的错误率降至最低。

4.2功能结构设计
前面所做的功能分析,只是本系统的一个大概功能,这部分需要在此基础上进行各个模块的详细设计。

设计的管理员的详细功能见下图,管理员登录进入本人后台之后,管理职工和部门,管理企业资产,经营信息和职工薪资。
在这里插入图片描述设计的职工的详细功能见下图,职工查询和查看企业经营和企业资产信息,查看每月发放给职工的薪资。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统实现

5 系统实现
在此部分内容中,主要通过系统功能的运行效果图展示前面设计的最终结果。系统实现对编制人员的技术能力有较高要求,因为需要他们使用编程的方式去实现系统设计的方案。

5.1 管理员功能实现
5.1.1 职工管理
管理员权限中的职工管理,其运行效果见下图。职工资料包括籍贯,民族,政治面貌,部门等信息,这些信息都需要管理员进行维护,比如修改,比如删除,新来的职工,管理员也需要登记其信息。
在这里插入图片描述
5.1.2 薪资管理
管理员权限中的薪资管理,其运行效果见下图。职工每月发放的薪资需要管理员登记和维护,管理员随时可以修改本页面的职工薪资数据。
在这里插入图片描述5.1.3 添加资产
管理员权限中的添加资产,其运行效果见下图。管理员不仅需要登记资产的名称,也需要上传跟资产相关的文件,并描述资产信息,最后通过新增按钮提交信息。
在这里插入图片描述5.1.4 经营管理
管理员权限中的经营管理,其运行效果见下图。管理员根据经营类型,或者时间段查询经营信息,可以编辑,删除经营信息。
在这里插入图片描述5.2 职工功能实现
5.2.1 薪资信息
职工权限中的薪资信息,其运行效果见下图。职工在本页面主要就是查看每月的薪资,可以根据月份查询薪资。
在这里插入图片描述

5.2.2 经营信息
职工权限中的经营信息,其运行效果见下图。职工查看企业经营的收入与支出类型的详情和金额信息,根据经营类型或时间段查询企业经营信息。
在这里插入图片描述
5.2.3 资产信息
职工权限中的资产信息,其运行效果见下图。职工查看固定资产,流动资产等资产类型的资产价值。
在这里插入图片描述

核心代码

package com.controller;


import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;

import com.entity.JingyingEntity;

import com.service.JingyingService;
import com.entity.view.JingyingView;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 经营
 * 后端接口
*/
@RestController
@Controller
@RequestMapping("/jingying")
public class JingyingController {
    private static final Logger logger = LoggerFactory.getLogger(JingyingController.class);

    @Autowired
    private JingyingService jingyingService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;


    //级联表service


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        }
        PageUtils page = jingyingService.queryPage(params);

        //字典表数据转换
        List<JingyingView> list =(List<JingyingView>)page.getList();
        for(JingyingView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        JingyingEntity jingying = jingyingService.selectById(id);
        if(jingying !=null){
            //entity转view
            JingyingView view = new JingyingView();
            BeanUtils.copyProperties( jingying , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("ve")
    public R save(@RequestBody JingyingEntity jingying, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,jingying:{}",this.getClass().getName(),jingying.toString());
        Wrapper<JingyingEntity> queryWrapper = new EntityWrapper<JingyingEntity>()
            .eq("jingying_name", jingying.getJingyingName())
            .eq("jingying_types", jingying.getJingyingTypes())
            .eq("jingying_content", jingying.getJingyingContent())
            .eq("jingying_money", jingying.getJingyingMoney())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        JingyingEntity jingyingEntity = jingyingService.selectOne(queryWrapper);
        if(jingyingEntity==null){
            jingying.setInsertTime(new Date());
            jingying.setCreateTime(new Date());
        //  String role = String.valueOf(request.getSession().getAttribute("role"));
        //  if("".equals(role)){
        //      jingying.set
        //  }
            jingyingService.insert(jingying);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody JingyingEntity jingying, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,jingying:{}",this.getClass().getName(),jingying.toString());
        //根据字段查询是否有相同数据
        Wrapper<JingyingEntity> queryWrapper = new EntityWrapper<JingyingEntity>()
            .notIn("id",jingying.getId())
            .eq("jingying_name", jingying.getJingyingName())
            .eq("jingying_types", jingying.getJingyingTypes())
            .eq("jingying_content", jingying.getJingyingContent())
            .eq("jingying_money", jingying.getJingyingMoney())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        JingyingEntity jingyingEntity = jingyingService.selectOne(queryWrapper);
        if(jingyingEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      jingying.set
            //  }
            jingyingService.updateById(jingying);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        jingyingService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


}

论文参考

在这里插入图片描述

目 录
1 绪论 1
1.1 选题背景 1
1.2 选题意义 1
1.3 研究内容 2
2 系统开发技术 3
2.1 Java语言 3
2.2 SSM框架 3
2.3 MYSQL数据库 4
3 系统分析 5
3.1可行性研究 5
3.1.1经济可行性 5
3.1.2时间可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1系统易用性 6
3.2.2系统健壮性 6
3.2.3系统安全性 6
3.3 系统流程分析 6
3.4系统功能分析 8
4 系统设计 11
4.1系统目标 11
4.2功能结构设计 12
4.3数据库设计 13
4.3.1数据库E-R图 13
4.3.2 数据库表结构 15
5 系统实现 18
5.1 管理员功能实现 18
5.1.1 职工管理 18
5.1.2 薪资管理 18
5.1.3 添加资产 19
5.1.4 经营管理 19
5.2 职工功能实现 20
5.2.1 薪资信息 20
5.2.2 经营信息 20
5.2.3 资产信息 21
6系统测试 22
6.1 系统测试的类型 22
6.2 功能测试 23
6.3 可用性测试 23
6.4 测试结果分析 23
结 论 24
参考文献 26
致 谢 27

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值