C++1、输入多个学生的选修课程信息,以清晰的格式写入文件中2、修改某个学生的选修记录
时间: 2023-11-27 10:50:06 浏览: 38
1、输入多个学生的选修课程信息,以清晰的格式写入文件中
可以使用C++的文件流来完成这个任务。首先定义一个学生结构体,包括姓名和选修课程。然后读入学生信息,写入文件中。
示例代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Student {
string name;
string course;
};
int main() {
ofstream ofs("students.txt");
int num;
cout << "请输入学生数量:";
cin >> num;
for (int i = 0; i < num; i++) {
Student s;
cout << "请输入第" << i + 1 << "个学生的姓名和选修课程:";
cin >> s.name >> s.course;
ofs << s.name << '\t' << s.course << endl;
}
ofs.close();
cout << "写入成功!" << endl;
return 0;
}
```
运行结果:
```
请输入学生数量:3
请输入第1个学生的姓名和选修课程:张三 C++程序设计
请输入第2个学生的姓名和选修课程:李四 数据结构
请输入第3个学生的姓名和选修课程:王五 计算机网络
写入成功!
```
这里使用了ofstream类来创建文件输出流,用于写入文件。当输入完所有学生信息后,需要调用close()函数关闭文件输出流。
2、修改某个学生的选修记录
首先需要读取文件中的所有学生信息,然后根据学生姓名找到要修改的学生记录,进行修改,最后将修改后的所有学生信息重新写入文件中。
示例代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
struct Student {
string name;
string course;
};
int main() {
ifstream ifs("students.txt");
vector<Student> students;
string line;
while (getline(ifs, line)) {
Student s;
int pos = line.find('\t');
s.name = line.substr(0, pos);
s.course = line.substr(pos + 1);
students.push_back(s);
}
ifs.close();
string name;
cout << "请输入要修改的学生姓名:";
cin >> name;
for (int i = 0; i < students.size(); i++) {
if (students[i].name == name) {
cout << "请输入新的选修课程:";
cin >> students[i].course;
break;
}
}
ofstream ofs("students.txt");
for (int i = 0; i < students.size(); i++) {
ofs << students[i].name << '\t' << students[i].course << endl;
}
ofs.close();
cout << "修改成功!" << endl;
return 0;
}
```
运行结果:
```
请输入要修改的学生姓名:张三
请输入新的选修课程:计算机网络
修改成功!
```
这里使用了ifstream类来创建文件输入流,用于读取文件。读取文件时,使用了字符串的find()和substr()函数来分离姓名和选修课程信息,并将学生信息存储在vector容器中。读取完文件后,需要调用close()函数关闭文件输入流。
修改学生信息时,根据输入的学生姓名找到对应的学生记录,然后输入新的选修课程信息。注意,这里只修改了第一个匹配到的学生记录。
最后,再次使用ofstream类创建文件输出流,将修改后的所有学生信息写入文件中。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)