1、任务结构体
定义任务结构体 Task
,id
是任务的唯一编号,name
任务名称,最大长度为 NAME_LENGTH
。isCompleted
任务状态,0
表示未完成,1
表示已完成。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TASKS 100 #define NAME_LENGTH 50 // 定义任务结构体 typedef struct { int id; char name[NAME_LENGTH]; int isCompleted; } Task;
2、添加任务
addTask
函数用于添加任务,用户可以添加新任务,输入任务名称,自动生成任务 ID
。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TASKS 100 #define NAME_LENGTH 50 // 定义任务结构体 typedef struct { int id; char name[NAME_LENGTH]; int isCompleted; } Task; void addTask(Task tasks[], int *taskCount) { if (*taskCount >= MAX_TASKS) { printf("任务已满,无法添加更多任务。\n"); return; } Task *task = &tasks[*taskCount]; // 生成任务ID task->id = *taskCount + 1; printf("请输入任务名称: "); scanf(" %[^\n]", task->name); // 接受带空格的字符串输入 task->isCompleted = 0; // 任务初始状态为未完成 (*taskCount)++; printf("任务添加成功!\n"); } int main() { printf("Hello, World!"); return 0; }
2、显示任务列表
displayTasks
函数用于显示任务列表信息,可以显示所有任务的详细信息,包括任务 ID、名称和状态(已完成或未完成)。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TASKS 100 #define NAME_LENGTH 50 // 定义任务结构体 typedef struct { int id; char name[NAME_LENGTH]; int isCompleted; } Task; void displayTasks(Task tasks[], int taskCount) { if (taskCount == 0) { printf("当前没有任务。\n"); return; } printf("\n任务列表:\n"); for (int i = 0; i < taskCount; i++) { printf("任务ID: %d, 名称: %s, 状态: %s\n", tasks[i].id, tasks[i].name, tasks[i].isCompleted ? "已完成" : "未完成"); } printf("----------------------------\n"); } int main() { printf("Hello, World!"); return 0; }
3、删除任务
deleteTask
函数于删除任务,实现根据任务 ID 删除指定任务,并调整任务列表。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TASKS 100 #define NAME_LENGTH 50 // 定义任务结构体 typedef struct { int id; char name[NAME_LENGTH]; int isCompleted; } Task; void deleteTask(Task tasks[], int *taskCount) { int id; printf("请输入要删除的任务ID: "); scanf("%d", &id); for (int i = 0; i < *taskCount; i++) { if (tasks[i].id == id) { for (int j = i; j < *taskCount - 1; j++) { tasks[j] = tasks[j + 1]; // 向前移动数组覆盖删除的任务 } (*taskCount)--; printf("任务已删除。\n"); return; } } printf("未找到ID为 %d 的任务。\n", id); } int main() { printf("Hello, World!"); return 0; }
4、标记任务
markTaskCompleted
函数用于将某个任务标记为完成,实现根据任务 ID 将任务标记为已完成。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TASKS 100 #define NAME_LENGTH 50 // 定义任务结构体 typedef struct { int id; char name[NAME_LENGTH]; int isCompleted; } Task; void markTaskCompleted(Task tasks[], int taskCount) { int id; printf("请输入要标记完成的任务ID: "); scanf("%d", &id); for (int i = 0; i < taskCount; i++) { if (tasks[i].id == id) { tasks[i].isCompleted = 1; printf("任务已标记为完成。\n"); return; } } printf("未找到ID为 %d 的任务。\n", id); } int main() { printf("Hello, World!"); return 0; }
5、完整代码
一个简易的任务管理系统,可以根据自己的需求进行扩展和完善。
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TASKS 100 #define NAME_LENGTH 50 // 定义任务结构体 typedef struct { int id; char name[NAME_LENGTH]; int isCompleted; } Task; void addTask(Task tasks[], int *taskCount) { if (*taskCount >= MAX_TASKS) { printf("任务已满,无法添加更多任务。\n"); return; } Task *task = &tasks[*taskCount]; // 生成任务ID task->id = *taskCount + 1; printf("请输入任务名称: "); scanf(" %[^\n]", task->name); // 接受带空格的字符串输入 task->isCompleted = 0; // 任务初始状态为未完成 (*taskCount)++; printf("任务添加成功!\n"); } void displayTasks(Task tasks[], int taskCount) { if (taskCount == 0) { printf("当前没有任务。\n"); return; } printf("\n任务列表:\n"); for (int i = 0; i < taskCount; i++) { printf("任务ID: %d, 名称: %s, 状态: %s\n", tasks[i].id, tasks[i].name, tasks[i].isCompleted ? "已完成" : "未完成"); } printf("----------------------------\n"); } void deleteTask(Task tasks[], int *taskCount) { int id; printf("请输入要删除的任务ID: "); scanf("%d", &id); for (int i = 0; i < *taskCount; i++) { if (tasks[i].id == id) { for (int j = i; j < *taskCount - 1; j++) { tasks[j] = tasks[j + 1]; // 向前移动数组覆盖删除的任务 } (*taskCount)--; printf("任务已删除。\n"); return; } } printf("未找到ID为 %d 的任务。\n", id); } void markTaskCompleted(Task tasks[], int taskCount) { int id; printf("请输入要标记完成的任务ID: "); scanf("%d", &id); for (int i = 0; i < taskCount; i++) { if (tasks[i].id == id) { tasks[i].isCompleted = 1; printf("任务已标记为完成。\n"); return; } } printf("未找到ID为 %d 的任务。\n", id); } int main() { Task tasks[MAX_TASKS]; int taskCount = 0; int choice; while (1) { printf("\n任务管理系统菜单:\n"); printf("1. 添加任务\n"); printf("2. 查看任务\n"); printf("3. 删除任务\n"); printf("4. 标记任务完成\n"); printf("5. 退出\n"); printf("请选择操作: "); scanf("%d", &choice); switch (choice) { case 1: addTask(tasks, &taskCount); break; case 2: displayTasks(tasks, taskCount); break; case 3: deleteTask(tasks, &taskCount); break; case 4: markTaskCompleted(tasks, taskCount); break; case 5: printf("退出系统。\n"); exit(0); default: printf("无效的选择,请重试。\n"); } } return 0; }