English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 4|回复: 0

简易任务管理器的二次开发与优化

[复制链接]
查看: 4|回复: 0

简易任务管理器的二次开发与优化

[复制链接]
查看: 4|回复: 0

266

主题

0

回帖

808

积分

高级会员

积分
808
Mx1GSap21Lt

266

主题

0

回帖

808

积分

高级会员

积分
808
2025-2-25 16:43:41 | 显示全部楼层 |阅读模式
一、引言
在日常学习和工作中,我们经常需要管理各种任务,为了更高效地组织和跟踪这些任务,开发一个简易的任务管理器是一个不错的选择。本文将详细介绍如何从一个基础的任务管理器程序开始,逐步进行二次开发和优化,最终实现一个功能较为完善且用户友好的任务管理工具。
二、基础版本:简易任务管理器

  • 代码实现
#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),提升用户体验。这些改进将进一步提升任务管理器的实用性和易用性。
希望本文的内容能对大家理解程序的二次开发和优化过程有所帮助,也欢迎大家尝试对这个任务管理器进行更多的改进和拓展。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

266

主题

0

回帖

808

积分

高级会员

积分
808

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-11 03:17 , Processed in 4.622266 second(s), 30 queries .

Powered by 智能设备

©2025

|网站地图