“待办事项管理”管理系统。这个应用程序将允许用户添加、删除和查看待办事项。
项目结构
TodoApp/
build/
BUILD.gn
data/
TodoData.cpp
TodoData.h
ui/
MainUI.h
MainUI.cpp
main.cpp
CMakeLists.txt
代码示例
build/BUILD.gn
executable("todo_app") {
sources = [
"../data/TodoData.cpp",
"../ui/MainUI.cpp",
"../main.cpp",
]
deps = []
}
data/TodoData.h
#ifndef TODODATA_H
#define TODODATA_H
#include <string>
#include <vector>
class TodoItem {
public:
TodoItem(const std::string &title, const std::string &description);
std::string GetTitle() const;
std::string GetDescription() const;
private:
std::string title_;
std::string description_;
};
class TodoData {
public:
void AddItem(const TodoItem &item);
void RemoveItem(int index);
const std::vector<TodoItem>& GetItems() const;
private:
std::vector<TodoItem> items_;
};
#endif // TODODATA_H
data/TodoData.cpp
cpp
#include "TodoData.h"
TodoItem::TodoItem(const std::string &title, const std::string &description)
: title_(title), description_(description) {}
std::string TodoItem::GetTitle() const {
return title_;
}
std::string TodoItem::GetDescription() const {
return description_;
}
void TodoData::AddItem(const TodoItem &item) {
items_.push_back(item);
}
void TodoData::RemoveItem(int index) {
if (index >= 0 && index < items_.size()) {
items_.erase(items_.begin() + index);
}
}
const std::vector<TodoItem>& TodoData::GetItems() const {
return items_;
}
ui/MainUI.h
#ifndef MAINUI_H
#define MAINUI_H
#include "../data/TodoData.h"
class MainUI {
public:
MainUI(TodoData &todoData);
void DisplayMenu();
void AddItem();
void RemoveItem();
void ViewItems();
private:
TodoData &todoData_;
};
#endif // MAINUI_H
ui/MainUI.cpp
cpp
#include "MainUI.h"
#include <iostream>
MainUI::MainUI(TodoData &todoData) : todoData_(todoData) {}
void MainUI::DisplayMenu() {
int choice;
do {
std::cout << "\nTodo App Menu:\n";
std::cout << "1. Add Item\n";
std::cout << "2. Remove Item\n";
std::cout << "3. View Items\n";
std::cout << "4. Exit\n";
std::cout << "Enter your choice: ";
std::cin >> choice;
switch (choice) {
case 1:
AddItem();
break;
case 2:
RemoveItem();
break;
case 3:
ViewItems();
break;
case 4:
std::cout << "Exiting...\n";
break;
default:
std::cout << "Invalid choice. Please try again.\n";
}
} while (choice != 4);
}
void MainUI::AddItem() {
std::string title, description;
std::cout << "Enter item title: ";
std::cin.ignore();
std::getline(std::cin, title);
std::cout << "Enter item description: ";
std::getline(std::cin, description);
TodoItem newItem(title, description);
todoData_.AddItem(newItem);
std::cout << "Item added successfully.\n";
}
void MainUI::RemoveItem() {
int index;
std::cout << "Enter the index of the item to remove: ";
std::cin >> index;
todoData_.RemoveItem(index);
std::cout << "Item removed successfully.\n";
}
void MainUI::ViewItems() {
const auto &items = todoData_.GetItems();
if (items.empty()) {
std::cout << "No items available.\n";
return;
}
std::cout << "\nTodo Items List:\n";
for (size_t i = 0; i < items.size(); ++i) {
std::cout << i << ". " << items[i].GetTitle() << " - " << items[i].GetDescription() << "\n";
}
}
main.cpp
#include "data/TodoData.h"
#include "ui/MainUI.h"
int main() {
TodoData todoData;
MainUI mainUI(todoData);
mainUI.DisplayMenu();
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(TodoApp)
set(CMAKE_CXX_STANDARD 17)
add_executable(TodoApp
data/TodoData.cpp
ui/MainUI.cpp
main.cpp
)
简单介绍
这个待办事项管理应用程序允许用户添加、删除和查看待办事项。每个待办事项包含标题和描述。用户可以通过命令行界面与应用程序进行交互,添加新待办事项、删除现有待办事项以及查看所有待办事项的列表。