c语言学生成绩管理系统插入信息217 2 D:\stu.c [Note] use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
时间: 2024-10-29 13:18:06 浏览: 28
在C语言中,创建一个简单的成绩管理系统并实现插入学生信息的功能,通常会涉及以下几个步骤。假设我们有一个结构体`StuInfo`用于存储学生的姓名、学号和成绩,文件名`stu.c`,并且你想通过函数处理插入操作。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[50];
float score;
} StuInfo;
// 插入学生信息函数
void insertStudent(StuInfo* students, int size, int id, char* name, float score) {
if (size >= sizeof(students)/sizeof(StuInfo)) { // 检查数组是否已满
printf("数组已满,无法添加更多学生。\n");
return;
}
students[size].id = id;
strncpy(students[size].name, name, sizeof(students[size].name)); // 防止缓冲区溢出
students[size].score = score;
printf("学生 %d 的信息已成功插入:\n", id);
printf("姓名:%s\n", name);
printf("分数:%.2f\n", score);
}
int main() {
const int MAX_STUDENTS = 10; // 最大学生数
StuInfo students[MAX_STUDENTS]; // 学生信息数组
int numStudents = 0; // 当前学生数
// 打开D盘指定文件(这里只是举例,实际应用需要考虑文件I/O)
FILE *fp = fopen("D:\\stu.txt", "a+"); // 假设是一个文本文件,用于持久化数据
if (!fp) {
perror("无法打开文件");
return 1;
}
// 插入新学生信息
char inputName[50];
float inputScore;
printf("请输入学生信息(格式:ID 姓名 分数),输入'quit'退出:\n");
while (scanf("%d %s %f", &students[numStudents].id, inputName, &inputScore) == 3 && strcmp(inputName, "quit") != 0) {
insertStudent(students, numStudents, students[numStudents].id, inputName, inputScore);
// 将新数据追加到文件中
fprintf(fp, "%d\t%s\t%f\n", students[numStudents].id, inputName, inputScore);
numStudents++;
}
fclose(fp); // 关闭文件
return 0;
}
```
在这个例子中,程序运行时允许用户输入学生的信息,并将它们保存到内存数组中以及写入到磁盘文件`stu.txt`里。如果文件打开失败或者数组已满,则会有相应的提示。
阅读全文