基于java+ssm+vue的科技银行业务管理系统

本文介绍了使用Java技术和MySQL数据库开发的科技银行业务管理系统,该系统包括贷款、理财产品、审核人员、业务人员等多方面的管理功能,实现了数据的高效处理和安全存储。系统分为管理员、审核人员、业务人员和用户四个角色,各自具有特定的功能模块,如贷款审核、理财产品管理等。此外,还展示了部分核心代码,涉及数据查询、保存和修改操作。
摘要由CSDN通过智能技术生成

项目介绍

如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法,必须采用计算机来处理这些信息,因为传统方法对应计算机处理的信息效率上真的相差甚远。

本次使用Java技术开发的科技银行业务管理系统,就是运用计算机来管理科技银行业务信息,该系统是可以实现贷款管理,贷款购买管理,理财产品管理,理财产品购买管理,审核人员管理,业务人员管理,银行卡管理,银行卡金额记录管理,银行卡补办管理,存款管理,取款管理,转账管理,账户注销管理等功能。

科技银行业务管理系统使用计算机处理相关信息,主要是在数据的传输上能达到即可传递,数据不管是想要获取或者输入,都可以及时反馈,极大的提高了效率,使用的MySQL数据库也能让数据更能安全的存储。

在这里插入图片描述

4.1功能模块设计
本小节运用功能结构图来描述管理员具备的详细的功能,对管理员的功能结构图绘制结果如图4.1所示。管理员对贷款,理财产品,审核人员,业务人员,银行卡,存款,取款,转账,账户注销等信息进行管理。
在这里插入图片描述
本小节运用功能结构图来描述审核人员具备的详细的功能,对审核人员的功能结构图绘制结果如图4.2所示。审核人员负责审核贷款购买,审核理财产品购买,审核银行卡补办,审核存款,取款,转账,账户注销等信息。
在这里插入图片描述
本小节运用功能结构图来描述业务人员具备的详细的功能,对业务人员的功能结构图绘制结果如图4.3所示。业务人员新增贷款信息,新增理财产品信息,管理贷款和理财产品信息。
在这里插入图片描述
本小节运用功能结构图来描述用户具备的详细的功能,对用户的功能结构图绘制结果如图4.4所示。用户新增并管理理财产品购买以及新增并管理贷款购买信息,新增并管理存款,取款,转账以及账户注销等信息。
在这里插入图片描述

开发环境

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

系统实现

5.1 管理员功能实现
5.1.1 审核人员管理
管理员点击导航栏的审核人员管理链接就进入审核人员管理界面。审核人员管理界面如图5.1所示。本功能允许管理员对审核人员的手机号码,性别,审核人员姓名进行修改,查看,添加。
在这里插入图片描述

图5.1 审核人员管理界面

5.1.2 业务人员管理
管理员点击导航栏的业务人员管理链接就进入业务人员管理界面。业务人员管理界面如图5.2所示。本功能允许管理员对业务人员的头像,业务人员手机号,业务人员姓名等信息进行修改,添加。
在这里插入图片描述

图5.2 业务人员管理界面

5.1.3 银行卡管理
管理员点击导航栏的银行卡管理链接就进入银行卡管理界面。银行卡管理界面如图5.3所示。本功能允许管理员查看银行卡卡号,开户地,卡余额,绑定手机号,开户时间等信息,可以查看银行卡详情。
在这里插入图片描述

图5.3 银行卡管理界面

5.2 审核人员功能实现
5.2.1 理财产品购买管理
审核人员点击导航栏的理财产品购买管理链接就进入理财产品购买管理界面。理财产品购买管理界面如图5.4所示。审核人员对用户购买的理财产品进行审核,查看用户购买的理财产品的详情。
在这里插入图片描述

图5.4 理财产品购买管理界面

5.2.2 银行卡补办管理
审核人员点击导航栏的银行卡补办管理链接就进入银行卡补办管理界面。银行卡补办管理界面如图5.5所示。本功能允许审核人员审核用户申请补办的银行卡信息,以及查看银行卡补办的详情。
在这里插入图片描述

图5.5 银行卡补办管理界面

5.2.3 取款管理
审核人员点击导航栏的取款管理链接就进入取款管理界面。取款管理界面如图5.6所示。本功能允许审核人员审核用户取款信息,查看用户取款金额等信息。
在这里插入图片描述

图5.6 取款管理界面

5.3 业务人员功能实现
5.3.1 贷款管理
业务人员点击导航栏的贷款管理链接就进入贷款管理界面。贷款管理界面如图5.7所示。本功能允许业务人员新增贷款业务,查询贷款信息,查看贷款总额,每月还款信息,利率等信息。
在这里插入图片描述

图5.7 贷款管理界面

