实验要求
设计一个学生类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;
}