学生成绩管理系统结构体数组
时间: 2024-12-27 16:25:53 浏览: 23
### C/C++ 学生成绩管理系统使用结构体数组实现
#### 示例代码及解析
为了展示如何利用结构体数组来构建一个简单的学生成绩管理系统,在此提供一段完整的C语言程序作为例子。这段代码展示了基本的功能,比如录入、显示以及查询学生的成绩信息。
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100 // 定义最大允许的学生数量
// 定义学生信息的数据结构
struct Student {
char id[20]; // 存储学号
char name[50]; // 存储名字
float score; // 成绩字段
};
int main() {
struct Student students[MAX_STUDENTS];
int count = 0;
printf("欢迎来到简易版的成绩管理系统\n");
while (1) {
printf("\n请选择操作:\n");
printf("1. 添加新记录\n");
printf("2. 显示所有记录\n");
printf("3. 查询特定学生\n");
printf("4. 退出系统\n");
int choice;
scanf("%d", &choice);
switch(choice){
case 1: // 添加新的学生条目
if(count >= MAX_STUDENTS){
printf("已达到最大容量!\n");
break;
}
printf("请输入第%d位同学的信息:", count + 1);
getchar(); // 清除缓冲区
printf("输入学号:");
fgets(students[count].id, sizeof(students[count].id), stdin);
strtok(students[count].id, "\n"); // 移除换行符
printf("输入姓名:");
fgets(students[count].name, sizeof(students[count].name), stdin);
strtok(students[count].name, "\n"); // 移除换行符
printf("输入分数:");
scanf("%f", &(students[count].score));
++count;
printf("成功添加一条记录。\n");
break;
case 2:// 打印当前所有的学生列表
for(int i=0;i<count;++i){
printf("ID:%s 名字:%s 分数:%.2f\n",
students[i].id,
students[i].name,
students[i].score);
}
break;
case 3:// 查找并打印指定学生的详情
char targetId[20];
printf("请输入要查找的学号:");
getchar();
fgets(targetId,sizeof(targetId),stdin);
strtok(targetId,"\n");
bool found=false;
for(int j=0;j<count && !found;++j){
if(strcmp(students[j].id,targetId)==0){
printf("找到该名学生,ID:%s 名字:%s 分数:%.2f\n",
students[j].id,
students[j].name,
students[j].score);
found=true;
}
}
if(!found){
printf("未发现匹配项...\n");
}
break;
case 4:
return 0;
default:
printf("无效选项,请重新尝试。\n");
}
}
}
```
上述代码实现了四个主要功能:增加新纪录、查看现有记录、按学号搜索特定学生以及安全退出应用程序[^1]。通过这种方式,不仅能够有效地管理和处理多个学生对象的相关属性,而且还能保持良好的可读性和扩展性。
阅读全文