c++定义学生类Student,包含成员:学号(num):整型,姓名(name):char [15], 四门课成绩(sc):一维整型数组,然后定义相关函数分别完成以下功能: 1)输入学生信息; 2)显示学生信息; 3)保存学生信息; 4)从文件读取学生信息; 定义学生数组类StudentArray,包含Student * ps; 和int n两个成员,定义成员函数完成: 1)n个学生信息的录入(调用上面类Student的相关函数完成,函数名相同,下面方法相同); 2)n个学生信息的输出(调用上面类Student的相关函数完成,函数名相同,下面方法相同);;对学生信息按平均成绩排序后输出 3)计算并输出各门课程的平均成绩; 4)n个学生信息的保存(调用上面类Student的相关函数完成,函数名相同,下面方法相同); 5)从文件读取n个学生信息(调用上面类Student的相关函数完成,函数名相同,下面方法相同);
时间: 2024-02-12 09:09:40 浏览: 735
以下是实现该功能的代码:
```C++
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
class Student {
private:
int num;
char name[15];
int sc[4]; // 四门课成绩
public:
Student() {}
~Student() {}
void input(); // 输入学生信息
void display(); // 显示学生信息
void save(ofstream& out); // 保存学生信息到文件
void load(ifstream& in); // 从文件读取学生信息
float average(); // 计算平均成绩
};
void Student::input() {
cout << "请输入学号: ";
cin >> num;
cout << "请输入姓名: ";
cin >> name;
cout << "请输入四门课成绩: ";
for (int i = 0; i < 4; i++) {
cin >> sc[i];
}
}
void Student::display() {
cout << "学号: " << num << ", 姓名: " << name << ", 成绩: ";
for (int i = 0; i < 4; i++) {
cout << sc[i] << " ";
}
cout << endl;
}
void Student::save(ofstream& out) {
out.write((char*)&num, sizeof(num));
out.write(name, sizeof(name));
out.write((char*)sc, sizeof(sc));
}
void Student::load(ifstream& in) {
in.read((char*)&num, sizeof(num));
in.read(name, sizeof(name));
in.read((char*)sc, sizeof(sc));
}
float Student::average() {
float sum = 0;
for (int i = 0; i < 4; i++) {
sum += sc[i];
}
return sum / 4;
}
class StudentArray {
private:
Student* ps;
int n;
public:
StudentArray(int n = 0);
~StudentArray();
void input(); // n个学生信息的录入
void display(); // n个学生信息的输出
void sort(); // 对学生信息按平均成绩排序
void average(); // 计算并输出各门课程的平均成绩
void save(); // n个学生信息的保存
void load(); // 从文件读取n个学生信息
};
StudentArray::StudentArray(int n) {
this->n = n;
ps = new Student[n];
}
StudentArray::~StudentArray() {
delete[] ps;
}
void StudentArray::input() {
for (int i = 0; i < n; i++) {
cout << "第" << i + 1 << "个学生信息:" << endl;
ps[i].input();
}
}
void StudentArray::display() {
for (int i = 0; i < n; i++) {
cout << "第" << i + 1 << "个学生信息:" << endl;
ps[i].display();
}
}
void StudentArray::sort() {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (ps[i].average() < ps[j].average()) {
swap(ps[i], ps[j]);
}
}
}
}
void StudentArray::average() {
float sum[4] = {0};
for (int i = 0; i < n; i++) {
for (int j = 0; j < 4; j++) {
sum[j] += ps[i].average();
}
}
cout << "各门课程平均成绩: ";
for (int i = 0; i < 4; i++) {
cout << sum[i] / n << " ";
}
cout << endl;
}
void StudentArray::save() {
ofstream out("students.dat", ios::binary);
for (int i = 0; i < n; i++) {
ps[i].save(out);
}
out.close();
}
void StudentArray::load() {
ifstream in("students.dat", ios::binary);
for (int i = 0; i < n; i++) {
ps[i].load(in);
}
in.close();
}
int main() {
int n;
cout << "请输入学生人数: ";
cin >> n;
StudentArray sa(n);
sa.input();
sa.save();
sa.load();
sa.display();
sa.sort();
sa.display();
sa.average();
return 0;
}
```
该程序中,先定义了一个学生类Student,包含学生的基本信息和四门课成绩。该类的相关函数实现了输入、输出、保存和读取学生信息的功能,以及计算平均成绩的功能。
接着定义了一个学生数组类StudentArray,包含n个学生和相关操作。该类的相关函数实现了n个学生信息的录入、输出、排序和保存、读取等功能,以及计算各门课程平均成绩的功能。在主函数中,首先输入学生人数,然后创建一个StudentArray对象,调用相关函数完成功能。
阅读全文