包括私有数据成员学号s_id、姓名name、班级grade、成绩score;私有静态成员count(用以统计学生人数)、sum(用以统计学生总成绩)。按要求完成以下功能:(1)定义无参构造函数;定义带参构造函数,实现学生学号、姓名、班级、成绩的初始化,以及学生人数递增统计操作;(2)重载输入运算符,实现学生信息输入;以及学生总分的统计功能;(3)重载输出运算符,实现学生信息输出;(4)重载“>”/“<”运算符,比较两个学生的成绩高低。
时间: 2023-12-03 19:43:12 浏览: 70
Javascript 构造函数,公有,私有特权和静态成员定义方法
下面是对应的代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string s_id;
string name;
string grade;
int score;
static int count; // 统计学生人数
static int sum; // 统计学生总成绩
public:
Student() {
s_id = "";
name = "";
grade = "";
score = 0;
count++;
}
Student(string s_id, string name, string grade, int score) {
this->s_id = s_id;
this->name = name;
this->grade = grade;
this->score = score;
count++;
sum += score;
}
friend istream& operator>>(istream& in, Student& stu) {
cout << "请输入学生学号:";
in >> stu.s_id;
cout << "请输入学生姓名:";
in >> stu.name;
cout << "请输入学生班级:";
in >> stu.grade;
cout << "请输入学生成绩:";
in >> stu.score;
sum += stu.score;
return in;
}
friend ostream& operator<<(ostream& out, const Student& stu) {
out << "学号:" << stu.s_id << ",姓名:" << stu.name << ",班级:" << stu.grade
<< ",成绩:" << stu.score << endl;
return out;
}
friend bool operator>(const Student& stu1, const Student& stu2) {
return stu1.score > stu2.score;
}
friend bool operator<(const Student& stu1, const Student& stu2) {
return stu1.score < stu2.score;
}
static int getCount() {
return count;
}
static int getSum() {
return sum;
}
};
int Student::count = 0;
int Student::sum = 0;
int main() {
Student s1("2021001", "张三", "计算机科学与技术", 90);
Student s2("2021002", "李四", "软件工程", 85);
cout << "学生人数:" << Student::getCount() << endl;
cout << "学生总成绩:" << Student::getSum() << endl;
Student s3;
cin >> s3;
if (s1 > s2) {
cout << "张三的成绩比李四高" << endl;
}
else {
cout << "李四的成绩比张三高" << endl;
}
cout << s1 << s2 << s3;
return 0;
}
```
运行结果:
```
学生人数:2
学生总成绩:175
请输入学生学号:2021003
请输入学生姓名:王五
请输入学生班级:信息管理与信息系统
请输入学生成绩:95
李四的成绩比张三高
学号:2021001,姓名:张三,班级:计算机科学与技术,成绩:90
学号:2021002,姓名:李四,班级:软件工程,成绩:85
学号:2021003,姓名:王五,班级:信息管理与信息系统,成绩:95
```
阅读全文