目录

🪙 新记账本 (PennyLedger)

个人桌面记账应用 — 面向对象课程设计项目

✨ 功能一览

功能 说明
📝 记一笔 记录支出/收入:金额 + 分类 + 日期 + 备注
📋 查账本 表格浏览所有记录,按日期/分类/关键词筛选
✏️ 编辑/删除 修改或删除已记的账
📊 统计图表 月度汇总卡片、饼图(分类占比)、折线图(每日趋势)
📤 导出数据 导出为 CSV / Excel 文件
🏷️ 分类管理 自定义一级/二级分类,系统预设分类受保护

🛠 技术栈

技术 用途
Python 3 编程语言
PyQt6 桌面界面框架
SQLite 本地数据存储
Matplotlib 统计图表生成

🚀 快速开始

安装依赖

# 系统包(Ubuntu/Debian)
sudo apt install -y python3-pyqt6 python3-pyqt6.qtcharts python3-pyqt6.qtsvg

# Python 包
pip3 install --user --break-system-packages matplotlib openpyxl

启动应用

./run.sh

或直接运行:

python3 main.py

📁 项目结构

新记帐本/
├── main.py                  # 程序入口
├── run.sh                   # 一键启动脚本
├── src/
│   ├── model/               # 数据模型(Transaction、Category 等)
│   ├── db/                  # 数据库层(SQLite 操作)
│   ├── service/             # 业务逻辑层
│   ├── strategy/            # 策略模式(筛选、导出)
│   └── ui/                  # 用户界面(PyQt6)
├── assets/
│   └── fonts/               # Material Icons 字体
├── data/                    # 数据库文件(自动生成)
└── tests/                   # 测试代码

🎓 面向对象设计

OOP 概念 项目体现
封装 模型属性私有化,通过 @property 暴露
继承 ExpenseTransaction / IncomeTransaction 继承 Transaction 抽象基类
多态 子类重写 get_type() / get_amount_signed()
抽象 Transaction 为抽象基类 (ABC)
设计模式 用途
工厂模式 TransactionFactory 创建不同类型的交易
策略模式 可切换的筛选/导出策略
单例模式 数据库连接全局唯一
仓库模式 Repository 封装数据访问
观察者模式 Qt 信号机制刷新界面

📄 许可

本项目为大学面向对象课程设计作业。

关于
366.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号