實驗要求
設計一個學生類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;
}