设计一个Student(学生)类,完成如下要求: 该类具有姓名、学号、程序设计、信号处理、数据结构三门课程的成绩 学生全部信息由键盘输入 通过成员函数统计学生平均成绩。注意:当课程数量增加时,成员函数无需修改仍可求取平均成绩 输出学生的各科成绩与平均成绩 要求使用到静态成员和静态成员函数,即设计2个静态变量分别来统计学生的总数,不及格学生的总数,设计一个静态成员函数来访问这些静态成员变量并且打印输出。 学生对象的定义采用对象数组实现 使用const定义常量,便于实现对课程数量和学生人数的修改。 输出时注意对齐,整齐美观
时间: 2024-02-15 15:01:43 浏览: 163
以下是实现上述要求的代码:
```c++
#include <iostream>
#include <iomanip>
using namespace std;
const int COURSE_NUM = 3; // 课程数量
const int MAX_STU_NUM = 100; // 最大学生数量
class Student {
private:
string name;
string id;
int scores[COURSE_NUM];
static int totalNum; // 学生总数
static int failNum; // 不及格学生总数
public:
static void printStats() {
cout << "Total students: " << totalNum << endl;
cout << "Total failed students: " << failNum << endl;
}
Student() {
totalNum++;
failNum++;
}
void input() {
cout << "Input name: ";
cin >> name;
cout << "Input ID: ";
cin >> id;
for (int i = 0; i < COURSE_NUM; i++) {
cout << "Input score for course " << i + 1 << ": ";
cin >> scores[i];
if (scores[i] >= 60) {
failNum--;
}
}
}
double getAverageScore() const {
double sum = 0;
for (int i = 0; i < COURSE_NUM; i++) {
sum += scores[i];
}
return sum / COURSE_NUM;
}
void display() const {
cout << left << setw(10) << name
<< left << setw(15) << id;
for (int i = 0; i < COURSE_NUM; i++) {
cout << left << setw(10) << scores[i];
}
cout << left << setw(10) << setprecision(2) << fixed << getAverageScore() << endl;
}
};
int Student::totalNum = 0;
int Student::failNum = 0;
int main() {
int n;
cout << "Input the number of students: ";
cin >> n;
Student students[MAX_STU_NUM];
for (int i = 0; i < n; i++) {
cout << "Input information for student " << i + 1 << ":" << endl;
students[i].input();
}
cout << left << setw(10) << "Name"
<< left << setw(15) << "ID";
for (int i = 0; i < COURSE_NUM; i++) {
cout << left << setw(10) << "Course " << i + 1;
}
cout << left << setw(10) << "Average" << endl;
for (int i = 0; i < n; i++) {
students[i].display();
}
Student::printStats();
return 0;
}
```
上述代码中,`Student` 类有四个私有成员变量,分别是学生姓名、学号和每门课程的成绩。其中,课程数量采用常量 `COURSE_NUM` 来表示。同时,`Student` 类还有两个静态成员变量,分别是学生总数 `totalNum` 和不及格学生总数 `failNum`。这两个变量通过 `Student` 类的构造函数和输入函数自动更新。
`Student` 类还定义了三个成员函数。`input()` 函数从键盘输入学生信息和成绩,其中在输入成绩时,如果成绩及格,则更新 `failNum` 变量。`getAverageScore()` 函数返回学生的平均成绩。`display()` 函数以格式化的形式输出学生的各科成绩和平均成绩。
最后,在 `main()` 函数中,首先从键盘输入学生数量,然后定义一个 `Student` 类型的对象数组 `students`,大小为 `MAX_STU_NUM`。随后,通过循环输入每个学生的信息和成绩。输入完成后,按照要求输出表头和每个学生的信息和成绩,最后调用静态成员函数 `printStats()` 输出学生总数和不及格学生总数。
以上代码可以满足题目的所有要求。
阅读全文