将客 2024-06-11 01:11 采纳率: 98.8%
浏览 5
已结题

关于#c++#的问题:<< GetMaxGrade() << ", 最低分: " << GetMinGrade() << endl

#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
#include <vector>
using namespace std;
enum class Gender { Male, Female };
// 定义分数类表示学生的单科成绩
class Score {
public:
    string course;
    int grade;
    Score(string c, int g) : course(c), grade(g) {}
};
// 更新时间日期类表示学生的出生年月日和性别
class Date {
public:
    void SetDate() {
        cout << "请输入出生年份:" << endl;
        cin >> year;
        cout << "请输入出生月份:" << endl;
        cin >> month;
        cout << "请输入出生日:" << endl;
        cin >> day;
    }
    int GetYear() const {
        return year;
    }
    int GetMonth() const {
        return month;
    }
    int GetDay() const {
        return day;
    }
    void SetGender(Gender gender) {
        this->gender = gender;
    }
    Gender GetGender() const {
        return gender;
    }
private:
    int year;
    int month;
    int day;
    Gender gender;
};
// 更新学生类,包含学生的学号、姓名、出生年月日和性别,以及三门课成绩
class Student {
public:
    void SetStuValues(Date &birthday) {
        cout << "请输入学生的学号:" << endl;
        cin >> num;
        cout << "请输入学生的姓名:" << endl;
        cin >> name;
        birthday.SetDate();
        cout << "请输入学生的性别(M/F):" << endl;
        char genderChoice;
        cin >> genderChoice;
        if (genderChoice == 'M' || genderChoice == 'm')
            birthday.SetGender(Gender::Male);
        else if (genderChoice == 'F' || genderChoice == 'f')
            birthday.SetGender(Gender::Female);
        else {
            cout << "无效的性别选择,默认为男" << endl;
            birthday.SetGender(Gender::Male);
        }
    }
    void AddScore(Score score) {
        scores.push_back(score);
    }
    double CalculateAverageGrade() const {
        double sum = 0;
        for (const auto &score : scores) {
            sum += score.grade;
        }
        return sum / scores.size();
    }
    int GetMaxGrade() const {
        int maxGrade = scores[0].grade;
        for (const auto &score : scores) {
            if (score.grade > maxGrade) {
                maxGrade = score.grade;
            }
        }
        return maxGrade;
    }
    int GetMinGrade() const {
        int minGrade = scores[0].grade;
        for (const auto &score : scores) {
            if (score.grade < minGrade) {
                minGrade = score.grade;
            }
        }
        return minGrade;
    }
// 更新学生类,包含学生的学号、姓名、出生年月日和性别,以及三门课成绩
class Student {
public:
    void SetStuValues(Date &birthday) {
        cout << "请输入学生的学号:" << endl;
        cin >> num;
        cout << "请输入学生的姓名:" << endl;
        cin >> name;
        birthday.SetDate();
        cout << "请输入学生的性别(M/F):" << endl;
        char genderChoice;
        cin >> genderChoice;
        if (genderChoice == 'M' || genderChoice == 'm')
            birthday.SetGender(Gender::Male);
        else if (genderChoice == 'F' || genderChoice == 'f')
            birthday.SetGender(Gender::Female);
        else {
            cout << "无效的性别选择,默认为男" << endl;
            birthday.SetGender(Gender::Male);
        }
    }
    void AddScore(Score score) {
        scores.push_back(score);
    }
    double CalculateAverageGrade() const {
        double sum = 0;
        for (const auto &score : scores) {
            sum += score.grade;
        }
        return sum / scores.size();
    }
    int GetMaxGrade() const {
        int maxGrade = scores[0].grade;
        for (const auto &score : scores) {
            if (score.grade > maxGrade) {
                maxGrade = score.grade;
            }
        }
        return maxGrade;
    }
    int GetMinGrade() const {
        int minGrade = scores[0].grade;
        for (const auto &score : scores) {
            if (score.grade < minGrade) {
                minGrade = score.grade;
            }
        }
        return minGrade;
    }
void OutputStudent() {
        int count = 0;
        int year;
        int month;
        int day;
        ifstream infile("student.txt", ios::in);
        if (!infile) {
            cout << "文件打开失败" << endl;
        }
        while (!infile.eof()) {
            infile >> num >> name >> year >> month >> day;
            cout << num << "" << name << "" << year << "" << month << ""
                 << day << endl;
            int gradeSum = 0;
            int gradeCount = 0;
            while (!infile.eof()) {
                string course;
                int grade;
                infile >> course >> grade;
                gradeSum += grade;
                gradeCount++;
                if (infile.peek() == '\n') break;
            }
            cout << "平均分: " << gradeSum / gradeCount << ", 最高分: "
                 << GetMaxGrade() << ", 最低分: " << GetMinGrade() << endl;
            infile.get();
            if (infile.peek() == '\n') break;
        }
        infile.close();
        system("pause");
    }
void FindByNum() {
        int count = 0;
        int year;
        int month;
        int day;
        int findnum;
        bool found = false;
        cout << "请输入要查找学生的学号:" << endl;
        cin >> findnum;
        ifstream infile("student.txt", ios::in);
        if (!infile) {
            cout << "文件打开失败" << endl;
        }
        while (!infile.eof()) {
            infile >> num >> name >> year >> month >> day;
            if (num == findnum) {
                cout << num << "" << name << "" << year << "" << month << ""
                     << day << endl;
                cout << "平均分: " << CalculateAverageGrade() << ", 最高分: "
                     << GetMaxGrade() << ", 最低分: " << GetMinGrade() << endl;
                found = true;
            }
            infile.get();
            if (infile.peek() == '\n') break;
        }
        if (!found) {
            cout << "查无此人" << endl;
        }
        infile.close();
        system("pause");
    }
void DeleteByNum() {
        int count = 0;
        int year;
        int month;
        int day;
        int findnum;
        bool found = false;
        cout << "请输入要删除学生的学号:" << endl;
        cin >> findnum;
        ifstream infile("student.txt", ios::in);
        if (!infile) {
            cout << "文件打开失败" << endl;
        }
        ofstream outfile("studentcopy.txt", ios::app);
        if (!outfile) { // 打开文件
            cout << "文件打开失败" << endl;
            exit(0);
        }
        while (!infile.eof()) {
            infile >> num >> name >> year >> month >> day;
            if (num != findnum) {
                outfile << num << "" << name << "" << year << "" << month << ""
                        << day << "";
                for (const auto &score : scores) {
                    outfile << score.course << "" << score.grade << endl;
                }
            } else {
                cout << num << "" << name << "" << year << "" << month << ""
                     << day << endl;
                found = true;
                cout << "已经删除该学生" << endl;
            }
            infile.get();
            if (infile.peek() == '\n') break;
        }
        if (!found) {
            cout << "查无此人" << endl;
        }
        infile.close();
        outfile.close();
        remove("student.txt"); // 删除文件
        rename("studentcopy.txt", "student.txt");
    }
void UpdateGradeByNum(int targetCourse, int newGrade) {
        int findnum;
        cout << "请输入要修改成绩的学生学号:" << endl;
        cin >> findnum;
        cout << "请输入要修改的课程名称:" << endl;
        string targetCourseStr;
        cin >> targetCourseStr;
        for (auto &score : scores) {
            if (score.course == targetCourseStr) {
                score.grade = newGrade;
                cout << "已将" << targetCourseStr << "的成绩修改为" << newGrade
                     << endl;
                break;
            }
        }
        OutputStudent();
    }
private:
    int num;
    string name;
    Date birthdate;
    vector<Score> scores;
};
void MainShow() {
    cout << "欢迎使用学生管理系统" << endl;
    cout << "1. 输入学生信息" << endl;
    cout << "2. 浏览所有学生记录" << endl;
    cout << "3. 按学号查找学生记录" << endl;
    cout << "4. 按学号删除学生记录" << endl;
    cout << "5. 按学号修改学生的出生日期" << endl;
    cout << "6. 按学号修改学生某门课的成绩" << endl;
    cout << "7. 系统退出" << endl;
}
void Select() {
    int choice;
    cout << "请选择操作:" << endl;
    cin >> choice;

img


根据这个代码继续完成图片的要求

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-06-11 08:38
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题: 请解释程序中的学生类Student,包括它的成员函数和成员变量的作用,及其使用方法。 回答: 程序中的学生类Student是一个包含学生信息的类。它具有以下成员变量:
    • string num:学号
    • string name:姓名
    • vector scores:学生成绩(包含多个单科成绩) 它包含以下成员函数:
    • void SetStuValues(Date &birthday):设置学生的学号、姓名、出生年月日和性别。
    • void AddScore(Score score):添加一门成绩。
    • double CalculateAverageGrade() const:计算学生的平均成绩。
    • int GetMaxGrade() const:获取学生的最高成绩。
    • int GetMinGrade() const:获取学生的最低成绩。 使用方法如下:
    • 构造一个Date对象,并调用SetDate()设置出生年月日。
    • 构造一个Student对象,并调用SetStuValues()设置学生的学号、姓名、出生年月日和性别。
    • 调用AddScore()添加学生成绩。
    • 调用CalculateAverageGrade()计算学生平均成绩。
    • 调用GetMaxGrade()获取学生最高成绩。
    • 调用GetMinGrade()获取学生最低成绩。 举例: 假设需要构造一个学生对象,并添加三门成绩:
    Date birthday;
    birthday.SetDate();
    Student stu;
    stu.SetStuValues(birthday);
    Score score1("语文", 85);
    Score score2("数学", 90);
    Score score3("英语", 95);
    stu.AddScore(score1);
    stu.AddScore(score2);
    stu.AddScore(score3);
    

    可以通过以下代码获取该学生的成绩信息:

    cout << stu.GetName() << "的成绩信息:" << endl;
    cout << "学号:" << stu.GetNum() << endl;
    cout << "姓名:" << stu.GetName() << endl;
    cout << "性别:" << (stu.GetGender() == Gender::Male ? "男" : "女") << endl;
    cout << "语文:" << score1.GetGrade() << endl;
    cout << "数学:" << score2.GetGrade() << endl;
    cout << "英语:" << score3.GetGrade() << endl;
    cout << "平均分:" << stu.CalculateAverageGrade() << endl;
    cout << "最高分:" << stu.GetMaxGrade() << endl;
    cout << "最低分:" << stu.GetMinGrade() << endl;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月13日
  • 已采纳回答 6月13日
  • 创建了问题 6月11日

悬赏问题

  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