利用文件IO实现学生管理系统;一个学生一个文件;文件名称为学号.data
时间: 2024-02-23 20:03:03 浏览: 27
实现学生管理系统的基本思路如下:
1. 定义学生信息的结构体,包含学号、姓名、年龄、性别、成绩等信息;
2. 定义文件操作函数,包括打开文件、读取学生信息、写入学生信息、关闭文件等操作;
3. 实现学生信息的增删改查功能,包括添加学生信息、删除学生信息、修改学生信息、查询学生信息等操作;
4. 将学生信息保存到文件中,每个学生对应一个文件,文件名称为学号.data。
下面是一个简单的实现示例:
```c++
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
// 定义学生信息的结构体
struct Student {
char id[20];
char name[20];
int age;
char gender[10];
float score;
};
// 文件操作函数
ifstream& operator >> (ifstream& fin, Student& stu) {
fin >> stu.id >> stu.name >> stu.age >> stu.gender >> stu.score;
return fin;
}
ofstream& operator << (ofstream& fout, const Student& stu) {
fout << stu.id << " " << stu.name << " " << stu.age << " " << stu.gender << " " << stu.score << endl;
return fout;
}
// 学生信息的增删改查功能
void add_student() {
Student stu;
cout << "请输入学生信息:" << endl;
cout << "学号:";
cin >> stu.id;
cout << "姓名:";
cin >> stu.name;
cout << "年龄:";
cin >> stu.age;
cout << "性别:";
cin >> stu.gender;
cout << "成绩:";
cin >> stu.score;
char filename[30];
sprintf(filename, "%s.data", stu.id);
ofstream fout(filename);
fout << stu;
fout.close();
cout << "添加成功!" << endl;
}
void delete_student() {
char id[20];
cout << "请输入要删除的学生学号:";
cin >> id;
char filename[30];
sprintf(filename, "%s.data", id);
if (remove(filename) == 0) {
cout << "删除成功!" << endl;
} else {
cout << "删除失败!" << endl;
}
}
void modify_student() {
char id[20];
cout << "请输入要修改的学生学号:";
cin >> id;
char filename[30];
sprintf(filename, "%s.data", id);
ifstream fin(filename);
if (!fin) {
cout << "学号不存在!" << endl;
return;
}
Student stu;
fin >> stu;
fin.close();
cout << "请输入新的学生信息:" << endl;
cout << "学号:";
cin >> stu.id;
cout << "姓名:";
cin >> stu.name;
cout << "年龄:";
cin >> stu.age;
cout << "性别:";
cin >> stu.gender;
cout << "成绩:";
cin >> stu.score;
ofstream fout(filename);
fout << stu;
fout.close();
cout << "修改成功!" << endl;
}
void query_student() {
char id[20];
cout << "请输入要查询的学生学号:";
cin >> id;
char filename[30];
sprintf(filename, "%s.data", id);
ifstream fin(filename);
if (!fin) {
cout << "学号不存在!" << endl;
return;
}
Student stu;
fin >> stu;
fin.close();
cout << "学号:" << stu.id << endl;
cout << "姓名:" << stu.name << endl;
cout << "年龄:" << stu.age << endl;
cout << "性别:" << stu.gender << endl;
cout << "成绩:" << stu.score << endl;
}
// 主函数
int main() {
while (true) {
cout << "请选择操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 删除学生信息" << endl;
cout << "3. 修改学生信息" << endl;
cout << "4. 查询学生信息" << endl;
cout << "5. 退出程序" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
query_student();
break;
case 5:
return 0;
default:
cout << "无效操作!" << endl;
break;
}
}
return 0;
}
```
在该示例中,我们使用了文件输入输出流来实现对学生信息文件的读写操作,使用了 C++ 中的文件操作函数 `remove` 来删除文件。为了方便,我们选择将学生信息保存到以学号为文件名的文件中。当用户输入一个学号时,程序会自动根据学号构造对应的文件名,并进行读取、写入、删除等操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)