编程题(文件操作)。定义一个学生类Student。成员有:(1)私有数据成员:ID(学号,int类型),Name(姓名,string类型)。(2)公有成员函数:GetID(),GetName()分别用于获取学生的上述信息;重载输出流运算符<<,使它能输出学生类对象的所有信息。 再编写一个主程序,主程序中定义一个对象数组,并为该对象数组赋值3个学生对象,这三个学生对象的数据可以自定。使用该输出流把这三个同学的基本信息输出到文件“sinfo1.txt”中。最后再从该文件中读取数据,把这3个学生对象信息按照学号的降序写入文件“sinfo2.txt”中。
时间: 2024-02-17 18:05:10 浏览: 86
设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)
5星 · 资源好评率100%
下面是该程序的实现:
```c++
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
using namespace std;
class Student {
public:
Student(int id, string name) : ID(id), Name(name) {}
int GetID() const { return ID; }
string GetName() const { return Name; }
friend ostream& operator<<(ostream& os, const Student& stu);
private:
int ID;
string Name;
};
ostream& operator<<(ostream& os, const Student& stu) {
os << "ID: " << stu.ID << " Name: " << stu.Name;
return os;
}
bool cmp(const Student& a, const Student& b) {
return a.GetID() > b.GetID();
}
int main() {
Student s[3] = { Student(1001, "Tom"), Student(1002, "Jack"), Student(1003, "Lily") };
ofstream ofs("sinfo1.txt");
for (int i = 0; i < 3; i++) {
ofs << s[i] << endl;
}
ofs.close();
ifstream ifs("sinfo1.txt");
Student s2[3];
for (int i = 0; i < 3; i++) {
int id;
string name;
ifs >> id >> name;
s2[i] = Student(id, name);
}
ifs.close();
sort(s2, s2 + 3, cmp);
ofstream ofs2("sinfo2.txt");
for (int i = 0; i < 3; i++) {
ofs2 << s2[i] << endl;
}
ofs2.close();
return 0;
}
```
该程序定义了一个Student类,包含学生的ID和Name信息,并重载了输出流运算符<<,以便能够输出学生对象的所有信息。
在主程序中,定义了一个对象数组s,包含3个学生对象。然后,使用输出流把这三个同学的基本信息输出到文件“sinfo1.txt”中。接着,从该文件中读取数据,把这3个学生对象信息按照学号的降序排列,并写入文件“sinfo2.txt”中。
阅读全文