基于web 家庭财务管理系统设计与实现

博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作

☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟

我的博客空间发布了2000+题目解决方法案例 方便大家学习使用

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

文末下方有源码获取地址

家庭财务管理系统要满足以下几个方面的功能需求:

通过对需求进行分析,家庭财务管理系统包括用户信息管理、基础数据信息管理、收支信息管理、项目信息管理、借还款信息管理。

1)用户管理模块笔记用户信息该模块主要用于系统的用户管理,其中主要包括系统用户的登录和注册以及管理员添加用户、用户编辑个人信息等部分。

2)收支管理模块

家庭管理员登陆进入家庭财务管理系统可以根据实际需要添加收入信息、编辑收入信息、添加支出信息、编辑支出信息,删除信息

3)存储管理模块

家庭系统管理员进入家庭财务管理系统可以根据实际需要选择定期存储信息和活期存储信息管理。

4)借还款管理模块

家庭系统管理员进入家庭财务管理系统可以根据实际需要点击添加借入、添加借出进入相应页面进行管理。

5)基本数据管理模块

在基本数据管理模块中,管理员登陆财务管理系统可以对收入、支出、家庭信息、家庭称呼信息、家庭活期账号信息、家庭定期账号信息等基本数据进行分析管理。

3.4 系统总体设计

3.4.1 功能设计

家庭财务管理系统主要用户信息管理与查看,项目信息管理与查看,收入信息管理与查看,支出信息管理与查看,借款信息管理与查看,还款信息管理与查看,卡折信息信息管理与查看等功能,具体功能模块图如3.1所示:

图3.1 系统总体模块图

3.4.2 登录流程

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

图3.2 管理员登录流程图

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

3.5 数据库设计

3.5.1 概念模型设计

将需求分析得到的用户需求抽象为信息结构,即概念模型的过程就是概念结构设计,它是整个数据库设计的关键。

(2)系统中实体E-R图

根据家庭财务管理系统的详细设计系统的要求,规划出了以下一些实体,用户实体,项目实体,收入实体,支出实体,借款实体,还款实体,卡折信息实体。

用户信息实体,主要包括 用户编号,用户名,密码,姓名,联系电话,联系地址,权限,称呼 等信息实体。如图3.3所示:

图3.3 用户实体属性图

项目信息实体,主要包括 项目编号,项目,类型 等信息实体。如图3.4所示:

图3.4 项目实体属性图

收入信息实体,主要包括 收入编号,日期,项目,金额,用户,时间 等信息实体。如图3.5所示:

图3.6 收入实体属性图

支出信息实体,主要包括 支出编号,日期,项目,金额,用户,时间 等信息实体。如图3.7所示:

图3.7 支出实体属性图

借款信息实体,主要包括 借款编号,日期,说明,借款金额,借款人,借款时间 等信息实体。如图3.8所示:

图3.8 借款实体属性图

还款信息实体,主要包括 还款编号,日期,说明,还款金额,还款人,还款时间 等信息实体。如图3.9所示:

图3.9 还款实体属性图

卡折信息信息实体,主要包括 卡折信息编号,名称,卡号,密码,用户,登记时间 等信息实体。如图3.10所示:

图3.10 实体属性图

3.5 .2 关系模式设计

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

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

家庭财务管理系统中,实体有用户实体,项目实体,收入实体,支出实体,借款实体,还款实体,卡折信息实体等等,他们之间的关系如图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 | yhid | INTEGER | 11 | 是 | 用户编号 |
| 2 | yhm | VARCHAR | 40 | 否 | 用户名 |
| 3 | mm | VARCHAR | 40 | 否 | 密码 |
| 4 | xm | VARCHAR | 40 | 否 | 姓名 |
| 5 | lxdh | VARCHAR | 40 | 否 | 联系电话 |
| 6 | lxdz | VARCHAR | 40 | 否 | 联系地址 |
| 7 | qx | VARCHAR | 40 | 否 | 权限 |
| 8 | ch | VARCHAR | 40 | 否 | 称呼 |

(2)项目信息表如表3.2所示:

表3.2 项目信息表

|----|------|---------|----|----|------|
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | xmid | INTEGER | 11 | 是 | 项目编号 |
| 2 | xm | VARCHAR | 40 | 否 | 项目 |
| 3 | lx | VARCHAR | 40 | 否 | 类型 |

(3)收入信息表如表3.3所示:

表3.3收入信息表

