C++ 教务管理系统学生管理模块示例代码
以下是使用 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函数中对学生和课程进行了一些操作,并打印了相应的结果。请注意,这只是一个简单的示例,未对所有可能出现的错误情况进行严格处理。在实际应用中,可能需要根据需要进行进一步的改进和完善。
原文地址: http://www.cveoy.top/t/topic/b7T0 著作权归作者所有。请勿转载和采集!