用C语言写一个学生档案管理系统
时间: 2023-11-05 08:04:19 浏览: 57
C语言 学生档案管理系统
5星 · 资源好评率100%
好的,这是一个非常基本的学生档案管理系统,主要使用了文件存储,包括添加学生信息、查找学生信息、修改学生信息和删除学生信息。代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
struct student {
char name[20];
int age;
float score;
};
// 定义文件名
const char *filename = "students.dat";
// 添加学生信息
void add_student() {
struct student stu;
printf("请输入学生姓名:");
scanf("%s", stu.name);
printf("请输入学生年龄:");
scanf("%d", &stu.age);
printf("请输入学生成绩:");
scanf("%f", &stu.score);
FILE *fp;
if ((fp = fopen(filename, "ab")) == NULL) {
printf("打开文件失败!\n");
exit(1);
}
fwrite(&stu, sizeof(struct student), 1, fp);
fclose(fp);
printf("添加成功!\n");
}
// 查找学生信息
void find_student() {
char name[20];
printf("请输入要查找的学生姓名:");
scanf("%s", name);
FILE *fp;
struct student stu;
if ((fp = fopen(filename, "rb")) == NULL) {
printf("打开文件失败!\n");
exit(1);
}
while (fread(&stu, sizeof(struct student), 1, fp) == 1) {
if (strcmp(stu.name, name) == 0) {
printf("姓名:%s,年龄:%d,成绩:%.2f\n", stu.name, stu.age, stu.score);
fclose(fp);
return;
}
}
fclose(fp);
printf("未找到该学生!\n");
}
// 修改学生信息
void modify_student() {
char name[20];
printf("请输入要修改的学生姓名:");
scanf("%s", name);
FILE *fp;
struct student stu;
if ((fp = fopen(filename, "r+b")) == NULL) {
printf("打开文件失败!\n");
exit(1);
}
while (fread(&stu, sizeof(struct student), 1, fp) == 1) {
if (strcmp(stu.name, name) == 0) {
printf("请输入学生年龄:");
scanf("%d", &stu.age);
printf("请输入学生成绩:");
scanf("%f", &stu.score);
fseek(fp, -sizeof(struct student), SEEK_CUR);
fwrite(&stu, sizeof(struct student), 1, fp);
fclose(fp);
printf("修改成功!\n");
return;
}
}
fclose(fp);
printf("未找到该学生!\n");
}
// 删除学生信息
void delete_student() {
char name[20];
printf("请输入要删除的学生姓名:");
scanf("%s", name);
FILE *fp1, *fp2;
struct student stu;
if ((fp1 = fopen(filename, "rb")) == NULL) {
printf("打开文件失败!\n");
exit(1);
}
if ((fp2 = fopen("temp.dat", "wb")) == NULL) {
printf("创建文件失败!\n");
exit(1);
}
while (fread(&stu, sizeof(struct student), 1, fp1) == 1) {
if (strcmp(stu.name, name) != 0) {
fwrite(&stu, sizeof(struct student), 1, fp2);
}
}
fclose(fp1);
fclose(fp2);
remove(filename);
rename("temp.dat", filename);
printf("删除成功!\n");
}
// 主函数
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加学生信息\n");
printf("2. 查找学生信息\n");
printf("3. 修改学生信息\n");
printf("4. 删除学生信息\n");
printf("5. 退出系统\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
find_student();
break;
case 3:
modify_student();
break;
case 4:
delete_student();
break;
case 5:
exit(0);
default:
printf("输入有误,请重新输入!\n");
}
}
return 0;
}
```
注意:该代码仅供参考,实际使用中还需要考虑错误处理、文件读写等问题。
阅读全文