5.3.2 理财产品管理
业务人员点击导航栏的理财产品管理链接就进入理财产品管理界面。理财产品管理界面如图5.8所示。本功能允许业务人员新增理财产品业务,查看理财产品剩余份数,理财产品名称等信息。
在这里插入图片描述

图5.8 理财产品管理界面

5.4 用户功能实现
5.4.1 银行卡管理
用户点击导航栏的银行卡管理链接就进入银行卡管理界面。银行卡管理界面如图5.9所示。本功能允许用户新增银行卡信息,查看银行卡的开户地,开户时间,绑定邮箱等信息。
在这里插入图片描述

图5.9 银行卡管理界面

5.4.2 存款管理
用户点击导航栏的存款管理链接就进入存款管理界面。存款管理界面如图5.10所示。本功能允许用户选择银行卡,然后登记存款信息,查看存款详情,包括存款金额,预约日期,申请时间,审核意见等信息。
在这里插入图片描述

图5.10存款管理界面

5.4.3 理财产品购买管理
用户点击导航栏的理财产品购买管理链接就进入理财产品购买管理界面。理财产品购买管理界面如图5.11所示。本功能允许用户新增理财产品购买信息,查看理财产品购买详情。
在这里插入图片描述

图5.11理财产品购买管理界面

5.4.4 贷款购买管理
用户点击导航栏的贷款购买管理链接就进入贷款购买管理界面。贷款购买管理界面如图5.12所示。本功能允许用户新增贷款购买信息,查看贷款购买审核状态以及审核意见,查看贷款购买详情。
在这里插入图片描述

图5.12贷款购买管理界面

核心代码

package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
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.*;
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.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 银行卡金额记录
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/yinhangkaJinejilu")
public class YinhangkaJinejiluController {
    private static final Logger logger = LoggerFactory.getLogger(YinhangkaJinejiluController.class);

    @Autowired
    private YinhangkaJinejiluService yinhangkaJinejiluService;


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

    //级联表service
    @Autowired
    private YonghuService yonghuService;
    @Autowired
    private YinhangkaService yinhangkaService;

    @Autowired
    private ShenherenyuanService shenherenyuanService;
    @Autowired
    private YewurenyuanService yewurenyuanService;


