5、设计一个CStudent(学生)类,并使CStudent类具有以下特点: 1)该类有学生姓名、学号、C++程序设计、高等数学、数据结构三门课程的成绩; 2)学生全部信息由键盘输入,以提高程序的适应性; 3)通过成员函数统计学生平均成绩,当课程数量增加时,成员函数无须修改仍可以求取平均成绩; 4)输出学生的基本信息、各科成绩与平均成绩; 5)学生对象的定义采用对象数组实现
时间: 2023-05-21 11:05:58 浏览: 65
回答:
为了实现这个CStudent(学生)类,我们需要定义一个具有学生姓名、学号、三门课程的成绩的结构体来存储每个学生的信息,在结构体中,我们还需要定义一个成员函数来计算学生的平均分数。为了增加程序的适应性,我们从键盘读入每位学生的详细信息。最后,我们定义一个类,将结构体和函数封装起来,实现我们所需的目标。以下是实现这个类的一种方法:
```c++
#include<iostream>
#include<string>
using namespace std;
struct student{
string name;
int id;
float c_score;
float math_score;
float ds_score;
float average_score;
};
class CStudent{
public:
void set_data();
void calculate_average_score();
void display_data();
private:
student st;
};
void CStudent::set_data(){
cout<<"Enter student name: ";
getline(cin, st.name);
cout<<"Enter student id: ";
cin>>st.id;
cout<<"Enter C score: ";
cin>>st.c_score;
cout<<"Enter Math score: ";
cin>>st.math_score;
cout<<"Enter Data Structure score: ";
cin>>st.ds_score;
}
void CStudent::calculate_average_score(){
st.average_score = (st.c_score + st.math_score + st.ds_score) / 3;
}
void CStudent::display_data(){
cout<<"Student name: "<<st.name<<endl;
cout<<"Student id: "<<st.id<<endl;
cout<<"C score: "<<st.c_score<<endl;
cout<<"Math score: "<<st.math_score<<endl;
cout<<"Data Structure score: "<<st.ds_score<<endl;
cout<<"Average score: "<<st.average_score<<endl;
}
int main(){
int n;
cout<<"How many students do you want to create? ";
cin>>n;
CStudent *a = new CStudent[n];
for(int i=0;i<n;i++){
cout<<"Enter details of student "<<i+1<<endl;
a[i].set_data();
a[i].calculate_average_score();
}
for(int i=0;i<n;i++){
cout<<"\nDetails of student "<<i+1<<endl;
a[i].display_data();
}
delete[] a;
return 0;
}
```
当您运行程序时,它将提示您输入要创建的学生数,然后依次请求每位学生的详细信息,最后显示每位学生的详细信息和平均分数。