c语言学生管理系统文件
时间: 2023-07-29 11:12:05 浏览: 36
以下是一个简单的 C 语言实现的学生管理系统,包含了学生信息的录入、查询和修改等功能,并通过文件进行数据的存储和读取。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STU_NUM 100
typedef struct {
char name[20];
int age;
int score;
} Student;
void input_student(Student *stu) {
printf("请输入学生姓名:");
scanf("%s", stu->name);
printf("请输入学生年龄:");
scanf("%d", &stu->age);
printf("请输入学生成绩:");
scanf("%d", &stu->score);
}
void print_student(Student stu) {
printf("姓名:%s,年龄:%d,成绩:%d\n", stu.name, stu.age, stu.score);
}
void save_student(Student stu[], int n) {
FILE *fp;
fp = fopen("student.dat", "wb");
fwrite(stu, sizeof(Student), n, fp);
fclose(fp);
}
int load_student(Student stu[]) {
FILE *fp;
int n = 0;
fp = fopen("student.dat", "rb");
if (fp != NULL) {
while (fread(&stu[n], sizeof(Student), 1, fp) != 0) {
n++;
}
fclose(fp);
}
return n;
}
void show_menu() {
printf("\n");
printf("1. 录入学生信息\n");
printf("2. 查询学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 显示所有学生信息\n");
printf("0. 退出程序\n");
printf("\n");
}
int main() {
int choice = -1;
int n = 0;
Student stu[MAX_STU_NUM];
while (choice != 0) {
show_menu();
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_student(&stu[n]);
n++;
save_student(stu, n);
break;
case 2: {
char name[20];
printf("请输入要查询的学生姓名:");
scanf("%s", name);
int flag = 0;
for (int i = 0; i < n; i++) {
if (strcmp(name, stu[i].name) == 0) {
print_student(stu[i]);
flag = 1;
break;
}
}
if (!flag) {
printf("没有找到该学生!\n");
}
break;
}
case 3: {
char name[20];
printf("请输入要修改的学生姓名:");
scanf("%s", name);
int flag = 0;
for (int i = 0; i < n; i++) {
if (strcmp(name, stu[i].name) == 0) {
printf("请输入新的学生信息:\n");
input_student(&stu[i]);
flag = 1;
break;
}
}
if (!flag) {
printf("没有找到该学生!\n");
} else {
save_student(stu, n);
}
break;
}
case 4:
if (n == 0) {
printf("没有学生信息!\n");
} else {
for (int i = 0; i < n; i++) {
print_student(stu[i]);
}
}
break;
case 0:
printf("退出程序!\n");
break;
default:
printf("输入的操作编号有误,请重新输入!\n");
break;
}
}
return 0;
}
```
该程序主要通过 `Student` 结构体来存储学生的姓名、年龄和成绩等信息,通过文件的读写来实现数据的存储和读取。在主函数中,通过不断显示菜单并读取用户输入的操作编号来实现各种功能,包括录入学生信息、查询学生信息、修改学生信息和显示所有学生信息等。