任务管理系统(鸿蒙)

介绍
这个任务管理应用程序允许用户添加、删除和查看任务。每个任务包含标题、描述和优先级。用户可以通过命令行界面与应用程序进行交互,添加新任务、删除现有任务以及查看所有任务的列表。

 项目结构

TaskManagerApp/
     build/
        BUILD.gn
    data/
        TaskData.cpp
        TaskData.h
     ui/
         MainUI.cpp
        MainUI.h
    main.cpp
    CMakeLists.txt

示例

build/BUILD.gn

executable("task_manager_app") {
    sources = [
        "../data/TaskData.cpp",
        "../ui/MainUI.cpp",
        "../main.cpp",
    ]
    deps = []
}


data/TaskData.h

#ifndef TASKDATA_H
#define TASKDATA_H

#include <string>
#include <vector>

class Task {
public:
    Task(const std::string &title, const std::string &description, int priority);
    std::string GetTitle() const;
    std::string GetDescription() const;
    int GetPriority() const;

private:
    std::string title_;
    std::string description_;
    int priority_;
};

class TaskData {
public:
    void AddTask(const Task &task);
    void RemoveTask(int index);
    const std::vector<Task>& GetTasks() const;

private:
    std::vector<Task> tasks_;
};

#endif // TASKDATA_H


data/TaskData.cpp

#include "TaskData.h"

Task::Task(const std::string &title, const std::string &description, int priority)
    : title_(title), description_(description), priority_(priority) {}

std::string Task::GetTitle() const {
    return title_;
}

std::string Task::GetDescription() const {
    return description_;
}

int Task::GetPriority() const {
    return priority_;
}

void TaskData::AddTask(const Task &task) {
    tasks_.push_back(task);
}

void TaskData::RemoveTask(int index) {
    if (index >= 0 && index < tasks_.size()) {
        tasks_.erase(tasks_.begin() + index);
    }
}

const std::vector<Task>& TaskData::GetTasks() const {
    return tasks_;
}


 ui/MainUI.h

#ifndef MAINUI_H
#define MAINUI_H

#include "../data/TaskData.h"

class MainUI {
public:
    MainUI(TaskData &taskData);
    void DisplayMenu();
    void AddTask();
    void RemoveTask();
    void ViewTasks();

private:
    TaskData &taskData_;
};

#endif // MAINUI_H


ui/MainUI.cpp

#include "MainUI.h"
#include <iostream>

MainUI::MainUI(TaskData &taskData) : taskData_(taskData) {}

void MainUI::DisplayMenu() {
    int choice;
    do {
        std::cout << "\nTask Manager Menu:\n";
        std::cout << "1. Add Task\n";
        std::cout << "2. Remove Task\n";
        std::cout << "3. View Tasks\n";
        std::cout << "4. Exit\n";
        std::cout << "Enter your choice: ";
        std::cin >> choice;

        switch (choice) {
            case 1:
                AddTask();
                break;
            case 2:
                RemoveTask();
                break;
            case 3:
                ViewTasks();
                break;
            case 4:
                std::cout << "Exiting...\n";
                break;
            default:
                std::cout << "Invalid choice. Please try again.\n";
        }
    } while (choice != 4);
}

void MainUI::AddTask() {
    std::string title, description;
    int priority;

    std::cout << "Enter task title: ";
    std::cin.ignore();
    std::getline(std::cin, title);
    std::cout << "Enter task description: ";
    std::getline(std::cin, description);
    std::cout << "Enter task priority (1-5): ";
    std::cin >> priority;

    Task newTask(title, description, priority);
    taskData_.AddTask(newTask);
    std::cout << "Task added successfully.\n";
}

void MainUI::RemoveTask() {
    int index;
    std::cout << "Enter the index of the task to remove: ";
    std::cin >> index;

    taskData_.RemoveTask(index);
    std::cout << "Task removed successfully.\n";
}

void MainUI::ViewTasks() {
    const auto &tasks = taskData_.GetTasks();
    if (tasks.empty()) {
        std::cout << "No tasks available.\n";
        return;
    }

    std::cout << "\nTasks List:\n";
    for (size_t i = 0; i < tasks.size(); ++i) {
        std::cout << i << ". " << tasks[i].GetTitle() << " - " << tasks[i].GetDescription() << " (Priority: " << tasks[i].GetPriority() << ")\n";
    }
}

main.cpp

#include "data/TaskData.h"
#include "ui/MainUI.h"

int main() {
    TaskData taskData;
    MainUI mainUI(taskData);
    mainUI.DisplayMenu();
    return 0;
}


CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(TaskManagerApp)

set(CMAKE_CXX_STANDARD 17)

add_executable(TaskManagerApp
    data/TaskData.cpp
    ui/MainUI.cpp
    main.cpp
)

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值