|----|------|---------|----|----|------|
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | srid | INTEGER | 11 | 是 | 收入编号 |
| 2 | rq | VARCHAR | 40 | 否 | 日期 |
| 3 | xm | VARCHAR | 40 | 否 | 项目 |
| 4 | je | VARCHAR | 40 | 否 | 金额 |
| 5 | yh | VARCHAR | 40 | 否 | 用户 |
| 6 | sj | VARCHAR | 40 | 否 | 时间 |

(4)支出信息表如表3.4所示:

表3.4 支出信息表

|----|------|---------|----|----|------|
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | zcid | INTEGER | 11 | 是 | 支出编号 |
| 2 | rq | VARCHAR | 40 | 否 | 日期 |
| 3 | xm | VARCHAR | 40 | 否 | 项目 |
| 4 | je | VARCHAR | 40 | 否 | 金额 |
| 5 | yh | VARCHAR | 40 | 否 | 用户 |
| 6 | sj | VARCHAR | 40 | 否 | 时间 |

(5)借款信息表如表3.5所示:

表3.5 借款信息表

|----|------|---------|----|----|------|
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | jkid | INTEGER | 11 | 是 | 借款编号 |
| 2 | rq | VARCHAR | 40 | 否 | 日期 |
| 3 | sm | VARCHAR | 40 | 否 | 说明 |
| 4 | jkje | VARCHAR | 40 | 否 | 借款金额 |
| 5 | jkr | VARCHAR | 40 | 否 | 借款人 |
| 6 | jksj | VARCHAR | 40 | 否 | 借款时间 |

(6)还款信息表如表3.6所示:

表3.6 还款信息表

|----|------|---------|----|----|------|
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | hkid | INTEGER | 11 | 是 | 还款编号 |
| 2 | rq | VARCHAR | 40 | 否 | 日期 |
| 3 | sm | VARCHAR | 40 | 否 | 说明 |
| 4 | hkje | VARCHAR | 40 | 否 | 还款金额 |
| 5 | hkr | VARCHAR | 40 | 否 | 还款人 |
| 6 | hksj | VARCHAR | 40 | 否 | 还款时间 |

(7)卡折信息表如表3.7所示:

表3.7 卡折信息表

|----|--------|---------|----|----|--------|
| 序号 | 字段名称 | 数据类型 | 长度 | 主键 | 描述 |
| 1 | kzxxid | INTEGER | 11 | 是 | 卡折信息编号 |
| 2 | mc | VARCHAR | 40 | 否 | 名称 |
| 3 | kh | VARCHAR | 40 | 否 | 卡号 |
| 4 | mm | VARCHAR | 40 | 否 | 密码 |
| 5 | yh | VARCHAR | 40 | 否 | 用户 |
| 6 | djsj | VARCHAR | 40 | 否 | 登记时间 |

3.6 本章小结

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

4 系统的实现

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

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

4.1 登录模块界面

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

图6.2 登录界面图

4.2 项目 管理 界面

复制代码
package com.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import com.bean.*;
import com.dao.*;
@Controller
@RequestMapping(value="/xiangmu")
public class xiangmuAction {
	/**
	 * 自动注入业务逻辑层,注入方式使用了注解自动注入
	 */

	@Resource xiangmuDao xiangmudao;
	@RequestMapping(value="/addPage")
	public String addPage(xiangmu xiangmu,HttpServletRequest request){
		Map<String,Object> map= new HashMap<String,Object>();
		
		System.out.println("addPageok");
		return "xiangmu/xiangmuadd";
	}
	
	@RequestMapping(value="/add")
	public String add(xiangmu xiangmu,HttpServletRequest request){
		Map<String,Object> map= new HashMap<String,Object>();
		//String name=(String)request.getParameter("name");

		map.put("xmid", xiangmu.getXmid());//项目编号

		map.put("xm", xiangmu.getXm());//项目

		map.put("lx", xiangmu.getLx());//类型



		String xmid=(String)xiangmu.getXmid();//项目编号

		String xm=(String)xiangmu.getXm();//项目

		String lx=(String)xiangmu.getLx();//类型

		xiangmudao.save(map);
		
		
		request.setAttribute("msg", "<script>alert('添加成功');</script>");
		System.out.println("addok");
		return "xiangmu/xiangmuadd";
	}
	
