|
一、引言
在日常学习和工作中,我们经常需要管理各种任务,为了更高效地组织和跟踪这些任务,开发一个简易的任务管理器是一个不错的选择。本文将详细介绍如何从一个基础的任务管理器程序开始,逐步进行二次开发和优化,最终实现一个功能较为完善且用户友好的任务管理工具。
二、基础版本:简易任务管理器
#include <iostream>#include <vector>#include <string>using namespace std;// 任务结构体struct Task { string description; bool completed;};class TaskManager {private: vector<Task> tasks;public: // 添加任务 void addTask(const string& task) { tasks.push_back({task, false}); } // 删除任务 void deleteTask(int index) { if (index >= 0 && index < tasks.size()) { tasks.erase(tasks.begin() + index); } else { cout << "无效的任务索引" << endl; } } // 查看任务 void viewTasks() { if (tasks.empty()) { cout << "没有可用的任务。" << endl; } else { for (size_t i = 0; i < tasks.size(); ++i) { string status = tasks.completed ? "已完成" : "未完成"; cout << i + 1 << ". " << tasks.description << " [" << status << "]" << endl; } } } // 标记任务为完成 void markCompleted(int index) { if (index >= 0 && index < tasks.size()) { tasks[index].completed = true; } else { cout << "无效的任务索引" << endl; } }};int main() { TaskManager tm; tm.addTask("购买食品杂货"); tm.addTask("完成作业"); tm.viewTasks(); tm.markCompleted(0); tm.viewTasks(); tm.deleteTask(1); tm.viewTasks(); return 0;}
- 功能解释
任务结构体 Task:定义了任务的基本属性,包括任务描述 description 和完成状态 completed。
任务管理器类 TaskManager:
addTask 方法:用于向任务列表中添加新任务。
deleteTask 方法:根据传入的任务索引删除指定任务,如果索引无效则给出提示。
viewTasks 方法:显示所有任务的信息,包括任务描述和完成状态。
markCompleted 方法:将指定索引的任务标记为已完成,如果索引无效则给出提示。
main 函数:演示了如何使用 TaskManager 类的基本功能,包括添加任务、查看任务、标记任务完成和删除任务。
三、二次开发:增加任务优先级和分类
拓展需求提出
基础版本虽然能满足基本的任务管理需求,但在实际使用中,我们可能希望对任务进行更细致的分类和优先级设置,以便更好地安排工作。
- 代码实现
#include <iostream>#include <vector>#include <string>using namespace std;// 任务结构体struct Task { string description; bool completed; string priority; string category;};class TaskManager {private: vector<Task> tasks;public: // 添加任务 void addTask(const string& task, const string& priority = "中等", const string& category = "通用") { tasks.push_back({task, false, priority, category}); } // 删除任务 void deleteTask(int index) { if (index >= 0 && index < tasks.size()) { tasks.erase(tasks.begin() + index); } else { cout << "无效的任务索引" << endl; } } // 查看任务,可按类别和优先级过滤 void viewTasks(const string& category = "", const string& priority = "") { bool found = false; for (size_t i = 0; i < tasks.size(); ++i) { if ((category.empty() || tasks.category == category) && (priority.empty() || tasks.priority == priority)) { string status = tasks.completed ? "已完成" : "未完成"; cout << i + 1 << ". " << tasks.description << " [优先级: " << tasks.priority << ", 类别: " << tasks.category << ", " << status << "]" << endl; found = true; } } if (!found) { cout << "没有符合条件的任务。" << endl; } } // 标记任务为完成 void markCompleted(int index) { if (index >= 0 && index < tasks.size()) { tasks[index].completed = true; } else { cout << "无效的任务索引" << endl; } }};void displayMenu() { cout << "\n任务管理器" << endl; cout << "1. 查看任务" << endl; cout << "2. 添加任务" << endl; cout << "3. 删除任务" << endl; cout << "4. 标记任务为已完成" << endl; cout << "5. 退出" << endl;}int main() { TaskManager tm; int choice; string task, priority, category; int index; while (true) { displayMenu(); cout << "请选择一个选项: "; cin >> choice; cin.ignore(); // 忽略换行符 switch (choice) { case 1: cout << "按类别过滤 (留空显示所有): "; getline(cin, category); cout << "按优先级过滤 (留空显示所有): "; getline(cin, priority); tm.viewTasks(category, priority); break; case 2: cout << "请输入任务描述: "; getline(cin, task); cout << "请输入优先级 (高/中等/低): "; getline(cin, priority); cout << "请输入类别: "; getline(cin, category); tm.addTask(task, priority, category); break; case 3: cout << "请输入要删除的任务索引: "; cin >> index; cin.ignore(); // 忽略换行符 tm.deleteTask(index - 1); break; case 4: cout << "请输入要标记为已完成的任务索引: "; cin >> index; cin.ignore(); // 忽略换行符 tm.markCompleted(index - 1); break; case 5: return 0; default: cout << "无效的选项,请重试。" << endl; } } return 0;}代码改进点分析
结构体扩展:在 Task 结构体中新增了 priority(优先级)和 category(类别)两个属性,使得任务信息更加丰富。
addTask 方法改进:支持传入优先级和类别参数,默认优先级为 “中等”,默认类别为 “通用”,方便用户自定义任务属性。
viewTasks 方法改进:增加了按类别和优先级过滤的功能。用户可以根据需要输入类别和优先级,程序会显示符合条件的任务。若不输入,则显示所有任务。
用户交互界面:新增了 displayMenu 函数,用于显示操作菜单。在 main 函数中,使用 while 循环和 switch 语句实现了一个简单的命令行交互界面,让用户可以方便地选择不同的操作。
总结与展望
开发成果总结
通过二次开发,我们成功地为任务管理器增加了任务优先级和分类功能,并优化了用户交互界面。这使得任务管理器更加灵活和实用,能够更好地满足用户的多样化需求。
未来优化方向
尽管当前的任务管理器已经具备了较为丰富的功能,但仍有一些可以改进的地方。例如,可以考虑添加任务的截止日期,方便用户对任务进行时间管理;实现任务的排序功能,按照优先级、截止日期等进行排序;开发图形用户界面(GUI),提升用户体验。这些改进将进一步提升任务管理器的实用性和易用性。
希望本文的内容能对大家理解程序的二次开发和优化过程有所帮助,也欢迎大家尝试对这个任务管理器进行更多的改进和拓展。
|
|