基于springboot 财务凭证管理系统设计与实现

编程达人挑战赛·第4期 10w+人浏览 285人参与

博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例  方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

3.4 系统总体设计

3.4.1 功能设计

财务凭证管理系统主要管理员信息管理与查看,用户信息管理与查看,科目信息管理与查看,总账簿信息管理与查看,结转信息管理与查看,资产负债总表信息管理与查看,负债明细信息管理与查看等功能,满足企业管理人员的查询功能,以及工作人员的使用,具体功能模块图如3.1所示:

图3.1 系统总体模块图

3.4.2 登录流程

当管理员需要登录的时候,需要有响应的页面来实现这一功能。登录界面是用来支持用户进行登录功能操作的界面,当在界面中输入普通用户的用户名、密码,就可以通过身份验证进入该系统。 登录界面需要让用户输入用户名、密码。如果是错误登录信息造成的还要显示错误信息。否则,当信息输入和权限选择正确时,将分别将用户导入各自对应的操作界面首页。登录流程具体如下:

图3.2 管理员登录流程图

管理员登录信息验证界面是非常重要的一部分,它接收登录表单提交的信息,并在用户信息表里检验是否存在对应的用户,和判断用户的类型以便获得相应的权限。

3.5 数据库设计

3.5.1 概念模型设计

3.5.2 关系模式设计

一个实体型转换为一个关系模式的集合。实体的属性就是关系的属性,实体的码就是关系的码。

对于实体间的联系则有以下不同的情况:

 (1) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

 (2) 一个1:N联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并。

 (3) 一个M:N联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

 (4) 三个或三个以上实体间的一个多元联系可以转换为一个关系模式,与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。

财务凭证管理系统中,实体有管理员实体,用户实体,科目实体,总账簿实体,结转实体,资产负债总表实体,负债明细实体等等,他们之间的关系如图3.10所示:

图3.10 E-R关系图


3.5.3 逻辑结构设计

1 管理员( 管理员编号,用户名,密码,姓名 )

2 用户( 用户编号,用户名,密码,姓名,联系电话,联系地址 )

3 科目( 科目编号,科目名称,代码 )

4 总账簿( 总账簿编号,年份,总金额,借金额,贷金额,创建时间,创建人 )

5 结转( 结转编号,年份,科目,类型,金额,录入时间,录入人 )

6 资产负债总表( 资产负债总表编号,年份,资产,负债,创建时间,创建人 )

7 负债明细( 负债明细编号,年份,金额,类型,创建时间,创建人,类别 )

3.5.4 物理结构设计

由各个关系模式和根据需求分析阶段数据字典的数据项描述,给出各数据表结构。

(1)管理员信息表如表3.1所示:

表3.1 管理员信息表

序号

字段名称

数据类型

长度

主键

描述

1

glyid

INTEGER

11

管理员编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

(2)用户信息表如表3.2所示:

表3.2 用户信息表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

lxdh

VARCHAR

40

联系电话

6

lxdz

VARCHAR

40

联系地址

(3)科目信息表如表3.3所示:

表3.3 科目信息表

序号

字段名称

数据类型

长度

主键

描述

1

kmid

INTEGER

11

科目编号

2

kmmc

VARCHAR

40

科目名称

3

dm

VARCHAR

40

代码

(4)总账簿信息表如表3.4所示:

表3.4 总账簿信息表

序号

字段名称

数据类型

长度

主键

描述

1

zzbid

INTEGER

11

总账簿编号

2

nf

VARCHAR

40

年份

3

zje

VARCHAR

40

总金额

4

jje

VARCHAR

40

借金额

5

dje

VARCHAR

40

贷金额

6

cjsj

VARCHAR

40

创建时间

7

cjr

VARCHAR

40

创建人

(5)结转信息表如表3.5所示:

表3.5 结转信息表

序号

字段名称

数据类型

长度

主键

描述

1

jzid

INTEGER

11

结转编号

2

nf

VARCHAR

40

年份

3

km

VARCHAR

40

科目

4

lx

VARCHAR

