C语言编程题,实现一个简易的任务管理系统,任务管理系统是一个用于管理任务的简单程序,用户可以添加、查看、删除和标记任务为已完成。可以帮助用户跟踪他们的任务列表。

1、任务结构体

定义任务结构体 Taskid是任务的唯一编号,name任务名称,最大长度为 NAME_LENGTHisCompleted 任务状态,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;
}

推荐文档

相关文档

大家感兴趣的内容

随机列表