plan_execute/README.md

96 lines
2.6 KiB
Markdown
Raw Normal View History

2026-05-06 05:54:41 +00:00
# Todo Manager - C++ 命令行版
2026-05-06 05:42:33 +00:00
2026-05-06 05:54:41 +00:00
将 Python Todo ManagerPyQt5 桌面版)转换为 C++ 命令行工程。
保留核心业务能力:任务创建、查询、更新、删除,以及 JSON 文件持久化。
2026-05-06 05:42:33 +00:00
## 技术栈
2026-05-06 05:54:41 +00:00
- **语言**: C++17
- **构建工具**: CMake 3.14+
- **持久化**: 纯手写简易 JSON 解析器(零外部依赖)
- **测试**: 标准库 `assert`(零外部依赖)
2026-05-06 05:42:33 +00:00
2026-05-06 05:54:41 +00:00
## 工程结构
2026-05-06 05:42:33 +00:00
```
2026-05-06 05:54:41 +00:00
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 # 运行时自动生成的数据文件
```
## 本地编译与运行
### 前置条件
2026-05-06 05:42:33 +00:00
2026-05-06 05:54:41 +00:00
- CMake 3.14 或更高版本
- 支持 C++17 的编译器GCC 7+、Clang 5+、MSVC 2019+
### 编译步骤
2026-05-06 05:42:33 +00:00
```bash
2026-05-06 05:54:41 +00:00
cd codegen-runs/codegen_9ecc529e4d094130b0491b9d389ef836
mkdir -p build && cd build
cmake ..
cmake --build .
2026-05-06 05:42:33 +00:00
```
2026-05-06 05:54:41 +00:00
### 运行主程序
2026-05-06 05:42:33 +00:00
2026-05-06 05:54:41 +00:00
```bash
# Linux / macOS
./todo_manager
2026-05-06 05:42:33 +00:00
2026-05-06 05:54:41 +00:00
# Windows
todo_manager.exe
```
2026-05-06 05:42:33 +00:00
2026-05-06 05:54:41 +00:00
程序启动后显示交互菜单:
2026-05-06 05:42:33 +00:00
```
2026-05-06 05:54:41 +00:00
===== Todo Manager =====
1. 列出所有任务
2. 添加任务
3. 编辑任务
4. 删除任务
5. 退出
请选择 (1-5):
```
### 运行测试
2026-05-06 05:42:33 +00:00
```bash
2026-05-06 05:54:41 +00:00
# 在 build 目录下
./basic_test
2026-05-06 05:42:33 +00:00
```
2026-05-06 05:54:41 +00:00
测试通过时会输出:
2026-05-06 05:42:33 +00:00
```
2026-05-06 05:54:41 +00:00
✓ 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 | **零外部依赖** |