35 个人成绩管理系统
在前一篇中,我们介绍了一个简单计算器的项目实践。现在,让我们继续进行 C 语言的学习,构建一个个人成绩管理系统。这个系统不仅能帮助你掌握 C 语言的基本语法和数据结构,而且还会为日后的进阶学习提供良好的基础。
项目目标
我们的目标是实现一个简单的成绩管理系统,能够完成以下功能:
- 录入成绩 – 用户可以输入学生姓名和对应成绩。
- 显示成绩 – 打印出所有学生的姓名和成绩。
- 计算平均成绩 – 计算并显示所有学生的平均成绩。
- 查找学生成绩 – 按学生姓名查找对应成绩。
项目结构
在实现这个系统时,我们会使用以下 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语言的基本语法、数组、循环、结构体和函数。这个项目不仅提高了你的编程能力,还为日后更复杂的系统打下了良好的基础。
在下一篇文章中,我们将继续前进,探索更复杂的项目实践,进一步提升我们的编码技能。