利用文件IO实现学生管理系统;一个学生一个文件;文件名称为学号.data
时间: 2024-02-26 08:56:33 浏览: 101
好的,下面是一个简单的实现思路:
1. 定义学生结构体,包含姓名、学号、年龄等信息。
2. 定义文件读写函数,包括写入学生信息到文件和从文件读取学生信息两个部分。
3. 定义增删改查函数,包括添加学生信息、删除学生信息、修改学生信息和查询学生信息。
4. 根据学号生成文件名,以学号为文件名后缀,例如学号为20190101,则文件名为20190101.data。
5. 在主函数中实现菜单功能,包括添加学生信息、删除学生信息、修改学生信息和查询学生信息四个选项,以及退出程序选项。
下面是一个大致的代码框架,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生结构体
typedef struct student {
char name[20];
char id[20];
int age;
} Student;
// 写入学生信息到文件
void write_student_info(Student s) {
char filename[30];
sprintf(filename, "%s.data", s.id);
FILE* fp = fopen(filename, "wb");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
fwrite(&s, sizeof(Student), 1, fp);
fclose(fp);
}
// 从文件读取学生信息
Student read_student_info(char* id) {
char filename[30];
sprintf(filename, "%s.data", id);
FILE* fp = fopen(filename, "rb");
if (fp == NULL) {
printf("文件打开失败!\n");
Student s = {"", "", 0};
return s;
}
Student s;
fread(&s, sizeof(Student), 1, fp);
fclose(fp);
return s;
}
// 添加学生信息
void add_student_info() {
Student s;
printf("请输入学生姓名:");
scanf("%s", s.name);
printf("请输入学生学号:");
scanf("%s", s.id);
printf("请输入学生年龄:");
scanf("%d", &s.age);
write_student_info(s);
printf("添加成功!\n");
}
// 删除学生信息
void delete_student_info() {
char id[20];
printf("请输入学生学号:");
scanf("%s", id);
char filename[30];
sprintf(filename, "%s.data", id);
if (remove(filename) != 0) {
printf("删除失败!\n");
} else {
printf("删除成功!\n");
}
}
// 修改学生信息
void modify_student_info() {
char id[20];
printf("请输入学生学号:");
scanf("%s", id);
Student s = read_student_info(id);
if (strcmp(s.id, "") == 0) {
printf("学生信息不存在!\n");
return;
}
printf("请输入学生姓名(当前姓名:%s):", s.name);
scanf("%s", s.name);
printf("请输入学生年龄(当前年龄:%d):", s.age);
scanf("%d", &s.age);
write_student_info(s);
printf("修改成功!\n");
}
// 查询学生信息
void query_student_info() {
char id[20];
printf("请输入学生学号:");
scanf("%s", id);
Student s = read_student_info(id);
if (strcmp(s.id, "") == 0) {
printf("学生信息不存在!\n");
return;
}
printf("学生姓名:%s\n", s.name);
printf("学生学号:%s\n", s.id);
printf("学生年龄:%d\n", s.age);
}
// 主函数
int main() {
while (1) {
printf("请选择操作:\n");
printf("1.添加学生信息\n");
printf("2.删除学生信息\n");
printf("3.修改学生信息\n");
printf("4.查询学生信息\n");
printf("0.退出程序\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_student_info();
break;
case 2:
delete_student_info();
break;
case 3:
modify_student_info();
break;
case 4:
query_student_info();
break;
case 0:
return 0;
default:
printf("输入有误,请重新输入!\n");
}
}
}
```
注意:以上代码仅为示例,可能存在漏洞,具体实现需要根据具体需求进行修改。另外,在实际开发中还需考虑文件路径、文件格式、异常处理等问题。
阅读全文