Richard Liu’s Blog
首页
搜索
友情链接
往期整理
  •   历史归档
  •   文章分类
  •   文章标签
关于我
Richard Liu
Article
19
Category
4
Tags
8
首页
搜索
友情链接
往期整理
历史归档
文章分类
文章标签
关于我
技术分享
QuickAccounting 快速记账系统
Post on: 2025-1-14
Last edited: 2025-1-14
Views
开发
type
status
date
slug
summary
tags
category
icon
password
QuickAccounting
RichardLiuda • Updated Jan 14, 2025

QuickAccounting 快速记账系统产品文档

目录

  • 一、产品概述
  • 二、产品功能介绍
  • 三、程序概要设计
  • 四、软件架构设计
  • 五、技术亮点及实现原理
  • 六、部署说明

一、产品概述

QuickAccounting 是一款现代化的个人记账应用,采用 iOS + Python 技术栈开发,致力于为用户提供简单、高效、可靠的记账解决方案。本系统采用前后端分离架构,具有良好的扩展性和维护性。

1.1 设计理念

  • 简洁直观:遵循 iOS 设计规范,提供清晰的用户界面
  • 高效便捷:快速记录日常收支,一键生成统计报表
  • 安全可靠:本地数据库存储,确保数据安全性
  • 可扩展性:模块化设计,支持功能扩展

1.2 技术栈

  • 前端:SwiftUI、Combine Framework
  • 后端:Python FastAPI、SQLite
  • 架构:MVVM、RESTful API

二、产品功能介绍

2.1 核心功能模块

2.1.1 记账管理

  • 快速记账
    • 支持收入/支出记录
    • 自定义金额、分类、描述
    • 自动记录交易时间
    • 支持修改历史记录

2.1.2 分类管理

  • 支出类别
    • 餐饮:日常饮食支出
    • 交通:公共交通、打车等
    • 购物:日用品、衣物等
    • 娱乐:休闲娱乐支出
    • 其他:未分类支出
  • 收入类别
    • 工资:固定工资收入
    • 生活费:家庭生活费
    • 其他收入:临时收入等

2.1.3 统计分析

  • 多维度统计
    • 支持年度统计
    • 支持月度统计
    • 支持日统计
  • 数据可视化
    • 统计卡片展示
      • 收入卡片:绿色系配色,显示总收入
      • 支出卡片:红色系配色,显示总支出
      • 结余卡片:蓝/红色系配色(根据正负值),显示净额
    • 交易记录列表
      • 时间倒序排列
      • 支持滚动浏览
      • 包含金额、类型、描述等详细信息
    • 交互式筛选
      • 年/月/日维度切换
      • 日期选择器
    • 动态效果
      • 数据加载动画
      • 卡片淡入动画
      • 列表项滑入动画
      • 错误提示动画

2.1.4 系统设置

  • 服务器配置
    • 服务器地址设置(支持自定义 Host)
    • 端口号配置(支持自定义端口)
    • 实时显示当前完整服务器 URL
  • 界面交互
    • 表单式设置界面
    • 键盘类型优化
      • URL 输入优化
      • 数字键盘支持
    • 自动大小写处理
  • 设置持久化
    • 基于 UserDefaults 的设置存储
    • 应用重启后自动恢复配置
    • 实时保存设置更改

2.2 用户界面

2.2.1 界面结构

  • 底部标签栏
    • 提供记账页面和静态页面的切换
    • notion image
  • 记账页面
    • 提供快速记账功能
    • 用户可以通过简单的表单输入记录收入和支出
    • 支持自定义金额、分类和备注
    • notion image
  • 统计页面
    • 展示数据统计信息
    • 用户可以查看不同时间周期的收支情况
    • 通过图表和卡片形式直观展示
    • notion image
  • 顶部导航栏
    • 页面标题显示
    • 右侧功能按钮
      • 统计页面
        • 刷新按钮
        • 设置按钮,便于用户更新数据和调整设置
        • notion image
      • 记账页面
        • 设置按钮,提供快速访问应用配置的入口
        • notion image
  • 设置界面
    • 以模态方式呈现
    • 包含服务器配置选项
    • 顶部显示"完成"按钮

