求以下问题的完整代码

求以下问题的完整代码,要求使用c++面向对象的程序设计和构造函数的方法

img

img

运行结果:

img

代码

#include <iostream>
#include <iomanip>
#include <string.h>
using namespace std;


class Student
{
private:
    char name[32];
    float ps; //平时成绩
    float qm; //期末成绩
public:
    Student()
    {
        ps = 0;
        qm = 0;
    }
    void setName(const char* _name)
    {
        strcpy_s(name, 32, _name);
    }
    void setScore( float _ps, float _qm)
    {
        ps = _ps;
        qm = _qm;
    }
    float getTotal()
    {
        return (0.4 * ps + 0.6 * qm);
    }
    void display()
    {
        cout << name << " ";
        cout << fixed << setprecision(2) << ps << " ";
        cout << fixed << setprecision(2) << qm << " ";
        cout << fixed << setprecision(2) << getTotal() << endl;
    }
};

int main()
{
    Student stu[102];
    int n = 0;
    char name[40];
    float ps, qm;
    while (cin >> name >> ps >> qm)
    {
        stu[n].setName(name);
        stu[n].setScore(ps, qm);
        n++;
    }
    //排序
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - 1 - i; j++)
        {
            if (stu[j].getTotal() < stu[j + 1].getTotal())
            {
                Student t = stu[j];
                stu[j] = stu[j + 1];
                stu[j + 1] = t;
            }
        }
    }
    //输出
    for (int i = 0; i < n; i++)
        stu[i].display();
    return 0;
}

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;

class Student {
private:
    string name;
    float dailyGrade;
    float finalGrade;
    float totalGrade;
public:
    Student(string n, float d, float f) {
        name = n;
        dailyGrade = d;
        finalGrade = f;
        totalGrade = d * 0.4 + f * 0.6;
    }
    string getName() {
        return name;
    }
    float getTotalGrade() {
        return totalGrade;
    }
    void printInfo() {
        cout << name << " " << fixed << setprecision(2) << dailyGrade << " " << finalGrade << " " << totalGrade << endl;
    }
};

bool compare(Student s1, Student s2) {
    return s1.getTotalGrade() > s2.getTotalGrade();
}

int main() {
    vector<Student> students;
    string name;
    float dailyGrade, finalGrade;
    while (cin >> name >> dailyGrade >> finalGrade) {
        Student student(name, dailyGrade, finalGrade);
        students.push_back(student);
    }
    sort(students.begin(), students.end(), compare);
    for (int i = 0; i < students.size(); i++) {
        students[i].printInfo();
    }
    return 0;
}

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;

// 学生类
class Student {
public:
    Student(string n, double p, double f) : name(n), dailyGrade(p), finalGrade(f) {
        totalGrade = dailyGrade * 0.4 + finalGrade * 0.6;
    }

    string getName() const { return name; }
    double getTotalGrade() const { return totalGrade; }

private:
    string name;  // 学生姓名
    double dailyGrade;  // 平时成绩
    double finalGrade;  // 期末成绩
    double totalGrade;  // 总成绩
};

// 比较函数,按照总成绩由高到低排序
bool compare(Student s1, Student s2) {
    return s1.getTotalGrade() > s2.getTotalGrade();
}

int main() {
    vector<Student> students;  // 存储学生对象的向量

    // 输入学生信息和成绩
    string name;
    double dailyGrade, finalGrade;
    while (cin >> name >> dailyGrade >> finalGrade) {
        students.emplace_back(name, dailyGrade, finalGrade);
    }

    // 按总成绩由高到低排序
    sort(students.begin(), students.end(), compare);

    // 输出学生总成绩
    cout << fixed << setprecision(2);  // 输出2位小数
    for (const auto& s : students) {
        cout << s.getName() << " " << s.dailyGrade << " " << s.finalGrade << " " << s.getTotalGrade() << endl;
    }

    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632