40

类型

5

je

VARCHAR

40

金额

6

lrsj

VARCHAR

40

录入时间

7

lrr

VARCHAR

40

录入人

(6)资产负债信息表如表3.6所示:

表3.6 资产负债信息表

序号

字段名称

数据类型

长度

主键

描述

1

zcfzzbid

INTEGER

11

资产负债总表编号

2

nf

VARCHAR

40

年份

3

zc

VARCHAR

40

资产

4

fz

VARCHAR

40

负债

5

cjsj

VARCHAR

40

创建时间

6

cjr

VARCHAR

40

创建人

(7)负债明细信息表

序号

字段名称

数据类型

长度

主键

描述

1

fzmxid

INTEGER

11

负债明细编号

2

nf

VARCHAR

40

年份

3

je

VARCHAR

40

金额

4

lx

VARCHAR

40

类型

5

cjsj

VARCHAR

40

创建时间

6

cjr

VARCHAR

40

创建人

7

lb

VARCHAR

40

类别

3.6 本章小结

本章主要是系统的分析与设计,主要分为两个方面来设计,分别为总体和数据库设计,在总体设计方面,主要是根据需求分析,来设计系统的登录以及功能的开发设计;在数据库方面是设计系统的物理结构的设计和逻辑结构的设计。


4 系统的实现

详细设计阶段的任务就是把在总体设计阶段提出的比较抽象概括的解决问题的方法具体化,也就是“应该怎样具体地实现这个系统”。在本阶段将包括数据库的设计和每个模块的详细设计,确定实现模块功能所需要的算法和数据结构。

本系统的名称是“财务凭证管理系统”,界面要求是简洁大方,避免过度包装,目的是为了给企业的管理人员提供一个良好的平台。

4.1 登录模块界面

登录系统首页,出现用户名、密码的输入框,填写用户名和密码点击【提交】按钮,即可登录。具体的登录页面如图6.1所示:

图6.2 登录界面图

4.2 用户管理界面

点击用户管理菜单,显示添加用户信息和用户信息列表界面,点击添加用户信息,右侧界面呈现出添加的用户信息界面,包括用户用户编号,用户名,密码,姓名,联系电话,联系地址等信息,添加用户信息完毕点击“提交”按钮,则添加用户信息成功。点击“用户列表”,右侧界面呈现出需要用户的具体信息,包括用户编号,用户名,密码,姓名,联系电话,联系地址等信息,可对逐条用户信息进行查看、删除和修改

4.3 科目管理界面

点击科目管理菜单,显示添加科目信息和科目信息列表界面,点击添加科目信息,右侧界面呈现出添加的科目信息界面,包括科目科目编号,科目名称,代码等信息,添加科目信息完毕点击“提交”按钮,则添加科目信息成功。点击“科目列表”,右侧界面呈现出需要科目的具体信息,包括科目编号,科目名称,代码等信息,可对逐条科目信息进行查看、删除和修改


@Controller
@RequestMapping(value="/kemu")
public class kemuController {
	/**
	 * 自动注入业务逻辑层,注入方式使用了注解自动注入
	 */


	  @Resource
    private kemuDao kemudao;
    @RequestMapping(value="/addpage")
    public String addpage(kemu bean, HttpServletRequest request){
	/**
	科目添加页面
	*/

        Map<String,Object> map= new HashMap<String,Object>();

        System.out.println("addPageok");
        return "kemu/kemuadd";
    }

    @RequestMapping(value="/add")
    public String add(kemu bean, HttpServletRequest request){
        /**
	科目添加处理方法
	**/
        Map<String,Object> map= new HashMap<String,Object>();//初始变量

	

		String kmid=(String)request.getParameter("kmid");//科目编号

		String kmmc=(String)request.getParameter("kmmc");//科目名称

		String dm=(String)request.getParameter("dm");//代码

        



        kemudao.add(bean);//调用添加方法
        System.out.println("add");
        request.setAttribute("msg", "<script>alert('添加成功');</script>");//操作提示
        return "kemu/kemuadd";
    }