2.2.2 交互设计

  • 记账页面交互
    • 表单输入优化
      • 金额输入自动聚焦
      • 分类快速选择
      • notion image
    • 提交反馈
      • 成功提示动画
      • notion image
      • 错误提示信息
      • notion image
      • 自动清空表单
  • 统计页面交互
    • 时间筛选
      • 年/月/日切换
      • notion image
      • 日期选择器显示/隐藏
      • notion image
    • 数据刷新
      • 刷新按钮
      • notion image
      • 加载状态提示
      • notion image
    • 交易记录操作
      • 长按删除功能
      • notion image
      • 删除后自动刷新
  • 设置页面交互
    • 输入优化
      • URL 格式验证
    • 实时预览
      • 完整服务器地址显示
    • 保存机制
      • 自动保存
      • 即时生效

三、程序概要设计

3.1 前端模块设计

3.1.1 视图层

主视图采用 TabView 实现底部标签导航,通过 StateObject 管理视图状态:
主要特点:
  1. 状态管理
      • 使用 @StateObject 确保视图模型的生命周期
      • 使用 @State 管理标签页选择状态
      • 支持双向绑定的数据刷新机制
  1. 导航结构
      • TabView 实现底部标签导航
      • NavigationView 提供页面导航能力
      • 标签页独立配置和样式
  1. 界面组织
      • 记账表单和统计视图分离
      • 统一的导航风格
      • 清晰的视图层次
  1. 交互设计
      • 标签页切换
      • 导航栈管理
      • 状态同步更新

3.1.2 数据模型

核心数据模型设计,支持 JSON 编解码和唯一标识:

3.1.3 网络层

  • API 请求封装
  • 错误处理机制
  • 数据序列化

3.2 后端模块设计

3.2.1 API 接口设计

FastAPI 后端接口实现,支持异步操作:

3.2.2 数据库设计

  • 表结构
    • transactions:交易记录表
    • categories:分类管理表
    • settings:系统设置表

3.2.3 业务逻辑层

  • 交易管理服务
  • 统计分析服务
  • 数据验证服务

四、软件架构设计

4.1 系统架构图

4.2 模块依赖关系

4.2.1 前端依赖

  • SwiftUI Framework
    • 用于构建用户界面
    • TabView 实现底部导航
    • NavigationView 实现页面导航
    • Form 实现设置表单
    • 动画和转场效果
  • Combine Framework
    • @Published 实现数据发布
    • @StateObject 管理视图模型
    • 异步数据流处理
    • 网络请求响应处理
  • Foundation
    • URLSession 网络请求
    • JSONEncoder/Decoder 数据序列化
    • UserDefaults 设置存储
    • 日期和数字格式化

4.2.2 后端依赖

  • FastAPI
    • RESTful API 实现
    • 请求参数验证
    • 异步路由处理
    • 错误处理中间件
  • SQLite
    • 本地数据持久化
    • 事务管理
    • SQL 查询优化
    • 数据完整性保证
  • Pydantic
    • 数据模型定义
    • 请求/响应验证
    • 类型转换
    • 错误信息格式化

五、技术亮点及实现原理

5.1 MVVM 架构实现

视图模型实现,管理统计数据刷新状态:

5.2 响应式编程

  • 使用 Combine 框架
  • 数据双向绑定
  • 状态管理机制

5.3 异步操作处理

后端异步统计数据处理,包含错误处理机制:

5.4 数据验证机制

前端错误模型定义,用于处理后端验证错误:

5.5 错误处理策略

  • 统一的错误处理机制
  • 友好的错误提示
  • 错误日志记录

5.6 数据可视化实现

统计卡片和动画效果实现:
主要特点:
  1. 直观的数据展示
      • 使用卡片式布局突出关键数据
      • 采用颜色编码区分不同类型数据
      • 配合图标增强视觉效果
  1. 流畅的交互体验
      • 支持多维度时间筛选
      • 实时数据更新
      • 平滑的动画过渡
  1. 完善的状态反馈
      • 加载状态动画
      • 错误提示动画
      • 操作结果反馈
  1. 性能优化
      • 使用 LazyVStack 实现列表懒加载
      • 优化动画性能
      • 异步数据加载

