117 lines
3.0 KiB
Markdown
117 lines
3.0 KiB
Markdown
# 待办事项列表项目
|
|
|
|
这是一个命令行待办事项管理程序,演示了 Go 语言在数据持久化、文件操作和用户交互方面的应用。
|
|
|
|
## 项目特性
|
|
|
|
- 添加、删除、修改待办事项
|
|
- 标记任务完成状态
|
|
- 按优先级和状态筛选任务
|
|
- 数据持久化到 JSON 文件
|
|
- 彩色命令行界面
|
|
- 任务搜索功能
|
|
- 统计信息显示
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
02-todo-list/
|
|
├── README.md # 项目说明文档
|
|
├── main.go # 主程序入口
|
|
├── todo/ # 待办事项核心包
|
|
│ ├── todo.go # 待办事项数据结构
|
|
│ ├── manager.go # 任务管理器
|
|
│ └── storage.go # 数据存储
|
|
├── ui/ # 用户界面包
|
|
│ ├── cli.go # 命令行界面
|
|
│ └── colors.go # 颜色输出
|
|
├── data/ # 数据文件目录
|
|
│ └── todos.json # 任务数据文件
|
|
└── todo_test.go # 测试文件
|
|
```
|
|
|
|
## 运行方法
|
|
|
|
```bash
|
|
# 进入项目目录
|
|
cd 10-projects/02-todo-list
|
|
|
|
# 运行程序
|
|
go run main.go
|
|
|
|
# 或者编译后运行
|
|
go build -o todo main.go
|
|
./todo
|
|
```
|
|
|
|
## 使用示例
|
|
|
|
```
|
|
=== 待办事项管理器 ===
|
|
|
|
命令列表:
|
|
add <任务> - 添加新任务
|
|
list - 显示所有任务
|
|
done <ID> - 标记任务完成
|
|
delete <ID> - 删除任务
|
|
edit <ID> <新内容> - 编辑任务
|
|
search <关键词> - 搜索任务
|
|
stats - 显示统计信息
|
|
help - 显示帮助
|
|
quit - 退出程序
|
|
|
|
> add 学习Go语言
|
|
✅ 任务已添加: 学习Go语言 (ID: 1)
|
|
|
|
> add 完成项目文档
|
|
✅ 任务已添加: 完成项目文档 (ID: 2)
|
|
|
|
> list
|
|
📋 待办事项列表:
|
|
[1] ⏳ 学习Go语言 (优先级: 中)
|
|
[2] ⏳ 完成项目文档 (优先级: 中)
|
|
|
|
> done 1
|
|
✅ 任务已完成: 学习Go语言
|
|
|
|
> list
|
|
📋 待办事项列表:
|
|
[1] ✅ 学习Go语言 (优先级: 中)
|
|
[2] ⏳ 完成项目文档 (优先级: 中)
|
|
|
|
> stats
|
|
📊 统计信息:
|
|
总任务数: 2
|
|
已完成: 1
|
|
待完成: 1
|
|
完成率: 50.0%
|
|
```
|
|
|
|
## 学习要点
|
|
|
|
这个项目综合运用了以下 Go 语言特性:
|
|
|
|
1. **结构体和方法**: 定义任务和管理器结构体
|
|
2. **接口设计**: 定义存储和界面接口
|
|
3. **JSON 处理**: 数据序列化和反序列化
|
|
4. **文件操作**: 读写 JSON 文件进行数据持久化
|
|
5. **错误处理**: 完善的错误处理机制
|
|
6. **字符串处理**: 命令解析和文本处理
|
|
7. **切片操作**: 任务列表的增删改查
|
|
8. **时间处理**: 任务创建和修改时间
|
|
9. **包管理**: 多包项目结构
|
|
10. **用户交互**: 命令行输入输出
|
|
11. **测试**: 单元测试和集成测试
|
|
|
|
## 扩展建议
|
|
|
|
1. 添加任务分类和标签功能
|
|
2. 支持任务截止日期和提醒
|
|
3. 实现任务导入导出功能
|
|
4. 添加任务优先级排序
|
|
5. 支持批量操作
|
|
6. 实现 Web 界面
|
|
7. 添加任务统计图表
|
|
8. 支持多用户管理
|
|
9. 集成云端同步
|
|
10. 添加任务模板功能 |