c++实现文件学生信息的读写排序
时间: 2023-08-20 19:05:16 浏览: 41
可以使用以下步骤实现文件学生信息的读写排序:
1. 定义一个结构体来存储学生信息,包括学号、姓名、年龄、性别、成绩等字段。
2. 定义一个函数来读取学生信息文件,并将读取的信息存储到结构体数组中。
3. 定义一个函数来对学生信息进行排序,可以使用快速排序等算法来实现。
4. 定义一个函数来将排序后的学生信息写入到文件中。
下面是一个示例代码,可以根据需要进行修改:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
struct Student {
string id;
string name;
int age;
string gender;
double score;
};
bool cmp(Student a, Student b) {
return a.score > b.score; // 按成绩降序排序
}
void readData(Student students[], int &n) {
ifstream fin("data.txt");
if (!fin) {
cout << "文件打开失败!" << endl;
return;
}
n = 0;
while (!fin.eof()) {
fin >> students[n].id >> students[n].name >> students[n].age >> students[n].gender >> students[n].score;
n++;
}
fin.close();
}
void writeData(Student students[], int n) {
ofstream fout("sorted_data.txt");
if (!fout) {
cout << "文件打开失败!" << endl;
return;
}
for (int i = 0; i < n; i++) {
fout << students[i].id << " " << students[i].name << " " << students[i].age << " " << students[i].gender << " " << students[i].score << endl;
}
fout.close();
}
int main() {
const int MAX_N = 1000;
Student students[MAX_N];
int n = 0;
readData(students, n);
sort(students, students + n, cmp);
writeData(students, n);
return 0;
}
```