学生成绩信息管理系统代码c语言
时间: 2023-08-12 08:41:59 浏览: 46
以下是一个简单的学生成绩信息管理系统的 C 语言代码,包含添加、删除、查询和修改学生信息等基本功能。代码中使用了结构体来存储学生信息,使用了文件读写来实现信息的保存和读取。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[20]; // 姓名
char id[10]; // 学号
float score; // 成绩
} Student;
// 添加学生信息
void addStudent() {
Student s;
printf("请输入学生姓名:");
scanf("%s", s.name);
printf("请输入学生学号:");
scanf("%s", s.id);
printf("请输入学生成绩:");
scanf("%f", &s.score);
FILE *fp = fopen("student.dat", "ab");
fwrite(&s, sizeof(Student), 1, fp);
fclose(fp);
}
// 删除学生信息
void delStudent() {
char id[10];
printf("请输入要删除的学生学号:");
scanf("%s", id);
FILE *fp = fopen("student.dat", "rb");
FILE *temp = fopen("temp.dat", "wb");
Student s;
int found = 0;
while (fread(&s, sizeof(Student), 1, fp) == 1) {
if (strcmp(s.id, id) != 0) {
fwrite(&s, sizeof(Student), 1, temp);
} else {
found = 1;
}
}
fclose(fp);
fclose(temp);
remove("student.dat");
rename("temp.dat", "student.dat");
if (found) {
printf("删除成功!\n");
} else {
printf("没有找到该学生!\n");
}
}
// 查询学生信息
void queryStudent() {
char id[10];
printf("请输入要查询的学生学号:");
scanf("%s", id);
FILE *fp = fopen("student.dat", "rb");
Student s;
int found = 0;
while (fread(&s, sizeof(Student), 1, fp) == 1) {
if (strcmp(s.id, id) == 0) {
printf("姓名:%s 学号:%s 成绩:%.2f\n", s.name, s.id, s.score);
found = 1;
break;
}
}
fclose(fp);
if (!found) {
printf("没有找到该学生!\n");
}
}
// 修改学生信息
void modifyStudent() {
char id[10];
printf("请输入要修改的学生学号:");
scanf("%s", id);
FILE *fp = fopen("student.dat", "rb+");
Student s;
int found = 0;
while (fread(&s, sizeof(Student), 1, fp) == 1) {
if (strcmp(s.id, id) == 0) {
printf("请输入修改后的学生姓名:");
scanf("%s", s.name);
printf("请输入修改后的学生学号:");
scanf("%s", s.id);
printf("请输入修改后的学生成绩:");
scanf("%f", &s.score);
fseek(fp, -sizeof(Student), SEEK_CUR);
fwrite(&s, sizeof(Student), 1, fp);
found = 1;
break;
}
}
fclose(fp);
if (found) {
printf("修改成功!\n");
} else {
printf("没有找到该学生!\n");
}
}
int main() {
int choice;
do {
printf("\n1. 添加学生信息\n");
printf("2. 删除学生信息\n");
printf("3. 查询学生信息\n");
printf("4. 修改学生信息\n");
printf("0. 退出程序\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1: addStudent(); break;
case 2: delStudent(); break;
case 3: queryStudent(); break;
case 4: modifyStudent(); break;
case 0: break;
default: printf("输入错误,请重新输入!\n"); break;
}
} while (choice != 0);
return 0;
}
```
在代码中,使用了文件操作函数 `fopen`、`fwrite`、`fread`、`fclose`、`remove`、`rename` 和偏移量定位函数 `fseek`,需要注意文件打开模式和文件读写的错误处理。同时,使用了字符串比较函数 `strcmp` 和浮点数输入格式化函数 `%f` 等常用函数。