欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

让每一分钱都有归处

收支分析 · 理财建议 · 家庭财务管家


一、应用概述

运行效果图

image-20260408222905130

image-20260408222910244

image-20260408222914484

image-20260408222918283

image-20260408222922427

1.1 产品定位

家庭财务规划是一款帮助家庭进行全面财务管理的工具应用。通过记录收支、分析消费习惯、提供理财建议,帮助用户实现财务目标,让家庭财富稳健增长。

1.2 核心价值

家庭财务规划

收支管理

收入记录

支出追踪

分类统计

财务分析

消费趋势

收支对比

预算执行

理财建议

储蓄规划

投资建议

风险评估

目标追踪

储蓄目标

债务管理

财务自由

1.3 功能架构

家庭财务规划

收支记录

财务分析

理财建议

目标管理

添加收入

添加支出

交易记录

收支统计

分类分析

趋势图表

储蓄建议

投资建议

风险提示

储蓄目标

债务追踪

财务自由度


二、数据模型设计

2.1 收支类型枚举

应用支持多种收支类型分类:

类型 图标 颜色 描述 典型场景
工资收入 💰 #4CAF50 固定薪资收入 月薪、年终奖
兼职收入 💼 #2196F3 额外劳动收入 兼职、外包
投资收益 📈 #9C27B0 投资回报收入 股息、基金收益
生活支出 🏠 #F44336 日常开销 房租、水电
餐饮支出 🍜 #FF9800 饮食消费 外卖、聚餐
交通支出 🚗 #00BCD4 出行费用 加油、打车
购物支出 🛒 #E91E63 商品购买 日用品、服饰
娱乐支出 🎮 #673AB7 休闲消费 游戏、电影
医疗支出 🏥 #795548 健康支出 看病、买药
教育支出 📚 #3F51B5 学习投资 课程、书籍

2.2 核心数据模型

class Transaction {
  final String id;
  final TransactionType type;
  final TransactionCategory category;
  final double amount;
  final String description;
  final DateTime date;
  final String? member;
  final List<String> tags;
}

class Budget {
  final String id;
  final String name;
  final TransactionCategory category;
  final double limit;
  final double spent;
  final DateTime startDate;
  final DateTime endDate;
}

class SavingsGoal {
  final String id;
  final String name;
  final double targetAmount;
  final double currentAmount;
  final DateTime deadline;
  final GoalPriority priority;
}

class FinancialAdvice {
  final String id;
  final AdviceType type;
  final String title;
  final String content;
  final double relevance;
  final List<String> actionItems;
}

2.3 理财建议类型

类型 图标 描述 触发条件
储蓄建议 🐷 优化储蓄策略 储蓄率低于20%
消费预警 ⚠️ 超支提醒 支出超过预算
投资建议 📊 资产配置建议 有闲置资金
风险提示 🛡️ 财务风险预警 应急储备不足
目标激励 🎯 目标进度提醒 接近目标期限

三、界面设计

3.1 页面结构

首页仪表盘

收支记录

财务分析

理财建议

目标管理

3.2 首页仪表盘

仪表盘

总资产卡片

本月收支

预算进度

最近交易

快速操作

核心组件:

组件 功能 交互
资产总览 显示总资产、负债、净值 点击查看详情
收支概览 本月收入/支出/结余 滑动切换月份
预算进度 各分类预算执行情况 点击进入预算管理
最近交易 最近5笔交易记录 点击查看全部
快速记账 一键添加收支 弹出记账表单

3.3 收支记录页

数据库 应用 用户 数据库 应用 用户 点击添加按钮 显示记账表单 填写信息并提交 保存交易记录 返回保存结果 显示成功提示 更新统计数据

3.4 财务分析页

分析维度:

35% 25% 15% 10% 10% 5% 支出分类占比 生活支出 餐饮支出 购物支出 交通支出 娱乐支出 其他

3.5 理财建议页

建议展示结构:

┌─────────────────────────────────────┐
│  📊 投资建议                        │
│  ─────────────────────────────────  │
│  根据您的财务状况,建议将闲置资金   │
│  分配到以下渠道:                   │
│                                     │
│  • 货币基金: 30% (应急储备)         │
│  • 债券基金: 40% (稳健增值)         │
│  • 股票基金: 30% (长期投资)         │
│                                     │
│  [查看详细建议] [忽略]              │
└─────────────────────────────────────┘

四、核心功能实现

4.1 收支记录功能

void addTransaction({
  required TransactionType type,
  required TransactionCategory category,
  required double amount,
  required String description,
  String? member,
  List<String> tags = const [],
}) {
  final transaction = Transaction(
    id: 'txn_${DateTime.now().millisecondsSinceEpoch}',
    type: type,
    category: category,
    amount: amount,
    description: description,
    date: DateTime.now(),
    member: member,
    tags: tags,
  );
  
  _transactions.insert(0, transaction);
  _updateStatistics();
  _generateAdvice();
}

