c++课设

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Student {
private:
    string id; // 学号
    string name; // 姓名
    char gender; // 性别
    double chineseScore; // 语文成绩
    double mathScore; // 数学成绩
    double englishScore; // 英语成绩

public:
    // 构造函数
    Student(string id, string name, char gender, double chineseScore, double mathScore, double englishScore)
        : id(id), name(name), gender(gender), chineseScore(chineseScore), mathScore(mathScore), englishScore(englishScore) {}

    // 获取器函数
    string getId() const { return id; }
    string getName() const { return name; }
    char getGender() const { return gender; }
    double getChineseScore() const { return chineseScore; }
    double getMathScore() const { return mathScore; }
    double getEnglishScore() const { return englishScore; }

    // 计算平均成绩
    double getAverageScore() const {
        return (chineseScore + mathScore + englishScore) / 3.0;
    }

    // 检查学生是否有不及格科目
    bool hasFailed() const {
        return chineseScore < 60 || mathScore < 60 || englishScore < 60;
    }
};

class StudentManagementSystem {
private:
    vector<Student> students; // 学生记录向量

public:
    // 添加学生记录函数
    void addStudent(const Student& student) {
        students.push_back(student);
    }

    // 显示所有学生记录函数
    void displayAllStudents() const {
        for (const auto& student : students) {
            cout << "学号: " << student.getId() << ", 姓名: " << student.getName() << ", 性别: " << student.getGender()
                << ", 语文: " << student.getChineseScore() << ", 数学: " << student.getMathScore()
                << ", 英语: " << student.getEnglishScore() << endl;
        }
    }

    // 按学号或姓名删除学生记录函数
    void deleteStudent(const string& key) {
        students.erase(remove_if(students.begin(), students.end(),
            [&key](const Student& student) {
                return student.getId() == key || student.getName() == key;
            }), students.end());
    }

    // 按学号或姓名查询学生记录函数
    void searchStudent(const string& key) const {
        for (const auto& student : students) {
            if (student.getId() == key || student.getName() == key) {
                cout << "学号: " << student.getId() << ", 姓名: " << student.getName() << ", 性别: " << student.getGender()
                    << ", 语文: " << student.getChineseScore() << ", 数学: " << student.getMathScore()
                    << ", 英语: " << student.getEnglishScore() << endl;
                return;
            }
        }
        cout << "未找到学生!" << endl;
    }

    // 按学号或姓名修改学生记录函数
    void modifyStudent(const string& key, const Student& newStudent) {
        for (auto& student : students) {
            if (student.getId() == key || student.getName() == key) {
                student = newStudent;
                return;
            }
        }
        cout << "未找到学生!" << endl;
    }

    // 按平均成绩从高到低排序学生记录函数
    void sortStudentsByAverageScore() {
        sort(students.begin(), students.end(),
            [](const Student& a, const Student& b) {
                return a.getAverageScore() > b.getAverageScore();
            });
    }

    // 列出至少有一门课程不及格的学生清单函数
    void listFailedStudents() const {
        for (const auto& student : students) {
            if (student.hasFailed()) {
                cout << "学号: " << student.getId() << ", 姓名: " << student.getName() << ", 性别: " << student.getGender()
                    << ", 语文: " << student.getChineseScore() << ", 数学: " << student.getMathScore()
                    << ", 英语: " << student.getEnglishScore() << endl;
            }
        }
    }
};

int main() {
    StudentManagementSystem system;

    // 添加样本学生记录
    system.addStudent(Student("1001", "Alice", 'F', 85, 90, 88));
    system.addStudent(Student("1002", "Bob", 'M', 72, 65, 80));
    system.addStudent(Student("1003", "Charlie", 'M', 78, 85, 92));
    system.addStudent(Student("1004", "David", 'M', 60, 55, 58));

    // 显示所有学生记录
    cout << "所有学生:" << endl;
    system.displayAllStudents();

    // 按学号或姓名删除学生记录
    cout << "\n删除学号为1002的学生:" << endl;
    system.deleteStudent("1002");
    system.displayAllStudents();

    // 按学号或姓名查询学生记录
    cout << "\n查询学号为1003的学生:" << endl;
    system.searchStudent("1003");

    // 按学号或姓名修改学生记录
    cout << "\n修改姓名为Bob的学生:" << endl;
    system.modifyStudent("Bob", Student("1005", "Eve", 'F', 95, 92, 88));
    system.displayAllStudents();

    // 按平均成绩从高到低排序学生记录
    cout << "\n按平均成绩排序学生:" << endl;
    system.sortStudentsByAverageScore();
    system.displayAllStudents();

    // 列出至少有一门课程不及格的学生清单
    cout << "\n不及格学生清单:" << endl;
    system.listFailedStudents();

    return 0;
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值