就各位大神用C++帮小弟补充完一个学生成绩管理系统小程序 (抱拳)

2025-05-22 17:21:25
推荐回答(1个)
回答(1):

#include 
#include 
using namespace std;

class Student
{
private:
    char number[10];
    char name[10];
    int DailyScore; //平时成绩
    int FinalScore; //期末成绩
    float GeneralScore; //总评成绩
    int place; //名次
public:
    void ReadData(); //输入学生的学号,姓名,平时成绩及期末成绩
    void CalcuScore(); //计算当前学生的总评成绩
    void PrintOut(); //输出当前学生的完整信息
    friend void SortScore(Student stu[],int n); //根据总评成绩排除学生的名次
};

void Student::ReadData() {
    char buf[32];
    cout << "number: ";
    cin >> number;
    cout << "name: ";
    cin >> name;
    cout << "DailyScore: ";
    cin >> buf;
    DailyScore = atoi(buf);
    cout << "FinalScore: ";
    cin >> buf;
    FinalScore = atoi(buf);
}

void Student::CalcuScore() {
    GeneralScore = FinalScore * 0.6 + DailyScore * 0.4;
}

void Student::PrintOut() {
    cout << "number       " << number << endl;
    cout << "name         " << name << endl;
    cout << "DailyScore   " << DailyScore << endl;
    cout << "FinalScore   " << FinalScore << endl;
    cout << "GeneralScore " << GeneralScore << endl;
    cout << "place        " << place << endl;
}

void SortScore(Student stu[],int n) {
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++)
            if (stu[i].GeneralScore < stu[j].GeneralScore) {
                Student t = stu[i];
                stu[i] = stu[j];
                stu[j] = t;
            }
        stu[i].place = i + 1;
    }
}


int main()
{
    Student stu[20];
    int i, n = 5;
    for(i = 0;i < n;i++)
        stu[i].ReadData();
    for(i = 0;i < n;i++)
        stu[i].CalcuScore();
    SortScore(stu,5);
    for(i = 0;i         stu[i].PrintOut();
    return 0;
}