以下是使用 C++ 实现的教务管理系统中的学生管理模块的示例代码:

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

class Student {
private:
    std::string studentId;
    std::string name;
    std::string gender;
    int grade;
    std::vector<std::pair<std::string, double>> courseGrades;

public:
    Student(const std::string& id, const std::string& studentName, const std::string& studentGender, int studentGrade)
        : studentId(id), name(studentName), gender(studentGender), grade(studentGrade) {}

    void addCourseGrade(const std::string& courseName, double grade) {
        courseGrades.push_back(std::make_pair(courseName, grade));
    }

    void updateCourseGrade(const std::string& courseName, double grade) {
        for (auto& course : courseGrades) {
            if (course.first == courseName) {
                course.second = grade;
                return;
            }
        }
        std::cout << "Course '" << courseName << "' not found for student '" << studentId << "'" << std::endl;
    }

    void deleteCourseGrade(const std::string& courseName) {
        for (auto it = courseGrades.begin(); it != courseGrades.end(); ++it) {
            if (it->first == courseName) {
                courseGrades.erase(it);
                return;
            }
        }
        std::cout << "Course '" << courseName << "' not found for student '" << studentId << "'" << std::endl;
    }

    double calculateTotalGrade() const {
        double totalGrade = 0.0;
        for (const auto& course : courseGrades) {
            totalGrade += course.second;
        }
        return totalGrade;
    }

    void printCourseGrades() const {
        std::cout << "Course grades for student '" << studentId << "':" << std::endl;
        for (const auto& course : courseGrades) {
            std::cout << "Course: '" << course.first << "', Grade: '" << course.second << "'" << std::endl;
        }
    }

    std::string getId() const {
        return studentId;
    }

    std::string getName() const {
        return name;
    }

    std::string getGender() const {
        return gender;
    }

    int getGrade() const {
        return grade;
    }
};

class Course {
private:
    std::string courseCode;
    std::string courseName;
    std::string examMethod;

public:
    Course(const std::string& code, const std::string& name, const std::string& exam)
        : courseCode(code), courseName(name), examMethod(exam) {}

    std::string getCode() const {
        return courseCode;
    }

    std::string getName() const {
        return courseName;
    }

    std::string getExamMethod() const {
        return examMethod;
    }
};

class StudentManagement {
private:
    std::vector<Student> students;
    std::vector<Course> courses;

public:
    void addStudent(const Student& student) {
        students.push_back(student);
    }

    void updateStudent(const std::string& studentId, const Student& updatedStudent) {
        for (auto& student : students) {
            if (student.getId() == studentId) {
                student = updatedStudent;
                return;
            }
        }
        std::cout << "Student '" << studentId << "' not found" << std::endl;
    }

    void deleteStudent(const std::string& studentId) {
        for (auto it = students.begin(); it != students.end(); ++it) {
            if (it->getId() == studentId) {
                students.erase(it);
                return;
            }
        }
        std::cout << "Student '" << studentId << "' not found" << std::endl;
    }

    void addCourse(const Course& course) {
        courses.push_back(course);
    }

    void updateCourse(const std::string& courseCode, const Course& updatedCourse) {
        for (auto& course : courses) {
            if (course.getCode() == courseCode) {
                course = updatedCourse;
                return;
            }
        }
        std::cout << "Course '" << courseCode << "' not found" << std::endl;
    }

    void deleteCourse(const std::string& courseCode) {
        for (auto it = courses.begin(); it != courses.end(); ++it) {
            if (it->getCode() == courseCode) {
                courses.erase(it);
                return;
            }
        }
        std::cout << "Course '" << courseCode << "' not found" << std::endl;
    }

    void printStudentList() const {
        std::cout << "Student list:" << std::endl;
        for (const auto& student : students) {
            std::cout << "ID: '" << student.getId() << "', Name: '" << student.getName() << "', Gender: '" << student.getGender()
                << "', Grade: '" << student.getGrade() << "'" << std::endl;
        }
    }

    void printCourseList() const {
        std::cout << "Course list:" << std::endl;
        for (const auto& course : courses) {
            std::cout << "Code: '" << course.getCode() << "', Name: '" << course.getName() << "', Exam Method: '" << course.getExamMethod() << "'" << std::endl;
        }
    }

