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 Manager(PyQt5 桌面版)转换为 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 | **零外部依赖** |
|