4.2 财务分析算法

收支结余计算:

结余 = ∑ i = 1 n 收入 i − ∑ j = 1 m 支出 j \text{结余} = \sum_{i=1}^{n} \text{收入}_i - \sum_{j=1}^{m} \text{支出}_j 结余=i=1n收入ij=1m支出j

储蓄率计算:

储蓄率 = 结余 总收入 × 100 % \text{储蓄率} = \frac{\text{结余}}{\text{总收入}} \times 100\% 储蓄率=总收入结余×100%

财务自由度:

财务自由度 = 被动收入 总支出 × 100 % \text{财务自由度} = \frac{\text{被动收入}}{\text{总支出}} \times 100\% 财务自由度=总支出被动收入×100%

4.3 智能建议生成

List<FinancialAdvice> generateAdvice() {
  final advice = <FinancialAdvice>[];
  
  final savingsRate = _calculateSavingsRate();
  if (savingsRate < 0.2) {
    advice.add(FinancialAdvice(
      type: AdviceType.savings,
      title: '储蓄率偏低',
      content: '建议将储蓄率提升至20%以上...',
      relevance: 0.9,
    ));
  }
  
  final emergencyFund = _calculateEmergencyFund();
  if (emergencyFund < 3) {
    advice.add(FinancialAdvice(
      type: AdviceType.risk,
      title: '应急储备不足',
      content: '建议保持3-6个月支出的应急储备...',
      relevance: 0.85,
    ));
  }
  
  return advice..sort((a, b) => b.relevance.compareTo(a.relevance));
}

五、数据可视化

5.1 收支趋势图

2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 工资收入 兼职收入 生活支出 餐饮支出 投资收益 其他支出 收入 支出 月度收支趋势

5.2 预算执行进度

生活支出  ████████████░░░░░░░░  60%  ¥6,000/¥10,000
餐饮支出  ████████████████░░░░  80%  ¥2,400/¥3,000
交通支出  ██████░░░░░░░░░░░░░░  30%  ¥600/¥2,000
购物支出  ████████████████████  100% ¥2,000/¥2,000 ⚠️
娱乐支出  ████░░░░░░░░░░░░░░░░  20%  ¥400/¥2,000

5.3 资产配置饼图

class AssetAllocationChart extends CustomPainter {
  
  void paint(Canvas canvas, Size size) {
    final allocations = [
      ('现金', 0.3, Colors.green),
      ('基金', 0.4, Colors.blue),
      ('股票', 0.2, Colors.purple),
      ('其他', 0.1, Colors.orange),
    ];
    
    _drawPieChart(canvas, size, allocations);
    _drawLegend(canvas, size, allocations);
  }
}

六、家庭财务管理

6.1 家庭成员管理

enum FamilyRole {
  owner('户主', '👑', Color(0xFFFFD700)),
  spouse('配偶', '💑', Color(0xFFE91E63)),
  child('子女', '👶', Color(0xFF00BCD4)),
  parent('父母', '👴', Color(0xFF9C27B0)),
  other('其他', '👤', Color(0xFF607D8B));
}

6.2 共享账本功能

创建家庭

邀请成员

成员加入

共享账本

协同记账

合并统计

6.3 权限管理

角色 记账权限 查看权限 管理权限
户主 ✅ 全部 ✅ 全部 ✅ 全部
配偶 ✅ 全部 ✅ 全部 ❌ 无
子女 ✅ 个人 ✅ 个人 ❌ 无
父母 ✅ 个人 ✅ 全部 ❌ 无

七、目标管理功能

7.1 储蓄目标

class SavingsGoal {
  final String id;
  final String name;
  final double targetAmount;
  final double currentAmount;
  final DateTime deadline;
  final GoalPriority priority;
  final GoalStatus status;
  
  double get progress => currentAmount / targetAmount;
  int get remainingDays => deadline.difference(DateTime.now()).inDays;
  double get dailySavingsNeeded => 
    (targetAmount - currentAmount) / remainingDays.clamp(1, double.infinity);
}

7.2 目标优先级

优先级 图标 描述 建议占比
紧急 🔴 应急储备、债务偿还 30%
重要 🟡 教育、医疗储备 40%
一般 🟢 旅行、大件购买 20%
梦想 🔵 财务自由、提前退休 10%

7.3 目标进度追踪

设定目标

分配资金

定期存入

进度追踪

达成目标?

庆祝成功

调整计划


八、智能提醒功能

8.1 提醒类型

提醒类型 触发条件 提醒内容
预算预警 支出达80% 该分类预算即将用完
账单提醒 固定日期 信用卡/房贷还款日
目标提醒 定期存入 本周储蓄目标未完成
异常提醒 大额支出 检测到异常消费
周报提醒 每周一次 本周财务总结

