1. 项目背景与核心需求
去年帮朋友做家庭财务审计时,发现他们还在用Excel记录收支,经常出现漏记、错记的情况。这让我意识到,开发一款移动端家庭财务管理系统确实存在真实需求。基于Java技术栈实现的这款APP,核心要解决三个痛点:
- 数据碎片化问题:传统记账方式分散在多个平台(现金、银行卡、电子支付),需要手工汇总
- 时效性问题:线下记账容易遗忘或延迟记录,导致数据不准确
- 分析维度单一:Excel难以实现多维度统计分析和可视化呈现
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体技术选型
采用B/S架构的混合开发模式:
- 前端:JavaFX + CSS3(兼顾跨平台和原生体验)
- 后端:Spring Boot 2.7 + MyBatis Plus(快速开发)
- 数据库:MySQL 8.0(事务支持完善)
- 部署:Tomcat 9 + Nginx(负载均衡)
特别说明:没有选用APP主流框架如Flutter,主要考虑:
- 毕业设计需要展示Java核心技术能力
- 家庭财务场景对性能要求不高
- 降低学习成本(学生已有Java基础)
2.2 关键架构决策
2.2.1 数据同步方案
采用增量同步策略解决移动端网络不稳定问题:
java复制// 同步核心逻辑示例
public SyncResult syncData(LocalDateTime lastSyncTime) {
// 1. 获取本地新增/修改记录
List<Transaction> localChanges = transactionDao.getChangesAfter(lastSyncTime);
// 2. 与服务端比对冲突
SyncResult result = syncService.compareChanges(localChanges);
// 3. 处理冲突(采用最后修改优先策略)
if (result.hasConflict()) {
conflictResolver.resolve(result);
}
// 4. 更新同步状态
syncLogService.recordSync(result);
return result;
}
2.2.2 性能优化措施
- 二级缓存配置:
yaml复制# application.yml
mybatis-plus:
configuration:
cache-enabled: true
local-cache-scope: session
- 账单列表分页查询优化:
sql复制/* 使用覆盖索引避免回表 */
CREATE INDEX idx_user_date ON transaction(user_id, transaction_date, amount)
3. 核心功能实现
3.1 智能记账模块
3.1.1 账单自动分类
通过关键词匹配实现自动分类:
java复制public Category autoDete