    /**删除 科目
     *
     */
    @RequestMapping(value="/del")
    public String  del(HttpServletRequest request,Map<String,Object> map){
	
        //	Map<String,Object> map= new HashMap<String,Object>();//初始化对象
        String a=(String)request.getParameter("keyid");//request 方式获得主键id
        int id=Integer.parseInt(a);
        request.setAttribute("msg", "<script>alert('删除成功');</script>");
        kemudao.delete(id);//调用 删除方法
        return listpage(map,request);
    }

    /**
     * 查询kemu信息 返回list结果 前台获取
     */
    @RequestMapping(value="/listpage")
    public String listpage(Map<String,Object> map,HttpServletRequest request){
        List<Map> list= new ArrayList<Map>();//初始化对象
        Map  map1= new HashMap();

      
	String kmid=(String)request.getParameter("kmid");//科目编号
	if(kmid!=null&&!kmid.equals("")){
	map1.put("kmid",kmid);//科目编号
	}
	String kmmc=(String)request.getParameter("kmmc");//科目名称
	if(kmmc!=null&&!kmmc.equals("")){
	map1.put("kmmc",kmmc);//科目名称
	}
	String dm=(String)request.getParameter("dm");//代码
	if(dm!=null&&!dm.equals("")){
	map1.put("dm",dm);//代码
	}

        list=kemudao.getAll(map1);//传入 方法参数 返回gly结果集
        System.out.println("listsize="+list.size());

        map.put("list", list);//传递参数
        return "kemu/kemulist";
    }
	/**
	科目详情信息
	*/
    @RequestMapping(value="/detail")
    public String detail(Map<String,Object> map,HttpServletRequest request){

        String keyid=(String)request.getParameter("keyid");//request 方式获得主键id
         kemu bean=new kemu();//初始化对象
        bean=kemudao.getkemuByID(Integer.parseInt(keyid));//根据id返回 kemu对象数据


		request.setAttribute("kmid", bean.getKmid());//科目编号

		request.setAttribute("kmmc", bean.getKmmc());//科目名称

		request.setAttribute("dm", bean.getDm());//代码

       


        return "kemu/kemudetail";
    }

    /**
    进入kemu修改页面
    **/
    @RequestMapping(value="/modifypage")
    public String modifypage(Map<String,Object> map,HttpServletRequest request){
        String keyid=(String)request.getParameter("keyid");//request 方式获得主键id
        kemu bean=new kemu();//初始化对象
        bean=kemudao.getkemuByID(Integer.parseInt(keyid));//根据id返回 kemu对象数据


      
		request.setAttribute("kmid", bean.getKmid());//科目编号

		request.setAttribute("kmmc", bean.getKmmc());//科目名称

		request.setAttribute("dm", bean.getDm());//代码

       



        return "kemu/kemumodify";
    }

    /**
     * 修改科目信息
     */
    @RequestMapping(value="/update")
    public String update(kemu bean,HttpServletRequest request,Map<String,Object> map1){



		String kmid=(String)request.getParameter("kmid");//科目编号

		String kmmc=(String)request.getParameter("kmmc");//科目名称

		String dm=(String)request.getParameter("dm");//代码




        request.setAttribute("msg", "<script>alert('修改成功');</script>");
        kemudao.update(bean);//执行update 方法
        return listpage(map1,request);
    }
	

4.4 资产负债管理界面

点击资产负债总表管理菜单,显示添加资产负债总表信息和资产负债总表信息列表界面,点击添加资产负债总表信息,右侧界面呈现出添加的资产负债总表信息界面,包括资产负债总表资产负债总表编号,年份,资产,负债,创建时间,创建人等信息,添加资产负债总表信息完毕点击“提交”按钮,则添加资产负债总表信息成功。点击“资产负债总表列表”,右侧界面呈现出需要资产负债总表的具体信息,包括资产负债总表编号,年份,资产,负债,创建时间,创建人等信息,可对逐条资产负债总表信息进行查看、删除和修改

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

翰文编程

你的鼓励 是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值