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;
}