当前位置: 首页 > news >正文

家庭财务管理系统【答辩文档】

家庭财务管理系统 - 答辩文档

一、项目概述

1.1 项目名称

FFMS(Family Financial Management System)- 家庭财务管理系统

1.2 项目背景

随着家庭经济活动的日益复杂,家庭成员的收入支出、理财投资、负债管理等财务信息需要一个系统化的管理平台。本系统旨在帮助家庭实现财务信息的集中管理、统计分析,提高家庭财务管理效率和透明度。

1.3 项目目标

  • 实现家庭收支账单的数字化记录与管理
  • 支持多用户协作,区分家庭成员角色权限
  • 提供资产总览、负债管理、理财推荐等功能
  • 生成统计报表,辅助家庭财务决策

1.4 技术栈

技术分类采用技术
后端框架Spring Boot 2.4.5
持久层框架MyBatis 1.3.2
数据库MySQL 8.0
前端模板Thymeleaf
前端框架Layui
构建工具Maven
Java版本JDK 1.8

二、核心功能模块

2.1 用户管理模块

  • 用户注册/登录:支持用户注册和登录,密码采用MD5加密存储
  • 角色权限管理:三种角色(系统管理员、家庭管理员、普通用户)
  • 家庭成员管理:家庭管理员可管理家庭成员信息
  • 密码修改:支持用户修改个人密码

2.2 收支管理模块

  • 收入记录:记录工资、奖金、兼职等各类收入
  • 支出记录:记录日常开销、购物、医疗等支出
  • 账单查询:支持按时间、金额、支付方式等条件筛选
  • 月度统计:按月份汇总收支情况

2.3 账户总览模块

  • 活期资产:查看家庭活期资产余额
  • 理财详情:管理理财产品记录
  • 负债详情:记录房贷、贷款等负债信息
  • 理财推荐:根据风险等级推荐理财产品

2.4 理财管理模块

  • 理财记录:记录银行存储、基金、股票、黄金等投资
  • 收益统计:统计理财收益情况
  • 理财对比:对比不同理财方式的收益

2.5 统计报表模块

  • 收支趋势图:展示收支变化趋势
  • 分类统计:按类别统计收支占比
  • 数据可视化:使用图表直观展示财务数据

2.6 系统管理模块

  • 用户管理:管理系统用户(系统管理员权限)
  • 角色管理:维护角色及其权限配置
  • 权限分配:为角色分配菜单访问权限

三、系统架构

3.1 架构设计

采用经典的三层架构模式:

┌─────────────────────────────────────┐ │ Presentation Layer │ │ (Thymeleaf + Layui + REST API) │ ├─────────────────────────────────────┤ │ Business Layer │ │ (Controller + Service) │ ├─────────────────────────────────────┤ │ Data Access Layer │ │ (MyBatis Mapper + MySQL) │ └─────────────────────────────────────┘

3.2 项目结构

ffms/ ├── src/main/java/com/xust/ffms/ │ ├── FfmsApplication.java # 启动类 │ ├── configs/ # 配置类 │ │ ├── CorsConfig.java # 跨域配置 │ │ ├── SessionInterceptor.java # 会话拦截器 │ │ └── Md5UtilSimple.java # MD5加密工具 │ ├── controller/ # 控制器层 │ │ ├── UserInfoController.java # 用户管理 │ │ ├── BillController.java # 账单管理 │ │ ├── LicaiController.java # 理财管理 │ │ ├── CuraccountController.java # 活期账户 │ │ ├── DebtController.java # 负债管理 │ │ └── MoneyManageController.java# 理财推荐 │ ├── service/ # 服务层接口 │ │ └ impl/ # 服务层实现 │ ├── dao/ # 数据访问层 │ │ ├── UserInfoMapper.java │ │ ├── BillMapper.java │ │ ├── LicaiMapper.java │ │ └── ... │ ├── entity/ # 实体类 │ │ ├── UserInfo.java │ │ ├── Bill.java │ │ ├── Licai.java │ │ ├── Curaccount.java │ │ ├── Debt.java │ │ ├── Product.java │ │ ├── Privilege.java │ │ └── Role.java │ └── utils/ # 工具类 │ ├── Config.java # 系统配置常量 │ ├── Result.java # 统一响应封装 │ ├── ResultUtil.java # 响应工具类 │ ├── PageModel.java # 分页模型 │ └── Utils.java # 通用工具 ├── src/main/resources/ │ ├── application.yml # 应用配置 │ ├── mappers/ # MyBatis映射文件 │ │ ├── UserInfoMapper.xml │ │ ├── BillMapper.xml │ │ ├── LicaiMapper.xml │ │ └── ... │ ├── templates/ # Thymeleaf模板 │ └── static/ # 静态资源 ├── sql/ │ ├── ffms.sql # 数据库脚本 │ └── ffms_sys.sql # 系统数据脚本 └── pom.xml # Maven配置

