# Todo Manager - C++ 命令行版 将 Python Todo Manager(PyQt5 桌面版)转换为 C++ 命令行工程。 保留核心业务能力:任务创建、查询、更新、删除,以及 JSON 文件持久化。 ## 技术栈 - **语言**: C++17 - **构建工具**: CMake 3.14+ - **持久化**: 纯手写简易 JSON 解析器(零外部依赖) - **测试**: 标准库 `assert`(零外部依赖) ## 工程结构 ``` codegen-runs/codegen_9ecc529e4d094130b0491b9d389ef836/ ├── CMakeLists.txt # CMake 构建配置 ├── README.md # 本文件 ├── include/ │ └── app.hpp # TodoItem / TodoService 公开声明 ├── src/ │ ├── app.cpp # TodoService 实现 + JSON 解析器 │ └── main.cpp # 命令行交互入口 ├── tests/ │ └── basic_test.cpp # 单元测试(assert) └── todos.json # 运行时自动生成的数据文件 ``` ## 本地编译与运行 ### 前置条件 - CMake 3.14 或更高版本 - 支持 C++17 的编译器(GCC 7+、Clang 5+、MSVC 2019+) ### 编译步骤 ```bash cd codegen-runs/codegen_9ecc529e4d094130b0491b9d389ef836 mkdir -p build && cd build cmake .. cmake --build . ``` ### 运行主程序 ```bash # Linux / macOS ./todo_manager # Windows todo_manager.exe ``` 程序启动后显示交互菜单: ``` ===== Todo Manager ===== 1. 列出所有任务 2. 添加任务 3. 编辑任务 4. 删除任务 5. 退出 请选择 (1-5): ``` ### 运行测试 ```bash # 在 build 目录下 ./basic_test ``` 测试通过时会输出: ``` ✓ test_create_and_list passed ✓ test_get_by_id passed ✓ test_update passed ✓ test_delete passed ✓ test_persistence passed ✓ ✓ ✓ 所有测试通过! ``` ## 与 Python 原版的差异 | 特性 | Python 原版 | C++ 版 | |---------------------|-------------------------------|--------------------------------| | 用户界面 | PyQt5 桌面窗口 | 命令行交互菜单 | | 数据校验 | Pydantic BaseModel | C++ 结构体 + 运行时检查 | | JSON 解析 | 标准库 json 模块 | 手写简易递归下降解析器 | | 测试框架 | pytest + httpx | 标准库 assert | | 持久化文件 | todos.json | todos.json(格式兼容) | | 外部依赖 | PyQt5, Pydantic, pytest, httpx | **零外部依赖** |