7.先定义一个成员类student,里面有两个成员变量,int型的班级序号,int型的成绩;再定义一个用于查找的类 score_recorder ,用于记录班级所有成员的得分 类成员变量: 成员表(member_table),类型为: student数组 班级人数,类型为 int 类成员函数: (1)排序:将成员表按照成绩从高到低排序,即成绩最高的学生为 student[0] (2)查找:输入学生的班级序号,查找对应的成绩 (3)修改操作:输入学生的班级序号,和新成绩,修改成员表对应学生的成绩 (4)输出前10名(rank_10):输出成绩最高的前十名的班级序号和相对应的成绩 要求: (1)班级序号必须合法,也就是大于0小于班级人数值 (2)成绩用float数来存储,且只保留小数点后2位 在主函数中,完成以下的操作: (1)自定义班级人数,然后录入第一次月考成绩,月考成绩同样自定义 (2)输出第一次月考成绩排名最高的10位同学成绩 (3)录入第二次月考成绩,月考成绩同样自定义 (4)输出第二次月考成绩排名最高的10位同学成绩 (5)有两名同学(班级序号自定义)想要查成绩,请你帮助他们查找成绩
时间: 2024-03-10 17:51:27 浏览: 187
建立一个名为Student的类,该类有以下几个私有成员变量:学生姓名、学号、性别、年龄。还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。
4星 · 用户满意度95%
好的,我明白了您的问题。这是一个关于班级成绩记录和管理的程序。以下是代码实现:
```python
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
const int MAX_SIZE = 100;
class student {
public:
int class_num;
float score;
};
class score_recorder {
public:
student member_table[MAX_SIZE];
int class_size;
void sort();
float find(int class_num);
bool modify(int class_num, float new_score);
void rank_10();
};
void score_recorder::sort() {
std::sort(member_table, member_table + class_size, [](student a, student b) { return a.score > b.score; });
}
float score_recorder::find(int class_num) {
if (class_num < 1 || class_num > class_size) {
return -1;
}
return member_table[class_num - 1].score;
}
bool score_recorder::modify(int class_num, float new_score) {
if (class_num < 1 || class_num > class_size) {
return false;
}
member_table[class_num - 1].score = new_score;
return true;
}
void score_recorder::rank_10() {
sort();
cout << "班级序号\t成绩" << endl;
for (int i = 0; i < 10 && i < class_size; i++) {
cout << member_table[i].class_num << "\t\t" << setprecision(2) << fixed << member_table[i].score << endl;
}
}
int main() {
int class_size;
cout << "请输入班级人数:";
cin >> class_size;
score_recorder sr;
sr.class_size = class_size;
for (int i = 0; i < class_size; i++) {
sr.member_table[i].class_num = i + 1;
cout << "请输入第一次月考成绩(班级序号:" << sr.member_table[i].class_num << "):";
cin >> sr.member_table[i].score;
}
cout << "第一次月考成绩排名前10的同学为:" << endl;
sr.rank_10();
for (int i = 0; i < class_size; i++) {
cout << "请输入第二次月考成绩(班级序号:" << sr.member_table[i].class_num << "):";
cin >> sr.member_table[i].score;
}
cout << "第二次月考成绩排名前10的同学为:" << endl;
sr.rank_10();
int class_num;
cout << "请输入要查询成绩的学生班级序号:";
cin >> class_num;
float score = sr.find(class_num);
if (score == -1) {
cout << "班级序号不合法!" << endl;
}
else {
cout << "班级序号为 " << class_num << " 的学生的成绩为:" << setprecision(2) << fixed << score << endl;
}
cout << "请输入要修改成绩的学生班级序号和新成绩(以空格分隔):";
cin >> class_num >> score;
if (sr.modify(class_num, score)) {
cout << "修改成功!" << endl;
}
else {
cout << "班级序号不合法!" << endl;
}
return 0;
}
```
我将上述代码保存在score_recorder.cpp文件中。您可以将其编译并运行,以测试其功能。
阅读全文