Jupyter AI

35 个人成绩管理系统

📅 发表日期: 2024年8月10日

分类: 💻C++ 入门

👁️阅读: --

在前一篇中,我们介绍了一个简单计算器的项目实践。现在,让我们继续进行 C 语言的学习,构建一个个人成绩管理系统。这个系统不仅能帮助你掌握 C 语言的基本语法和数据结构,而且还会为日后的进阶学习提供良好的基础。

项目目标

我们的目标是实现一个简单的成绩管理系统,能够完成以下功能:

  1. 录入成绩 – 用户可以输入学生姓名和对应成绩。
  2. 显示成绩 – 打印出所有学生的姓名和成绩。
  3. 计算平均成绩 – 计算并显示所有学生的平均成绩。
  4. 查找学生成绩 – 按学生姓名查找对应成绩。

项目结构

在实现这个系统时,我们会使用以下 C 语言的基本组件:

  • 数组 – 用于保存学生姓名和成绩。
  • 循环 – 用于重复输入和输出操作。
  • 条件语句 – 用于判断用户选择的操作。

代码实现

我们将从主要函数开始,并逐步实现各个功能。

1. 定义数据结构

首先,我们需要定义学生的基本信息。在 C 语言中,可以使用结构体来实现这一点:

#include <stdio.h>
#include <string.h>

#define MAX_STUDENTS 100

typedef struct {
    char name[50];
    float score;
} Student;

Student students[MAX_STUDENTS];
int student_count = 0;

在上面的代码中,我们定义了一个名为 Student 的结构体,包含学生的 name(姓名)和 score(成绩)。students 数组将用于存储多个 Student 结构体,并通过 student_count 变量跟踪当前学生人数。

2. 录入成绩

接下来,我们实现一个函数来录入学生的成绩:

void input_scores() {
    if (student_count >= MAX_STUDENTS) {
        printf("学生数量已达上限,无法继续录入。\n");
        return;
    }

    printf("请输入学生姓名:");
    scanf("%s", students[student_count].name);
    printf("请输入学生成绩:");
    scanf("%f", &students[student_count].score);
    student_count++;
    printf("成绩录入成功!\n");
}

在此函数中,我们首先检查是否达到最大学生数量的限制。如果没有,则提示用户输入姓名和成绩,将其存储到 students 数组中,并更新 student_count

3. 显示成绩

实现一个函数来显示所有学生的成绩:

void display_scores() {
    if (student_count == 0) {
        printf("没有录入任何学生成绩。\n");
        return;
    }

    printf("\n学生成绩列表:\n");
    for (int i = 0; i < student_count; i++) {
        printf("姓名:%s, 成绩:%.2f\n", students[i].name, students[i].score);
    }
}

该函数迭代 students 数组并打印出每位学生的姓名和成绩。如果没有录入任何成绩,则给出提示。

4. 计算平均成绩

实现一个函数来计算并显示平均成绩:

void calculate_average() {
    if (student_count == 0) {
        printf("没有学生成绩,无法计算平均值。\n");
        return;
    }

    float total = 0.0;
    for (int i = 0; i < student_count; i++) {
        total += students[i].score;
    }
    float average = total / student_count;
    printf("平均成绩:%.2f\n", average);
}

该函数遍历所有学生的成绩,计算总分,并除以学生人数来得到平均成绩。

5. 查找学生成绩

最后,我们实现一个根据学生姓名查找成绩的功能:

void find_student_score() {
    char name[50];
    printf("请输入学生姓名以查找成绩:");
    scanf("%s", name);

    for (int i = 0; i < student_count; i++) {
        if (strcmp(students[i].name, name) == 0) {
            printf("姓名:%s, 成绩:%.2f\n", students[i].name, students[i].score);
            return;
        }
    }
    printf("未找到该学生的成绩。\n");
}

该函数使用 strcmp 比较输入的姓名与存储的姓名,如果找到匹配项,则输出对应成绩。

6. 主菜单

最后,我们实现主菜单以整合以上功能:

int main() {
    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:
                input_scores();
                break;
            case 2:
                display_scores();
                break;
            case 3:
                calculate_average();
                break;
            case 4:
                find_student_score();
                break;
            case 5:
                printf("退出系统。\n");
                return 0;
            default:
                printf("无效的选择,请重新输入。\n");
        }
    }
    return 0;
}

在这里,我们提供了一个简单的菜单系统,用户可以选择不同的操作。利用 switch-case 语句来执行对应的功能。

总结

通过构建这个个人成绩管理系统,你学习了如何使用C语言的基本语法、数组、循环、结构体和函数。这个项目不仅提高了你的编程能力,还为日后更复杂的系统打下了良好的基础。

在下一篇文章中,我们将继续前进,探索更复杂的项目实践,进一步提升我们的编码技能。

💻C++ 入门 (滚动鼠标查看)