四、数据库设计

4.1 数据库概览

数据库:ffms_sys(MySQL 8.0)

4.2 核心数据表

表名功能说明
user用户信息表
role角色表
privilege权限表
roleprivilieges角色-权限关联表
house家庭表
bill账单表
type收支类型表
payway支付方式表
curaccount活期资产表
debt负债表
licai理财记录表
licaiway理财方式表
moneymanage理财推荐表
product理财产品表

4.3 主要表结构

用户表(user)
字段名类型说明
idint主键,自增
usernamevarchar(255)登录账号
passwordvarchar(255)密码(MD5加密)
realnamevarchar(255)真实姓名
roleidint角色编号(外键)
houseidint所属家庭编号(外键)
photovarchar(255)用户头像
账单表(bill)
字段名类型说明
idint主键,自增
titlevarchar(255)账单标题
useridint用户ID(外键)
moneyfloat(10,2)金额
typeidint类型:1支出,2收入
remarkvarchar(255)备注
paywayidint支付方式ID(外键)
timedatetime交易时间
理财记录表(licai)
字段名类型说明
idint主键,自增
titlevarchar(255)理财标题
useridint用户ID
moneyfloat(99,2)金额
typeidint类型:3收入,4支出
licaiwayidint理财方式ID
timedatetime交易时间

4.4 ER关系图

┌────────┐ ┌────────┐ ┌──────────────┐ │ user │────▶│ role │────▶│roleprivilieges│ └────────┘ └────────┘ └──────────────┘ │ │ │ ▼ │ ┌──────────┐ │ │privilege │ │ └──────────┘ ▼ ┌────────┐ ┌────────┐ │ house │◀────│ bill │ └────────┘ └────────┘ │ │ ▼ ▼ ┌──────────┐ ┌────────┐ ┌────────┐ │curaccount│ │ payway │ │ type │ └──────────┘ └────────┘ └────────┘

五、角色权限设计

5.1 角色定义

角色ID角色名称权限范围
1系统管理员全系统权限,包括用户管理、角色管理
2家庭管理员管理本家庭所有成员和财务信息
3普通用户仅查看和管理个人财务信息

5.2 权限菜单

权限编号权限名称菜单级别
001收支管理一级菜单
001001收入详情二级菜单
001002支出详情二级菜单
002账户总览一级菜单
002001活期资产二级菜单
002002理财详情二级菜单
002003负债详情二级菜单
002004理财推荐二级菜单
003统计报表一级菜单
004家庭成员管理一级菜单
005系统管理一级菜单

六、答辩问答要点

6.1 技术相关问题

Q1: 为什么选择Spring Boot作为后端框架?

  • Spring Boot简化了Spring应用的配置,提供自动配置机制
  • 内置Tomcat服务器,无需部署WAR包即可运行
  • 与MyBatis整合方便,开发效率高
  • 适合快速开发中小型项目

Q2: 项目如何实现用户权限控制?

  • 采用RBAC(基于角色的访问控制)模型
  • 用户-角色-权限三级关联
  • SessionInterceptor拦截器验证用户登录状态
  • 根据用户角色动态加载菜单权限

Q3: MyBatis相比Hibernate有什么优势?

  • SQL语句灵活,适合复杂查询场景
  • 支持动态SQL,便于多条件查询
  • 与数据库交互更直接,性能可控
  • 学习成本低,配置简单

Q4: 前端采用什么技术方案?

  • Thymeleaf模板引擎实现页面渲染
  • Layui前端框架提供UI组件
  • RESTful API与后端交互
  • AJAX实现异步数据加载

6.2 业务相关问题

Q5: 系统如何区分家庭成员的数据权限?

  • 家庭管理员(roleid=2)可查看全家财务数据
  • 普通用户(roleid=3)仅能查看个人数据
  • 通过houseid字段关联家庭成员
  • 查询时根据角色动态设置过滤条件

Q6: 账单添加时如何同步更新活期资产?

  • BillServiceImpl的add方法中自动更新Curaccount
  • 收入时增加活期资产,支出时减少活期资产
  • 若用户无活期资产记录则自动创建
  • 保证数据一致性

Q7: 理财推荐功能如何实现?

  • Product表存储理财产品信息
  • 包含风险等级(R1-R5)、风险描述、亏损概率
  • 用户可根据风险偏好选择合适产品
  • 支持产品增删改查管理