    void printStudentGrades(const std::string& studentId) const {
        for (const auto& student : students) {
            if (student.getId() == studentId) {
                student.printCourseGrades();
                return;
            }
        }
        std::cout << "Student '" << studentId << "' not found" << std::endl;
    }

    void calculateAndPrintStudentTotalGrades() const {
        std::cout << "Total grades for students:" << std::endl;
        for (const auto& student : students) {
            double totalGrade = student.calculateTotalGrade();
            std::cout << "ID: '" << student.getId() << "', Name: '" << student.getName() << "', Total Grade: '" << totalGrade << "'" << std::endl;
        }
    }

    void sortStudentsByTotalGrade() {
        std::sort(students.begin(), students.end(), [](const Student& s1, const Student& s2) {
            return s1.calculateTotalGrade() > s2.calculateTotalGrade();
        });
    }

    void sortStudentGradesByCourse(const std::string& courseCode) {
        for (auto& student : students) {
            std::sort(student.courseGrades.begin(), student.courseGrades.end(), [=](const std::pair<std::string, double>& p1,
                const std::pair<std::string, double>& p2) {
                if (p1.first == courseCode && p2.first != courseCode) {
                    return true;
                }
                if (p1.first != courseCode && p2.first == courseCode) {
                    return false;
                }
                return p1.second > p2.second;
            });
        }
    }
};

int main() {
    StudentManagement studentManagement;

    Student student1("2021001", "Alice", "Female", 1);
    student1.addCourseGrade("Math", 85);
    student1.addCourseGrade("English", 90);
    student1.addCourseGrade("Physics", 80);
    studentManagement.addStudent(student1);

    Student student2("2021002", "Bob", "Male", 1);
    student2.addCourseGrade("Math", 75);
    student2.addCourseGrade("English", 80);
    student2.addCourseGrade("Physics", 85);
    studentManagement.addStudent(student2);

    Student student3("2021003", "Charlie", "Male", 2);
    student3.addCourseGrade("Math", 90);
    student3.addCourseGrade("English", 85);
    student3.addCourseGrade("Physics", 95);
    studentManagement.addStudent(student3);

    Course course1("C001", "Math", "Exam");
    studentManagement.addCourse(course1);

    Course course2("C002", "English", "Exam");
    studentManagement.addCourse(course2);

    Course course3("C003", "Physics", "Exam");
    studentManagement.addCourse(course3);

    std::cout << "Print student list:" << std::endl;
    studentManagement.printStudentList();

    std::cout << std::endl;
    std::cout << "Print course list:" << std::endl;
    studentManagement.printCourseList();

    std::cout << std::endl;
    std::cout << "Print grades for student '2021002':" << std::endl;
    studentManagement.printStudentGrades("2021002");

    std::cout << std::endl;
    std::cout << "Calculate and print total grades for students:" << std::endl;
    studentManagement.calculateAndPrintStudentTotalGrades();

    std::cout << std::endl;
    std::cout << "Sort students by total grade:" << std::endl;
    studentManagement.sortStudentsByTotalGrade();
    studentManagement.printStudentList();

    std::cout << std::endl;
    std::cout << "Sort student grades for course 'Math':" << std::endl;
    studentManagement.sortStudentGradesByCourse("Math");
    studentManagement.printStudentGrades("2021001");
    studentManagement.printStudentGrades("2021002");
    studentManagement.printStudentGrades("2021003");

    return 0;
}

该程序实现了一个简单的教务管理系统中的学生管理模块。类中包含了学生类(Student)和课程类(Course),以及学生管理类(StudentManagement)。学生类包含了学生的基本信息和课程成绩信息,可以对成绩进行添加、修改和删除操作,可以计算学生的综合成绩并打印成绩信息。课程类包含了课程的基本信息。学生管理类包含了对学生和课程的管理操作,包括添加、修改和删除学生和课程信息,可以打印学生列表和课程列表,可以打印指定学生的成绩信息,可以计算并打印学生的综合成绩,可以对学生列表按照总成绩进行排序,可以对指定课程的成绩进行排序。

在main函数中对学生和课程进行了一些操作,并打印了相应的结果。请注意,这只是一个简单的示例,未对所有可能出现的错误情况进行严格处理。在实际应用中,可能需要根据需要进行进一步的改进和完善。

C++ 教务管理系统学生管理模块示例代码

原文地址: http://www.cveoy.top/t/topic/b7T0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录