个人校园消费记账 GUI 搭建心得

个人校园消费记账 GUI —— 迭代记录

第1轮(初版)

我给AI的提示词: 希望用 Python 做一个面向大学生的个人校园消费记账桌面软件:能记录日常消费(限定几个固定分类)、能设置每月生活费预算与额度提醒、能按天统计每日余额;要求代码带详细中文注释、只用 Python 标准库、数据保存在本地。
AI生成的初版要点: 给出了单文件初版 bill_tracker.py:tkinter 界面,包含顶部预算设置、本月总览与彩色额度提醒条、消费/存入记账、每日余额统计表,数据存本地 JSON 文件;当日记账、预算预警、每日余额三项核心流程均可用,总体符合期望。该版本消费与存入分别存在 expenses / deposits 两个列表中。当天还在程序里实际记录了一笔 1389.00 元的“学校补贴”存入。

第2轮(第一次迭代修改)

发现的问题: 消费和存入各有一个记账入口、各存一张表,流程割裂,查看流水时要在两边来回对照;希望界面能先引导确认“这笔到底是消费还是存入”,减少误操作。
我给AI的修改要求: 统一记账入口与流水表;点击“记一笔”后先确认要记账,再选择消费或存入,只有消费才需要选分类。
AI修改了什么: 新增统一流水 records(用 kind 字段区分消费/存入);RecordDialog 改为“先选资金方向、再填信息”的两步弹窗;明细表合并展示(新增“类型/分类”列,存入用绿色字区分);加载数据时自动把旧版 expenses/deposits 合并进统一流水,保证老账不丢。

第3轮(第二次迭代修改)

发现的问题: 总览指标偏少,看不出今天花了多少、剩下的钱按剩余天数摊下来每天还能花多少;额度提醒弹窗时机生硬,且会与记账弹窗叠在一起。
我给AI的修改要求: 总览补充“今日支出、剩余天数、建议日均”;只有这笔消费“刚好跨过”预警线或超支线时才弹窗;提醒放到记账弹窗关闭之后再显示。
AI修改了什么: summarize_month 输出五项指标并单独统计“今天”的支出;额度提醒改为记账前后预算使用率对比(before/after),仅在跨线瞬间触发;引入 _pending_notice 延后通知机制,避免两个模态窗口重叠。

第4轮(第三次迭代修改)

发现的问题: 担心 JSON 文件损坏或写入中途失败导致账单丢失;旧版本数据文件在新代码中的兼容性需要专门验证;删除记录需要可靠的定位方式。
我给AI的修改要求: 增强数据安全性与旧版本兼容性,保证真实账单文件能正常加载、老数据不丢。
AI修改了什么: 保存改为“先写临时文件 .tmp 再原子替换”,杜绝写一半损坏;文件损坏时先备份为.bak 再重建初始数据;加载时对缺失字段逐项 setdefault 兼容;每条记录用uuid生成唯一 id,删除时按 id 精确定位;并用真实账单文件做了加载兼容验证。

第5轮(第四次迭代修改)

发现的问题: ① 已保存的记录无法修改,记错了只能新增,不能编辑当天或历史记录;② 只能记今天的账,漏记的过往账单无法补;③ 只能看本月,不能回看历史月份账单;④ 只有数字没有图,看不出钱主要花在哪一类。
我给AI的修改要求:
(1)增加修改记录的功能(比如说右键某条记录之后可以选择编辑或者删除该记录);(2)支持‘补记’,目前的功能都只能记录今天的,但是比如我今天想起昨天有条记录没有写,需要进行添加;(3)支持能够按月份查看历史账单;(4)可以加一个分析标签页,展示本月的消费统计图(如条形统计图的形式)。
AI修改了什么:

  1. 修改/删除:明细表绑定右键菜单(编辑记录 / 删除记录),右键时自动选中所在行;编辑弹窗按原值预填全部字段,保存后记录 id 与录入时间不变;删除保留二次确认;
  2. 补记:弹窗新增“日期”字段(默认今天),校验日期格式合法且不接受未来日期,保存后自动跳到该笔所在的月份;
  3. 按月查看:新增“◀ 上一月 / 下一月 ▶ / 回到本月”切换条,明细表、每日余额、分析图三者联动;历史月份标题标注“(历史)”,当前月自动禁用“下一月”防止翻到未来;预算支持按月独立存储,未单独设置的月份回退到默认预算;
  4. 消费分析:新增“消费分析”标签页,用 Canvas 手绘四类消费金额条形图(含纵轴金额刻度、网格线、柱顶数值,窗口缩放时自适应重绘),底部附注该月存入合计;绘图仍只用标准库,零第三方依赖。

我的检查与验证说明

我怎么确认结果正确:

  1. 编译检查:运行 python -m py_compile bill_tracker.py,编译通过、无语法错误;
  2. 自动化自检:用临时目录的模拟数据运行 46 项自检,覆盖数据层(按月预算、记录增删改查、旧数据迁移)、统计层(月份平移、按月过滤、历史月汇总、分类聚合)、GUI(明细行数、月份切换联动、图表图元数量、按钮禁用状态)以及异常输入(未来日期、错误日期格式、0 金额、非法分类均被拒绝),结果全部 PASS(SELFTEST5_OK);
  3. 数据安全:自检全程使用临时 JSON 文件,真实 bill_data.json 未被改动,且能正常解析;历轮自检标记 SELFTEST_OK ~ SELFTEST5_OK 均可追溯;
  4. 人工验证:实际运行 python bill_tracker.py,依次测试右键编辑/删除、补记昨天与上月的账、◀▶ 切换月份、分析图随月份与窗口重绘,表现均与预期一致。

心得

通过这次与Traecode的交互,我第一次尝试做了一款小软件,也更加直观地体会到软件开发并不是“一次把功能写完”,而是一个不断发现问题、提出需求、修改实现和验证结果的循环过程。在反复地迭代中,我也认识到,相比单纯增加功能,一个真正可用的软件还需要重点考虑用户操作逻辑、数据可靠性、异常处理和版本兼容性。

posted @ 2026-10-05 11:17  Richard_Leel  阅读(4)  评论(0)    收藏  举报