Q8: 统计报表的数据来源是什么?

  • 从bill表和licai表聚合统计数据
  • 按时间范围、收支类型分组查询
  • 使用MyBatis的聚合函数(SUM、COUNT)
  • 返回JSON数据供前端图表渲染

6.3 安全相关问题

Q9: 系统如何保证用户密码安全?

  • 密码采用MD5加密存储
  • 登录验证时对比加密后的密文
  • 不在响应中返回密码信息
  • 支持密码修改功能

Q10: 如何防止未登录用户访问系统?

  • SessionInterceptor拦截所有请求
  • 检查Session中是否存在用户信息
  • 未登录则重定向到登录页面
  • 支持Cookie实现短期免登录

6.4 项目亮点

  1. 角色权限设计完善:三级角色体系满足不同用户需求
  2. 数据权限隔离:家庭数据与个人数据隔离清晰
  3. 资产联动更新:账单与活期资产自动同步
  4. 理财推荐功能:提供风险分级的产品推荐
  5. 统计图表展示:直观呈现财务数据分析结果

七、系统运行说明

7.1 环境要求

  • JDK 1.8+
  • MySQL 8.0+
  • Maven 3.x

7.2 启动步骤

  1. 创建数据库并导入sql/ffms_sys.sql
  2. 修改application.yml中的数据库连接配置
  3. 执行mvn spring-boot:run启动项目
  4. 访问http://localhost:8080进入系统

7.3 默认账号

账号密码角色
admin123456系统管理员
mother123456家庭管理员

八、总结

本项目是一个完整的家庭财务管理解决方案,涵盖了收支管理、资产管理、理财管理、统计分析等核心功能。系统采用Spring Boot+MyBatis+Thymeleaf技术栈,实现了用户权限控制、数据隔离、资产联动等关键特性,适合家庭财务管理场景的实际应用。

http://www.jsqmd.com/news/762300/

相关文章:

  • 提升开发效率:用快马平台打造智能ccswitch代理管理工具
  • AI驱动的3D室内场景生成技术SPATIALGEN解析
  • TiDAR架构:扩散与自回归模型的深度并行融合
  • SHAMISA:自监督无参考图像质量评估技术解析
  • PHP类型校验的“瑞士军刀”:1个trait搞定DTO验证、API入参过滤、数据库写入前强制类型归一化(含GitHub Star 2.4k开源组件深度解析)
  • 环境配置与基础教程:26届秋招避坑:熟悉 PyTorch 的 Profiler 性能瓶颈分析工具,精准找出 YOLO 训练过程的耗时热点
  • 基于MCP协议与Loom GraphQL API,构建AI视频内容管理自动化工作流
  • 手把手教你用示波器抓取LPDDR4的Read时序:从tDQSCK到tDQSQ的实战测量指南
  • 萌新游戏开发记录——AI开发和游戏框架学习(三)
  • 从SystemVerilog的Mailbox到UVM TLM:手把手教你重构一个可重用的验证组件通信层
  • 新手避坑指南:STM32F103C8T6自制板烧录失败,我踩过的那些硬件坑(附解决方案)
  • 开源提示词库:工程化AI协作,提升LLM输出质量与效率
  • m4s-converter:B站视频缓存格式的工程化转换解决方案
  • 别再盲目开opcache.jit=1235!PHP 8.9 JIT真实场景吞吐量拐点分析——37组AB压测数据告诉你何时该关
  • Python 开发者如何通过 OpenAI 兼容协议快速接入 Taotoken 多模型服务
  • 视频事件预测:基于事件链的视觉注意力增强方法
  • linux实现双网卡负载均衡 ——企业高可用网络方案与实践
  • 实战应用:基于快马平台构建可部署的智能故障诊断宏智树系统
  • 出版物印刷装订生产厂性价比高的有哪些? - mypinpai
  • 基于Supabase与ChatGPT构建智能文档问答系统的RAG实战指南
  • 视觉语言模型与物理世界预测的融合实践
  • LLM与AIGC开源项目导航:从模型选型到应用落地的全栈指南
  • 解锁多语言游戏世界:XUnity.AutoTranslator深度配置与实战指南
  • KMS智能激活工具终极指南:如何永久解决Windows和Office激活问题
  • 零基础入门:借助快马生成的指导代码在ubuntu上轻松安装openclaw
  • UniWeTok:统一多模态二进制分词器的设计与实践
  • Python 爬虫反爬突破:动态密钥定期更新自动同步
  • Anki自动化制卡:Python脚本实现语言学习闪卡批量生成
  • 哔哩下载姬DownKyi终极指南:如何轻松下载B站8K超清视频
  • 游戏语言障碍终结者:XUnity.AutoTranslator让外文游戏秒变中文