	/**删除 
	 * 
	 */
	@RequestMapping(value="/del")
	public String  del(Integer id,HttpServletRequest request,Map<String,Object> map){
	//	Map<String,Object> map= new HashMap<String,Object>();
		String a=(String)request.getParameter("keyid");
		id=Integer.parseInt(a);
		request.setAttribute("msg", "<script>alert('删除成功');</script>");
		xiangmudao.del(id);
		return selectall(null,map,request);
	}
	/**
	 * 修改xiangmu信息
	 */
	@RequestMapping(value="/update")
	public String update(xiangmu xiangmu,HttpServletRequest request,Map<String,Object> map1){
		Map<String,Object> map= new HashMap<String,Object>();
		map.put("xmid", xiangmu.getXmid());//项目编号

		map.put("xm", xiangmu.getXm());//项目

		map.put("lx", xiangmu.getLx());//类型



		String xmid=(String)xiangmu.getXmid();//项目编号

		String xm=(String)xiangmu.getXm();//项目

		String lx=(String)xiangmu.getLx();//类型

		request.setAttribute("msg", "<script>alert('修改成功');</script>");
		xiangmudao.update(map);
		return selectall(null,map1,request);
	}
	/**
	 * 查询xiangmu信息
	 */
	@RequestMapping(value="/modify")
	public String modify(Integer id,Map<String,Object> map,HttpServletRequest request){
		String keyid=(String)request.getParameter("keyid");
		List<Map<String,Object>> list= new  ArrayList<Map<String,Object>>();
		list=xiangmudao.select(Integer.parseInt(keyid));
		request.setAttribute("xmid", list.get(0).get("xmid"));//项目编号

		request.setAttribute("xm", list.get(0).get("xm"));//项目

		request.setAttribute("lx", list.get(0).get("lx"));//类型

		
		return "xiangmu/xiangmumodify";
	}
	
	@RequestMapping(value="/detail")
	public String detail(Integer id,Map<String,Object> map,HttpServletRequest request){
		String keyid=(String)request.getParameter("keyid");
		List<Map<String,Object>> list= new  ArrayList<Map<String,Object>>();
		list=xiangmudao.select(Integer.parseInt(keyid));
		request.setAttribute("xmid", list.get(0).get("xmid"));//项目编号

		request.setAttribute("xm", list.get(0).get("xm"));//项目

		request.setAttribute("lx", list.get(0).get("lx"));//类型

		return "xiangmu/xiangmudetail";
	}
	
	/**
	 * 查询xiangmu信息
	 */
	@RequestMapping(value="/selectall")
	public String selectall(Integer id,Map<String,Object> map,HttpServletRequest request){
		List<Map<String,Object>> list= new  ArrayList<Map<String,Object>>();
	Map<String,Object> map1= new HashMap<String,Object>();

	String xmid=(String)request.getParameter("xmid");//项目编号
	if(xmid!=null&&!xmid.equals("")){
	map1.put("xmid",xmid);//项目编号
	}
	String xm=(String)request.getParameter("xm");//项目
	if(xm!=null&&!xm.equals("")){
	map1.put("xm",xm);//项目
	}
	String lx=(String)request.getParameter("lx");//类型
	if(lx!=null&&!lx.equals("")){
	map1.put("lx",lx);//类型
	}

		list=xiangmudao.selectAll(map1);
		System.out.println("listsize="+list.size());
		
		map.put("mylist", list);
		return "xiangmu/xiangmulist";
	}
}

4.3 收入 管理 界面

4.4 支出 管理界面

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

相关推荐
mCell5 小时前
如何零成本搭建个人站点
前端·程序员·github
mCell6 小时前
为什么 Memo Code 先做 CLI:以及终端输入框到底有多难搞
前端·设计模式·agent
恋猫de小郭6 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
少云清6 小时前
【安全测试】2_客户端脚本安全测试 _XSS和CSRF
前端·xss·csrf
银烛木6 小时前
黑马程序员前端h5+css3
前端·css·css3
m0_607076607 小时前
CSS3 转换,快手前端面试经验,隔壁都馋哭了
前端·面试·css3
听海边涛声7 小时前
CSS3 图片模糊处理
前端·css·css3
IT、木易7 小时前
css3 backdrop-filter 在移动端 Safari 上导致渲染性能急剧下降的优化方案有哪些?
前端·css3·safari
0思必得07 小时前
[Web自动化] Selenium无头模式
前端·爬虫·selenium·自动化·web自动化
anOnion7 小时前
构建无障碍组件之Dialog Pattern
前端·html·交互设计