迭代记录:课程作业管理 GUI 程序

迭代记录:课程作业管理 GUI 程序

选定需求:课程作业管理 GUI 程序
意图描述:做一个本地桌面程序,能管理课程和作业、展示周课表,并对即将截止的作业进行提醒。
技术栈:Python 3.11 + Tkinter + JSON,本地单用户,不引入第三方 GUI 库。

第1轮(初版)

我给AI的提示词:
项目背景:Python 3.11 + Tkinter,本地单用户,JSON 存储。开发一个“课程作业管理 GUI”。
需求描述:实现课程管理(课程名、教师、周几、节次、周次)、作业管理(课程、标题、截止时间、状态)、课表展示、作业截止提醒。界面用 Tkinter,数据保存到 data.json。
修改范围:从零生成,允许创建 main.py 和 data.json。
约束边界:不引入第三方 GUI 库;PEP8;异常不崩溃;本地 JSON 存储。
验收标准:能添加/删除课程和作业;课表按周几+节次展示;作业按截止时间排序;逾期红色;启动时提醒 24h 内截止作业。

AI生成的初版要点:
生成了单文件 Tkinter 程序,包含 Treeview 列表、添加/删除按钮、JSON 读写;有课表文本列表和启动提醒。
基本符合期望,但课表不是网格展示,提醒只弹一次,日期错误和 data.json 缺失时容易崩溃,删除也没有确认。

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

发现的问题:

  1. 课表只是文本列表,不能直观看出“周几、第几节”。
  2. 截止提醒只在启动时弹一次,运行中新增作业不会提醒。
  3. 日期格式输入错误会直接崩溃。
  4. data.json 不存在时启动报错。
  5. 删除课程/作业没有确认框,容易误删。

我给AI的修改要求:
请只修改 main.py,保留现有 JSON 字段名和数据结构。要求:

  1. 课表用网格显示,行=节次,列=周一至周日,格子显示课程名+教师;
  2. 作业截止提醒改为启动时 + 每 60 秒检查一次,对 24h 内未完成作业弹窗,已提醒的不要重复弹;
  3. 所有日期输入用 YYYY-MM-DD HH:MM 校验,错误时用 messagebox 提示,不崩溃;
  4. 启动时若 data.json 不存在或为空,自动创建默认结构;
  5. 删除课程/作业前弹确认框。
    不要改字段名,不要引入第三方库。

AI修改了什么:
增加了课表网格、定时提醒与“已提醒”标记、日期校验、JSON 自动初始化、删除确认框。
运行后基本可用,但作业状态、统计和课表冲突还没有处理。

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

发现的问题:

  1. 作业没有“完成/未完成”状态,无法统计完成率。
  2. 同一周次、同一天、同一节次添加两门课时没有冲突提示。
  3. 作业列表不能按课程或状态筛选。
  4. 窗口缩小时控件错位。
  5. 没有导出和备份,数据丢失风险高。

我给AI的修改要求:
请继续只改 main.py:

  1. 作业增加状态:未完成/已完成,可双击切换;顶部显示完成率统计;
  2. 添加课程时检测同一周次、周几、节次是否冲突,冲突则警告并高亮;
  3. 作业列表增加课程筛选和状态筛选;
  4. 设置窗口最小尺寸,使用 grid 权重让课表和列表随窗口缩放;
  5. 增加“导出 CSV”和每次退出自动备份 data_backup.json。
    约束:不改变已有字段名;不引入第三方库;异常不崩溃。

AI修改了什么:
增加了作业状态切换、完成率统计、课程冲突检测、筛选功能、布局自适应、CSV 导出和自动备份。
至此,基本功能可以演示,边界情况也比初版稳很多。

我的检查与验证说明

我怎么确认结果正确:

  1. 运行样例:
    添加课程“软件工程”,周一 3-4 节;再添加“数据库”,周一 3-4 节,检查是否提示冲突。
    添加作业“PSP 报告”,截止时间 2026-10-15 23:59,检查是否按截止时间排序、是否在 24h 内提醒。
    双击作业切换为“已完成”,检查完成率是否变化。
  2. 审查边界:
    空输入、错误日期“2026/13/40”、重复删除、删除 data.json 后启动、窗口缩放到最小尺寸。
    检查提醒是否重复弹出,检查退出后是否生成 data_backup.json。
  3. 交叉验证:
    打开 data.json,核对界面显示字段与存储字段是否一致。
    手动计算完成率,与界面统计对比。
    对日期校验和课表冲突检测函数写简单 pytest 用例,确认返回结果正确。

心得

本次协作最大惊喜/失望:
最大惊喜是 AI 很快就能生成 Tkinter 界面、JSON 读写和提醒逻辑的样板代码,节省了大量查资料时间;最大意外是 AI 很容易忽略“提醒不要重复弹”“日期错误不能崩溃”“课表冲突”这类边界,必须自己先写清验收标准,再逐条验证。

posted @ 2026-10-10 15:52  jimmy_ji  阅读(5)  评论(0)    收藏  举报