3.设计一个学生类,其中数据成员有学号、姓名、年龄、3门课程的成绩,以及若干成员函数。并利用这个类建立一个对象数组。(1)求第一门课的平均成绩;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上三个要求。 要求: (1)使用构造函数实现对数据的输入。 (2)以上三个要求必须用成员函数实现。 (3)在头文件中完成类的声明,在.cpp中完成类的实现,在主文件(.cpp)中完成主函 数编写。
时间: 2024-02-05 17:11:00 浏览: 62
头文件 Student.h:
```cpp
#ifndef STUDENT_H
#define STUDENT_H
#include <string>
class Student {
public:
// 构造函数
Student(std::string number, std::string name, int age, double score1, double score2, double score3);
// 成员函数
double getAverageScore() const;
bool isFailed() const;
bool isExcellent() const;
void printInfo() const;
private:
std::string m_number; // 学号
std::string m_name; // 姓名
int m_age; // 年龄
double m_score1; // 第一门课成绩
double m_score2; // 第二门课成绩
double m_score3; // 第三门课成绩
};
#endif // STUDENT_H
```
Student.cpp:
```cpp
#include "Student.h"
#include <iostream>
#include <iomanip>
using namespace std;
// 构造函数
Student::Student(string number, string name, int age, double score1, double score2, double score3)
: m_number(number), m_name(name), m_age(age), m_score1(score1), m_score2(score2), m_score3(score3)
{
}
// 计算平均分
double Student::getAverageScore() const
{
return (m_score1 + m_score2 + m_score3) / 3;
}
// 判断是否有两门以上不及格
bool Student::isFailed() const
{
int count = 0;
if (m_score1 < 60) {
count++;
}
if (m_score2 < 60) {
count++;
}
if (m_score3 < 60) {
count++;
}
return count >= 2;
}
// 判断是否总分在85分以上或平均分在90分以上
bool Student::isExcellent() const
{
double totalScore = m_score1 + m_score2 + m_score3;
double averageScore = getAverageScore();
return totalScore >= 255 || averageScore >= 90;
}
// 输出学生信息
void Student::printInfo() const
{
cout << "学号:" << m_number << ",姓名:" << m_name << ",年龄:" << m_age << ","
<< "三门课程成绩:" << m_score1 << "、" << m_score2 << "、" << m_score3 << ","
<< "平均成绩:" << fixed << setprecision(1) << getAverageScore() << endl;
}
```
主文件 main.cpp:
```cpp
#include "Student.h"
#include <iostream>
#include <vector>
using namespace std;
// 求第一门课的平均成绩
double getAverageScore1(const vector<Student>& students)
{
double totalScore = 0;
for (const auto& student : students) {
totalScore += student.getAverageScore();
}
return totalScore / students.size();
}
// 找出有两门以上课程不及格的学生
void findFailedStudents(const vector<Student>& students)
{
for (const auto& student : students) {
if (student.isFailed()) {
cout << "学号:" << student.m_number << ",三门课程成绩:"
<< student.m_score1 << "、" << student.m_score2 << "、" << student.m_score3
<< ",平均成绩:" << fixed << setprecision(1) << student.getAverageScore() << endl;
}
}
}
// 找出平均成绩在90分以上或全部课程成绩在85分以上的学生
void findExcellentStudents(const vector<Student>& students)
{
for (const auto& student : students) {
if (student.isExcellent()) {
student.printInfo();
}
}
}
int main()
{
// 建立对象数组
vector<Student> students = {
Student("001", "张三", 20, 80, 90, 95),
Student("002", "李四", 21, 55, 70, 65),
Student("003", "王五", 19, 90, 88, 92),
Student("004", "赵六", 22, 85, 92, 87),
Student("005", "钱七", 20, 95, 98, 96)
};
// 求第一门课的平均成绩
double averageScore1 = getAverageScore1(students);
cout << "第一门课的平均成绩:" << fixed << setprecision(1) << averageScore1 << endl;
// 找出有两门以上课程不及格的学生
cout << "有两门以上课程不及格的学生:" << endl;
findFailedStudents(students);
// 找出平均成绩在90分以上或全部课程成绩在85分以上的学生
cout << "平均成绩在90分以上或全部课程成绩在85分以上的学生:" << endl;
findExcellentStudents(students);
return 0;
}
```
阅读全文