六、部署说明

6.1 系统要求

  • iOS 18.0 或更高版本
  • 如果需要本地存储服务
    • Python 3.8 或更高版本
    • SQLite 3.x

6.2 安装步骤

6.2.1 后端部署(可选)

  1. 安装 Python 依赖:
  1. 启动服务器:

6.2.2 iOS 应用安装

  • 目前尚未上架 AppStore,故只能通过 Xcode 安装

6.3 配置说明

  • 服务器地址配置
    • 若是本地部署数据库,地址用 localhost 即可,端口为 8000
    • 若需要用到云数据库,地址可填 `******` ,端口为 8000
  • 数据库连接配置
    • 如需自建数据库服务,请参阅 6.2.1 后端部署(可选)
  • Author:Richard Liu
  • URL:http://richardliuda.top/article/quickaccounting
  • Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts
NotionAccounting 安卓版1.0
图形学大作业
HDR Photo Test
NotionAccounting 安卓版1.034th萤火虫漫展
Loading...
Catalog
0%
QuickAccounting 快速记账系统产品文档目录一、产品概述1.1 设计理念1.2 技术栈二、产品功能介绍2.1 核心功能模块2.1.1 记账管理2.1.2 分类管理2.1.3 统计分析2.1.4 系统设置2.2 用户界面2.2.1 界面结构2.2.2 交互设计三、程序概要设计3.1 前端模块设计3.1.1 视图层3.1.2 数据模型3.1.3 网络层3.2 后端模块设计3.2.1 API 接口设计3.2.2 数据库设计3.2.3 业务逻辑层四、软件架构设计4.1 系统架构图4.2 模块依赖关系4.2.1 前端依赖4.2.2 后端依赖五、技术亮点及实现原理5.1 MVVM 架构实现5.2 响应式编程5.3 异步操作处理5.4 数据验证机制5.5 错误处理策略5.6 数据可视化实现六、部署说明6.1 系统要求6.2 安装步骤6.2.1 后端部署(可选)6.2.2 iOS 应用安装6.3 配置说明
Richard Liu
Richard Liu
Richard Liu
Article
19
Category
4
Tags
8
小红书
Latest posts
Cherry Studio自用CSS
Cherry Studio自用CSS
2025-5-23
浙B印象
浙B印象
2025-5-23
大雾实验
大雾实验
2025-5-21
Kanon 雪之少女
Kanon 雪之少女
2025-5-20
20241019仙湖植物园小柔
20241019仙湖植物园小柔
2025-4-6
34th萤火虫漫展
34th萤火虫漫展
2025-4-6
Announcement
新年快乐喵~
 
 
Catalog
0%
QuickAccounting 快速记账系统产品文档目录一、产品概述1.1 设计理念1.2 技术栈二、产品功能介绍2.1 核心功能模块2.1.1 记账管理2.1.2 分类管理2.1.3 统计分析2.1.4 系统设置2.2 用户界面2.2.1 界面结构2.2.2 交互设计三、程序概要设计3.1 前端模块设计3.1.1 视图层3.1.2 数据模型3.1.3 网络层3.2 后端模块设计3.2.1 API 接口设计3.2.2 数据库设计3.2.3 业务逻辑层四、软件架构设计4.1 系统架构图4.2 模块依赖关系4.2.1 前端依赖4.2.2 后端依赖五、技术亮点及实现原理5.1 MVVM 架构实现5.2 响应式编程5.3 异步操作处理5.4 数据验证机制5.5 错误处理策略5.6 数据可视化实现六、部署说明6.1 系统要求6.2 安装步骤6.2.1 后端部署(可选)6.2.2 iOS 应用安装6.3 配置说明
2024-2025 Richard Liu.

Richard Liu’s Blog | Richard Liu

Powered by NotionNext 4.7.5.