C++建立两个磁盘文件f1.dat,f2.dat,编写程序实现以下工作:(1)从键盘输入学生姓名,学号,三科成绩,存放在一个磁盘文件中(3)从f1.dat中读入数据,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)*/
时间: 2024-05-07 07:23:09 浏览: 113
下面是基于C++的实现代码:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
struct Student {
string name;
int id;
int score1;
int score2;
int score3;
};
bool compare(const Student& s1, const Student& s2) {
return s1.id < s2.id;
}
int main() {
ofstream fout("f1.dat");
if (!fout) {
cout << "Failed to open f1.dat" << endl;
return 1;
}
// 从键盘输入学生信息并写入f1.dat
int n;
cout << "Enter the number of students: ";
cin >> n;
for (int i = 0; i < n; i++) {
Student s;
cout << "Enter the name, id, and scores of student " << i + 1 << ": ";
cin >> s.name >> s.id >> s.score1 >> s.score2 >> s.score3;
fout << s.name << " " << s.id << " " << s.score1 << " " << s.score2 << " " << s.score3 << endl;
}
fout.close();
ifstream fin("f1.dat");
if (!fin) {
cout << "Failed to open f1.dat" << endl;
return 1;
}
// 从f1.dat中读取学生信息并按id排序后写入f2.dat
Student* students = new Student[n];
for (int i = 0; i < n; i++) {
fin >> students[i].name >> students[i].id >> students[i].score1 >> students[i].score2 >> students[i].score3;
}
fin.close();
sort(students, students + n, compare);
ofstream fout2("f2.dat");
if (!fout2) {
cout << "Failed to open f2.dat" << endl;
return 1;
}
for (int i = 0; i < n; i++) {
fout2 << students[i].name << " " << students[i].id << " " << students[i].score1 << " " << students[i].score2 << " " << students[i].score3 << endl;
}
fout2.close();
delete[] students;
return 0;
}
```
代码的实现过程如下:
首先,我们使用 ofstream 类型的对象 fout 打开 f1.dat 文件,如果打开失败,则输出错误信息并返回 1。
然后,从键盘输入学生信息,包括姓名、学号和三科成绩,将这些信息存储在一个名为 Student 的结构体中,并将这些信息写入到 f1.dat 中。最后,关闭 fout 对象。
接下来,我们使用 ifstream 类型的对象 fin 打开 f1.dat 文件,如果打开失败,则输出错误信息并返回 1。然后,我们定义一个 Student 类型的指针数组 students,大小为 n,从 f1.dat 中读取学生信息,并将其存储在数组中。最后,关闭 fin 对象。
接下来,我们使用 sort 函数对 students 数组按学号从小到大排序。
最后,我们使用 ofstream 类型的对象 fout2 打开 f2.dat 文件,如果打开失败,则输出错误信息并返回 1。然后,我们将排好序的学生信息从数组中写入到 f2.dat 中。最后,关闭 fout2 对象,并释放动态分配的内存。
以上就是题目的实现过程,希望能对你有所帮助!
阅读全文