#include <iostream>
#include <vector>
#include <algorithm>
#include "Student_info.h"
#include "grade.h"

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

// 定义常量：及格分数
const double PASS_GRADE = 60.0;

int main() {
    vector<Student_info> students;
    Student_info record;

    // 读取学生信息
    cout << "期中成绩占比20%、期末成绩占比40%，平时成绩占比40%）:" << endl;
    cout << "输入学生信息（姓名、期中成绩、期末成绩，平时成绩）:" << endl;
    cout << "输入Ctrl+z后回车退出。" << endl;

    while (read(cin, record)) {
        students.push_back(record);
    }

    // 将学生分为及格和不及格两组
    vector<Student_info> pass, fail;
    for (const auto& student : students) {
        if (grade(student) >= PASS_GRADE) {
            pass.push_back(student);
        }
        else {
            fail.push_back(student);
        }
    }

    // 按名字排序
    std::sort(pass.begin(), pass.end(), compare);
    std::sort(fail.begin(), fail.end(), compare);

    // 输出及格学生信息
    cout << "合格学生:" << endl;
    for (const auto& student : pass) {
        cout << student.name << ": 总成绩 = " << grade(student) << endl;
    }

    // 输出不及格学生信息
    cout << "不合格学生:" << endl;
    for (const auto& student : fail) {
        cout << student.name << ": 总成绩 = " << grade(student) << endl;
    }

    return 0;
}