8.2 提醒设置

class ReminderSetting {
  final ReminderType type;
  final bool enabled;
  final int threshold;
  final List<int> notifyDays;
  final TimeOfDay notifyTime;
}

九、数据安全

9.1 安全措施

数据安全

本地加密

访问控制

备份恢复

AES-256加密

安全存储

密码保护

生物识别

云端备份

本地导出

9.2 隐私保护

  • 所有数据本地存储,不上传敏感信息
  • 支持数据脱敏导出
  • 可设置应用访问密码
  • 支持指纹/面容解锁

十、技术实现细节

10.1 状态管理

class FinancialState extends ChangeNotifier {
  List<Transaction> _transactions = [];
  List<Budget> _budgets = [];
  List<SavingsGoal> _goals = [];
  List<FinancialAdvice> _advice = [];
  
  double _totalIncome = 0;
  double _totalExpense = 0;
  double _totalAssets = 0;
  
  void addTransaction(Transaction txn) {
    _transactions.insert(0, txn);
    _recalculate();
    notifyListeners();
  }
  
  void _recalculate() {
    _totalIncome = _transactions
      .where((t) => t.type == TransactionType.income)
      .fold(0, (sum, t) => sum + t.amount);
    
    _totalExpense = _transactions
      .where((t) => t.type == TransactionType.expense)
      .fold(0, (sum, t) => sum + t.amount);
    
    _totalAssets = _totalIncome - _totalExpense;
    _generateAdvice();
  }
}

10.2 数据持久化

class FinancialDataService {
  static const String _transactionsKey = 'transactions';
  static const String _budgetsKey = 'budgets';
  static const String _goalsKey = 'goals';
  
  Future<void> saveTransactions(List<Transaction> transactions) async {
    final jsonList = transactions.map((t) => t.toJson()).toList();
    await _storage.write(_transactionsKey, jsonEncode(jsonList));
  }
  
  Future<List<Transaction>> loadTransactions() async {
    final jsonString = await _storage.read(_transactionsKey);
    if (jsonString == null) return [];
    final jsonList = jsonDecode(jsonString) as List;
    return jsonList.map((j) => Transaction.fromJson(j)).toList();
  }
}

十一、应用截图示意

11.1 首页仪表盘

┌─────────────────────────────────────┐
│  家庭财务规划              👤 ⚙️    │
├─────────────────────────────────────┤
│  ┌─────────────────────────────┐   │
│  │    💰 总资产                │   │
│  │    ¥ 128,500.00            │   │
│  │    ↑ +3.2% 本月            │   │
│  └─────────────────────────────┘   │
│                                     │
│  本月收支                          │
│  ┌──────────┐  ┌──────────┐       │
│  │ 收入     │  │ 支出     │       │
│  │ ¥15,000  │  │ ¥8,500   │       │
│  └──────────┘  └──────────┘       │
│                                     │
│  预算进度                    查看全部 │
│  生活 ████████░░ 80%              │
│  餐饮 ██████░░░░ 60%              │
│                                     │
│  最近交易                          │
│  🍜 午餐        -¥35    今天        │
│  🚗 加油        -¥300   昨天        │
│  💰 工资        +¥15,000  3天前     │
└─────────────────────────────────────┘
│  📊记录  📈分析  💡建议  🎯目标    │
└─────────────────────────────────────┘

11.2 记账页面

┌─────────────────────────────────────┐
│  ← 添加记录                         │
├─────────────────────────────────────┤
│  ┌─────────┐  ┌─────────┐          │
│  │  支出   │  │  收入   │          │
│  └─────────┘  └─────────┘          │
│                                     │
│  ¥ 0.00                            │
│  ─────────────────────────────────  │
│                                     │
│  选择分类                           │
│  🏠生活  🍜餐饮  🚗交通  🛒购物     │
│  🎮娱乐  🏥医疗  📚教育  📦其他     │
│                                     │
│  备注                               │
│  ┌─────────────────────────────┐   │
│  │ 输入备注信息...              │   │
│  └─────────────────────────────┘   │
│                                     │
│  日期        成员                   │
│  2024-01-15  👤 我                  │
│                                     │
│  ┌─────────────────────────────┐   │
│  │         保 存               │   │
│  └─────────────────────────────┘   │
└─────────────────────────────────────┘

十二、后续规划

12.1 功能迭代

版本 功能 状态
v1.0 基础记账、统计分析 ✅ 已完成
v1.1 预算管理、目标追踪 🚧 开发中
v1.2 家庭共享、多账本 📋 计划中
v1.3 智能建议、AI分析 📋 计划中
v2.0 投资管理、资产配置 📋 计划中

12.2 技术优化

  • 数据云端同步
  • 多设备支持
  • 数据导入导出
  • 智能分类识别
  • 语音记账功能

让理财变得简单,让生活更有规划

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