设计一个类,学生类。

设计一个类:要求对类进行分开(源文件和头文件分开)
学生类:
成绩:语文 数学 英语 要求用数组
学号:用真实学号
姓名:要求用中文 ,String
功能:当用const函数要用到
1、要求构造函数
2、改变学号 ,成绩 ,姓名功能函数
3、求平均成绩
4、打印学习成绩(学号,姓名,各科成绩,平均成绩)

#include <string>
#include <iostream>
using std::string;
using std::cout; using std::cin; using std::endl;
using std::ostream;
 
class student
{
    friend ostream & operator<<(ostream & os, const student &studData);
public:
    student() = default;
    student(const string &name, int number, double chjA = 0.0, double chjB = 0.0)
        :mStrName(name), miNumber(number), mChengjiA(chjA), mChengjiB(chjB)
    {}//显式构造函数
    student(const student & rStData)//拷贝构造函数
    {
        if (this != &rStData)
        {
            mStrName = rStData.mStrName;
            miNumber = rStData.miNumber;
            mChengjiA = rStData.mChengjiA;
            mChengjiB = rStData.mChengjiB;
        }
    }
 
    double GetAveChengji()const
    {
        return (mChengjiA + mChengjiB) / 2;
    }
public:
 
private:
    string mStrName;
    int miNumber = -1;
    double mChengjiA = 0.0;
    double mChengjiB = 0.0;
};
 
ostream & operator<<(ostream & os,const student &studData)//流输出操作符重载
{
    os << "同学的姓名是:" << studData.mStrName
        << "。他/她的学号是:" << studData.miNumber
        << "。他/她第一科成绩为:" << studData.mChengjiA
        << ";第二科成绩为:" << studData.mChengjiA
        << ",平均成绩为:" << studData.GetAveChengji();
 
    return os;
}
 
int main()
{
    student st ={ "xx", 9989, 89.0, 78.4 };
    student st2 = st;
 
    cout << st << endl << st2;
    return 0;
}

img