35 个人成绩管理系统

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

项目目标

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

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

项目结构

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

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

代码实现

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

1. 定义数据结构

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

1
2
3
4
5
6
7
8
9
10
11
12
#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. 录入成绩

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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. 显示成绩

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

1
2
3
4
5
6
7
8
9
10
11
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. 计算平均成绩

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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. 查找学生成绩

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

1
2
3
4
5
6
7
8
9
10
11
12
13
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. 主菜单

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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语言的基本语法、数组、循环、结构体和函数。这个项目不仅提高了你的编程能力,还为日后更复杂的系统打下了良好的基础。

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

35 个人成绩管理系统

https://zglg.work/cplusplus-zero/35/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论