1. 项目背景与核心价值
家庭财务管理一直是现代都市人群的刚需痛点。根据2023年某第三方调研数据显示,超过78%的双职工家庭存在"钱不知道花哪儿去了"的困惑,而传统记账软件往往功能单一、数据孤立。这个基于SSM+Vue的毕设项目,正是瞄准了这个细分场景的技术解决方案。
我去年指导过类似课题的学生,发现这类系统最核心的价值在于三点:第一是打通消费记录与资产变化的关联分析,第二是提供可视化的财务健康度评估,第三是支持多终端协同操作。这比单纯记录流水账的APP有更强的实用价值。
2. 技术架构设计解析
2.1 后端技术选型
采用SSM(Spring+SpringMVC+MyBatis)框架组合,这个经典搭配在2023年Java生态圈仍占据35%的企业级应用市场。特别说明选择理由:
- Spring的IoC容器管理服务层组件,用@Transactional注解处理财务数据的事务一致性
- MyBatis的动态SQL能力适合处理多条件组合的账单查询(日期范围+消费类型+金额区间)
- 用Spring Schedule实现定时生成月度报表的功能
2.2 前端技术方案
Vue 3.x + Element Plus的组合在管理类系统中优势明显:
- 用ECharts实现收支趋势热力图、消费占比玫瑰图等复杂可视化
- 基于Vuex的状态管理处理多页面共享的账户余额数据
- 采用axios拦截器统一处理401认证过期情况
关键提示:一定要配置跨域白名单,特别是当后端API与前端开发服务器端口不同时。建议在Spring MVC配置类中添加CorsFilter。
3. 核心功能实现细节
3.1 账单流水处理模块
数据库设计采用"主表+明细表"结构:
sql复制CREATE TABLE `t_bill` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`user_id` BIGINT NOT NULL COMMENT '关联用户',
`bill_date` DATE NOT NULL COMMENT '记账日期',
`total_amount` DECIMAL(12,2) NOT NULL COMMENT '总金额'
);
CREATE TABLE `t_bill_detail` (
`id` BIGINT PRIMARY KEY,
`bill_id` BIGINT NOT NULL COMMENT '主表ID',
`category_id` INT NOT NULL COMMENT '消费分类',
`amount` DECIMAL(10,2) NOT NULL,
`remark` VARCHAR(200) DEFAULT NULL
);
后端处理逻辑要注意:
- 使用MyBatis的@Options注解获取插入后的主键ID
- 金额计算使用BigDecimal避免浮点精度问题
- 添加@Validated注解进行参数校验
3.2 财务健康度评估算法
设计了一套包含5个维度的评估体系:
- 收支比(月收入/月支出)
- 应急储备(流动资产/月支出)
- 负债率(负债总额/总资产)
- 投资占比(投资金额/可支配收入)
- 消费结构合理性(必要消费占比)
前端用雷达图可视化展示,关键代码:
javascript复制const option = {
radar: {
indicator: [
{ name: '收支比', max: 3 },
{ name: '应急储备', max: 6 },
{ name: '负债率', max: 1 },
{ name: '投资占比', max: 0.5 },
{ name: '必要消费', max: 0.7 }
]
},
series: [{
type: 'radar',
data: [{ value: [2.1, 4.5, 0.3, 0.2, 0.6] }]
}]
}
4. 开发中的典型问题
4.1 账单导入的并发问题
当用户批量导入Excel账单时,可能出现重复记账。解决方案:
- 在Service层添加@Transactional(isolation=Isolation.SERIALIZABLE)
- 对账单日期+金额+备注建立唯一索引
- 前端上传前先用SparkMD5计算文件指纹
4.2 可视化性能优化
当账单数据超过1万条时,前端渲染会出现卡顿。我们采用:
- 后端分页查询(PageHelper插件)
- 对ECharts开启渐进式渲染(progressive: 1000)
- 使用Web Worker处理大数据量的计算
5. 扩展功能建议
如果想提升项目竞争力,可以考虑:
- 增加OCR识别发票功能(需集成百度AI接口)
- 实现家庭多成员权限管理(RBAC模型)
- 添加财务目标追踪功能(如购房基金进度)
- 开发移动端小程序版本(Uniapp跨端方案)
6. 论文写作要点
技术类毕业论文要突出:
- 系统架构图(用PlantUML绘制类图与时序图)
- 核心算法伪代码(如财务健康度计算公式)
- 性能测试对比(JMeter压测报告)
- 用户体验改进(基于A/B测试的界面优化)
重要提醒:数据库设计部分一定要包含ER图,并说明符合第几范式。系统安全方面要提及XSS防护(前端用DOMPurify过滤)和SQL注入预防(MyBatis使用#{}占位符)。