1.设计一个类,成员变量包括学号、姓名、性别、年龄、2门或更多的成绩;
2.完成以下功能:
(1)由键盘输入学生个数 n ;
(2)键盘输入每个学生的学号等基本信息;
(3)计算每个学生的平均成绩;
(4)判断每个学生是否有不及格的课程;
(5)输出每个学生的基本信息、平均成绩、是否及格;
3.要求
1.类声明放在头文件(*. h )中;
2.成员函数定义放在源文件(*. cpp )中;
3.主函数放在源文件( file . cpp )中
初始化列表问题以及对象引用数据在不同文件的处理
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 【以下回答由 GPT 生成】
首先,我们可以创建一个名为"Student"的类来表示一个学生对象。在类的声明中,我们需要包含学号、姓名、性别、年龄和成绩的数据成员。然后,我们可以编写成员函数来实现功能的要求。
以下是一个可能的解决方案:
// Student.h #ifndef STUDENT_H #define STUDENT_H #include <string> #include <vector> class Student { public: // 构造函数 Student(); // 设置学生基本信息 void setBasicInfo(int id, const std::string& name, const std::string& gender, int age); // 添加学生的一门成绩 void addScore(double score); // 计算平均成绩 double calculateAverageScore() const; // 判断是否有不及格的课程 bool hasFailedCourse() const; // 输出学生的基本信息、平均成绩和是否及格 void displayInfo() const; private: int studentId; std::string studentName; std::string studentGender; int studentAge; std::vector<double> scores; }; #endif // Student.cpp #include "Student.h" #include <iostream> Student::Student() { studentId = 0; studentName = ""; studentGender = ""; studentAge = 0; } void Student::setBasicInfo(int id, const std::string& name, const std::string& gender, int age) { studentId = id; studentName = name; studentGender = gender; studentAge = age; } void Student::addScore(double score) { scores.push_back(score); } double Student::calculateAverageScore() const { if (scores.empty()) { return 0.0; } double sum = 0.0; for (double score : scores) { sum += score; } return sum / scores.size(); } bool Student::hasFailedCourse() const { for (double score : scores) { if (score < 60) { return true; } } return false; } void Student::displayInfo() const { std::cout << "学号:" << studentId << std::endl; std::cout << "姓名:" << studentName << std::endl; std::cout << "性别:" << studentGender << std::endl; std::cout << "年龄:" << studentAge << std::endl; std::cout << "平均成绩:" << calculateAverageScore() << std::endl; std::cout << "是否及格:" << (hasFailedCourse() ? "不及格" : "及格") << std::endl; } // main.cpp #include "Student.h" #include <iostream> int main() { int numStudents; std::cout << "请输入学生数量:"; std::cin >> numStudents; std::vector<Student> students; for (int i = 0; i < numStudents; i++) { int id; std::string name; std::string gender; int age; std::cout << "请输入第 " << (i+1) << " 个学生的学号:"; std::cin >> id; std::cout << "请输入第 " << (i+1) << " 个学生的姓名:"; std::cin >> name; std::cout << "请输入第 " << (i+1) << " 个学生的性别:"; std::cin >> gender; std::cout << "请输入第 " << (i+1) << " 个学生的年龄:"; std::cin >> age; Student student; student.setBasicInfo(id, name, gender, age); for (int j = 0; j < 2; j++) { double score; std::cout << "请输入第 " << (j+1) << " 门成绩:"; std::cin >> score; student.addScore(score); } students.push_back(student); } for (const Student& student : students) { student.displayInfo(); } return 0; }
这个解决方案中,我们创建了一个头文件"Student.h"来包含类的声明,并在头文件中使用了宏保护来防止头文件被重复包含。头文件中包含了类的数据成员和成员函数的声明。
然后,我们在源文件"Student.cpp"中实现了类的成员函数。通过实现类的成员函数,我们可以让这些函数在不同的源文件中实现,而不是都写在主函数"main.cpp"中。
在主函数"main.cpp"中,我们首先接受键盘输入的学生数量,并使用一个循环来逐个输入每个学生的基本信息和两门成绩。然后,我们将每个学生对象存储在一个向量中,并在最后遍历向量来输出每个学生的基本信息、平均成绩和是否及格。
这个解决方案满足了问题的要求,并提供了一个良好的代码组织结构,使得类的声明和实现可以分离在不同的文件中,提高了代码的可读性和可维护性。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 STM32 INMP441无法读取数据
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境