c++ 构造函数与析构函数(二)

实验要求

设计一个学生类student,它具有的私有数据成员是:学号、姓名、数学、英语、计算机成绩;

  • 具有的公有成员函数是:
  • 求三门课总成绩的函数sum;
  • 求三门课平均成绩的函数average;
  • 显示学生数据信息的函数print;
  • 获取学生学号的函数get_num;
  • 设置学生数据信息的函数set_inf。

编制主函数,

  • 说明一个student类对象的数组并进行全班学生信息的输入与设置
  • 而后求出每一学生的总成绩、平均成绩、全班学生总成绩最高分、全班学生总平均分,
  • 并在输入一个学号后,输出该学生有关的全部数据信息。

代码实现如下:

#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;

/*
设计一个学生类student,它具有的私有数据成员是:学号、姓名、数学、英语、计算机成绩;具有的公有成员函数是:求三门课总成绩的函数sum;求三门课平均成绩的函数average;显示学生数据信息的函数print;获取学生学号的函数get_num;设置学生数据信息的函数set_inf。
*/

class student {
    string name;
    int id,math=0, eng=0, com=0;
    int sum=0, average = 0;
public:
    student();//构造函数
    ~student();//析构函数
    void set_inf(int id,string name,int math,int eng,int com);
    void sumn();//三门课总成绩
    void averagen();//求三门课平均成绩
    void print();//显示学生数据信息
    int getId();//获得id
    int getSum();//获得总成绩
    int getAverage();//获得平均成绩

};
//构造函数实现
student::student() {};

void student::set_inf(int id, string name, int math, int eng, int com) {
    this->id = id;
    this->name = name;
    this->math = math;
    this->eng = eng;
    this->com = com;
}

void student::sumn() {
    this->sum = this->com + this->math + this->eng;
}

void student::averagen() {
    this->average = (this->com + this->math + this->eng) / 3;
}

void student::print() {
    cout << this->id << "  ";
    cout << this->name << "  ";
    cout << this->math << "  ";
    cout << this->eng << "  ";
    cout << this->com << "  ";
    cout << this->sum << "  ";
    cout << this->average << "  ";
    cout << endl;
}

int student::getSum() {
    return this->sum;
}

int student::getAverage() {
    return this->average;
}

int student::getId() {
    return this->id;
}


int maxAll(student stu[],int size) {
    int ans=0;
    for (int i = 0; i < size;i++) {
        ans = max(ans,stu[i].getSum());
    }
    return ans;
}

int averageAll(student stu[],int size) {
    int ans=0;
    for (int i = 0; i < size;i++) {
        ans += stu[i].getSum();
    }
    return ans / size;
}

void findById(int Queryid,student stu[],int size) {
    for (int i = 0; i < size;i++) {
        if (Queryid == stu[i].getId()) {
            stu[i].print();
            break;
        }
    }
}

//析构函数实现
student::~student() {};

/*
编制主函数,说明一个student类对象的数组并进行全班学生信息的输入与设置,而后求出每一学生的总成绩、平均成绩、全班学生总成绩最高分、全班学生总平均分,并在输入一个学号后,输出该学生有关的全部数据信息。
*/
int main() {
    int stuSize = 3;
    char flag = 'y';
    int QueryId;
    string name;
    int id, math = 0, eng = 0, com = 0;
    student stu[100];
    int t = stuSize;
    cout << "请输入学生学号、姓名、数学、英语、计算机成绩"<<endl;
    while (t--) {
        cin >> id >> name >> math >> eng >> com;
        stu[t].set_inf(id,name,math,eng,com);
        stu[t].sumn();
        stu[t].averagen();
        cout<<t<<",请继续输入学生信息:"<<endl;
    }
    cout << "完成输入"<<endl;
    cout << "学生详细信息如下:"<<endl;
    cout << "学号、姓名、数学、英语、计算机、总分、平均分" << endl;
    t = stuSize;
    while (t--) {
        stu[t].print();
    }
    cout << "全班学生总成绩最高分:"<<maxAll(stu,stuSize)<<endl;
    cout << "全班学生总平均分:"<<averageAll(stu,stuSize)<<endl;
    cout<<"是否查询单个学生信息:(y/n)"<<endl;
    cin >> flag;
    while (flag=='y') {
        cout << "输入学生学号" << endl;
        cin >>QueryId;
        findById(QueryId,stu,stuSize);
        cout << "是否继续查询单个学生信息:(y/n)" << endl;
        cin >> flag;
    }
    cout << "构建完成!" << endl;
    system("pause");
    return 0;
}

效果截图:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章