zty42/team-expense-tracker

★ 0Forks 0TypeScriptGitHub ↗Compare

README

团队记账应用

一个功能完整的团队记账应用,用于管理团队项目(如旅游、团建)的费用支出和结算。

✨ 功能特性

📋 核心功能

  • 项目管理

    • 创建和管理多个记账项目
    • 项目状态管理(进行中/已完成)
    • 已完成项目自动锁定,防止误操作
  • 成员管理

    • 添加/编辑/删除团队成员
    • 自定义成员头像(emoji)
    • 成员信息持久化存储
  • 分类管理

    • 6个预置分类:餐饮🍜、交通🚗、住宿🏨、娱乐🎮、购物🛍️、其他📝
    • 支持添加自定义分类
    • 自定义分类图标和颜色
  • 账单管理

    • 记录每笔账单的详细信息
    • 支持多人参与,费用自动平均分摊
    • 单付款人模式,清晰记录谁付了钱
    • 账单包含:金额、分类、付款人、参与人、日期、备注
  • 统计分析

    • 总消费金额统计
    • 人均消费计算
    • 分类消费占比(饼图展示)
    • 成员消费排行(柱状图展示)
    • 每个人的支付和消费明细
  • 智能结算 🎯

    • 使用贪心算法计算最优结算方案
    • 最少转账次数,简化结算流程
    • 清晰展示谁应该给谁转账多少钱
    • 自动计算每个人的收支余额

🎨 用户体验

  • 响应式设计,支持桌面和移动端
  • 直观的用户界面
  • 流畅的页面导航
  • 实时数据更新
  • 示例数据快速上手

🛠️ 技术栈

  • 前端框架: React 18 + TypeScript
  • 构建工具: Vite
  • 包管理: pnpm
  • UI框架: Tailwind CSS v4 + shadcn/ui 风格组件
  • 状态管理: Zustand
  • 路由: React Router v6
  • 图表: Recharts
  • 日期处理: date-fns
  • 数据存储: localStorage(纯前端,无需后端)

📦 快速开始

安装依赖

pnpm install

开发模式

pnpm run dev

访问 http://localhost:5173 查看应用

生产构建

pnpm run build

预览生产版本

pnpm run preview

📁 项目结构

src/
├── components/          # 可复用组件
│   ├── ui/              # UI 基础组件
│   ├── layout/          # 布局组件
│   └── ...              # 功能组件
├── pages/               # 页面组件
├── stores/              # Zustand 状态管理
├── types/               # TypeScript 类型定义
├── utils/               # 工具函数
└── data/                # 示例数据

🎯 核心算法

智能结算算法(贪心算法)

该应用实现了一个高效的结算算法,能够用最少的转账次数完成团队账单的结算。

算法思路:

  1. 计算每个人的净余额(已付 - 应付)
  2. 将成员分为两组:债权人和债务人
  3. 贪心匹配:每次让最大债权人和最大债务人结算
  4. 重复直到所有余额归零

时间复杂度: O(n log n)

💡 使用指南

1. 创建项目

  • 在首页点击"新建项目"
  • 输入项目名称和描述

2. 添加成员

  • 点击导航栏的"成员"
  • 添加团队成员信息

3. 记账

  • 进入项目详情
  • 在"账单管理"添加账单
  • 填写金额、分类、付款人、参与人等信息

4. 查看统计

  • 在"统计分析"查看消费分布和排行

5. 智能结算

  • 在"智能结算"查看最优转账方案

🔒 数据存储

  • 所有数据存储在浏览器 localStorage
  • 纯前端应用,无需后端
  • 首次打开自动初始化示例数据

注意:清除浏览器数据会导致数据丢失

🚀 未来扩展

  • 数据导出(Excel/CSV)
  • 多币种支持
  • 图片上传
  • 云端同步
  • PWA支持
  • 深色模式

📄 许可证

MIT License


享受团队记账的便利! 🎉

Issues