    /**
    * 后端列表
    */
    @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(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        else if("审核人员".equals(role))
            params.put("shenherenyuanId",request.getSession().getAttribute("userId"));
        else if("业务人员".equals(role))
            params.put("yewurenyuanId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = yinhangkaJinejiluService.queryPage(params);

        //字典表数据转换
        List<YinhangkaJinejiluView> list =(List<YinhangkaJinejiluView>)page.getList();
        for(YinhangkaJinejiluView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        YinhangkaJinejiluEntity yinhangkaJinejilu = yinhangkaJinejiluService.selectById(id);
        if(yinhangkaJinejilu !=null){
            //entity转view
            YinhangkaJinejiluView view = new YinhangkaJinejiluView();
            BeanUtils.copyProperties( yinhangkaJinejilu , view );//把实体数据重构到view中

                //级联表
                YonghuEntity yonghu = yonghuService.selectById(yinhangkaJinejilu.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
                //级联表
                YinhangkaEntity yinhangka = yinhangkaService.selectById(yinhangkaJinejilu.getYinhangkaId());
                if(yinhangka != null){
                    BeanUtils.copyProperties( yinhangka , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYinhangkaId(yinhangka.getId());
                    view.setYinhangkaYonghuId(yinhangka.getYonghuId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody YinhangkaJinejiluEntity yinhangkaJinejilu, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,yinhangkaJinejilu:{}",this.getClass().getName(),yinhangkaJinejilu.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            yinhangkaJinejilu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<YinhangkaJinejiluEntity> queryWrapper = new EntityWrapper<YinhangkaJinejiluEntity>()
            .eq("yonghu_id", yinhangkaJinejilu.getYonghuId())
            .eq("yinhangka_id", yinhangkaJinejilu.getYinhangkaId())
            .eq("yinhangka_jinejilu_uuid_number", yinhangkaJinejilu.getYinhangkaJinejiluUuidNumber())
            .eq("jilu_types", yinhangkaJinejilu.getJiluTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        YinhangkaJinejiluEntity yinhangkaJinejiluEntity = yinhangkaJinejiluService.selectOne(queryWrapper);
        if(yinhangkaJinejiluEntity==null){
            yinhangkaJinejilu.setInsertTime(new Date());
            yinhangkaJinejilu.setCreateTime(new Date());
            yinhangkaJinejiluService.insert(yinhangkaJinejilu);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody YinhangkaJinejiluEntity yinhangkaJinejilu, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,yinhangkaJinejilu:{}",this.getClass().getName(),yinhangkaJinejilu.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            yinhangkaJinejilu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<YinhangkaJinejiluEntity> queryWrapper = new EntityWrapper<YinhangkaJinejiluEntity>()
            .notIn("id",yinhangkaJinejilu.getId())
            .andNew()
            .eq("yonghu_id", yinhangkaJinejilu.getYonghuId())
            .eq("yinhangka_id", yinhangkaJinejilu.getYinhangkaId())
            .eq("yinhangka_jinejilu_uuid_number", yinhangkaJinejilu.getYinhangkaJinejiluUuidNumber())
            .eq("jilu_types", yinhangkaJinejilu.getJiluTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        YinhangkaJinejiluEntity yinhangkaJinejiluEntity = yinhangkaJinejiluService.selectOne(queryWrapper);
        if(yinhangkaJinejiluEntity==null){
            yinhangkaJinejiluService.updateById(yinhangkaJinejilu);//根据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());
        yinhangkaJinejiluService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<YinhangkaJinejiluEntity> yinhangkaJinejiluList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("../../upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            YinhangkaJinejiluEntity yinhangkaJinejiluEntity = new YinhangkaJinejiluEntity();
//                            yinhangkaJinejiluEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaId(Integer.valueOf(data.get(0)));   //银行卡 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaJinejiluUuidNumber(data.get(0));                    //记录编号 要改的
//                            yinhangkaJinejiluEntity.setJiluTypes(Integer.valueOf(data.get(0)));   //记录类型 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaJinejiluMoney(data.get(0));                    //记录金额 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaJinejiluContent("");//详情和图片
//                            yinhangkaJinejiluEntity.setInsertTime(date);//时间
//                            yinhangkaJinejiluEntity.setCreateTime(date);//时间
                            yinhangkaJinejiluList.add(yinhangkaJinejiluEntity);


                            //把要查询是否重复的字段放入map中
                                //记录编号
                                if(seachFields.containsKey("yinhangkaJinejiluUuidNumber")){
                                    List<String> yinhangkaJinejiluUuidNumber = seachFields.get("yinhangkaJinejiluUuidNumber");
                                    yinhangkaJinejiluUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> yinhangkaJinejiluUuidNumber = new ArrayList<>();
                                    yinhangkaJinejiluUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("yinhangkaJinejiluUuidNumber",yinhangkaJinejiluUuidNumber);
                                }
                        }

                        //查询是否重复
                         //记录编号
                        List<YinhangkaJinejiluEntity> yinhangkaJinejiluEntities_yinhangkaJinejiluUuidNumber = yinhangkaJinejiluService.selectList(new EntityWrapper<YinhangkaJinejiluEntity>().in("yinhangka_jinejilu_uuid_number", seachFields.get("yinhangkaJinejiluUuidNumber")));
                        if(yinhangkaJinejiluEntities_yinhangkaJinejiluUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(YinhangkaJinejiluEntity s:yinhangkaJinejiluEntities_yinhangkaJinejiluUuidNumber){
                                repeatFields.add(s.getYinhangkaJinejiluUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [记录编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        yinhangkaJinejiluService.insertBatch(yinhangkaJinejiluList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }






}

论文参考

在这里插入图片描述

目 录
摘 要 I
Abstract II
第一章 绪论 1
1.1 研究背景 1
1.2 研究意义 1
1.3 研究内容 2
第二章 开发环境与技术 3
2.1 Java语言 3
2.2 JDK简介 3
2.3 Eclipse开发工具 4
第三章 系统分析 5
3.1可行性分析 5
3.1.1运行可行性分析 5
3.1.2技术可行性分析 5
3.1.3经济可行性分析 5
3.2系统流程分析 6
3.3 系统性能分析 8
3.3.1系统的安全性 8
3.3.2系统易维护性 8
3.3.3系统可扩展性 8
3.4系统功能分析 9
第四章 系统设计 14
4.1功能模块设计 14
4.2数据库设计 17
4.2.1数据库E-R图 17
4.2.2 数据库表结构 20
第五章 系统实现 27
5.1 管理员功能实现 27
5.1.1 审核人员管理 27
5.1.2 业务人员管理 27
5.1.3 银行卡管理 28
5.2 审核人员功能实现 28
5.2.1 理财产品购买管理 28
5.2.2 银行卡补办管理 29
5.2.3 取款管理 29
5.3 业务人员功能实现 30
5.3.1 贷款管理 30
5.3.2 理财产品管理 31
5.4 用户功能实现 31
5.4.1 银行卡管理 31
5.4.2 存款管理 32
5.4.3 理财产品购买管理 32
5.4.4 贷款购买管理 33
第六章 系统测试 34
6.1 测试方案 34
6.2 系统测试用例 35
6.2.1 登录功能测试 35
6.2.2 注册功能测试 35
6.3 测试的结果 36
结 论 37
参考文献 38
致 谢 39

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值