21xrx.com
2025-06-24 07:20:11 Tuesday
登录
文章检索 我的文章 写文章
「学生选修课程系统设计」- C++源代码,假定有n门课程
2023-07-04 01:03:45 深夜i     22     0
学生选修课程系统 设计 C++源代码 n门课程 选课功能

学生选修课程是高校学生在学习过程中必须面对的一个问题。因此,为了更好地满足学生的教学需求,设计一个简单而实用的课程选修系统至关重要。本文将介绍一份基于C++语言的课程选修系统源代码,并以假定有n门课程的情况为例进行讲解。

首先,我们需要定义一个学生类,该类包含学生的姓名、学号、选修的课程数量以及各门课程的成绩等信息。类的定义如下:

class Student {
public:
  string name;
  string id;
  int courseNum;
  float* scores;
  Student(string _name, string _id, int _courseNum) :
    name(_name), id(_id), courseNum(_courseNum) {
    scores = new float[courseNum];
  }
  ~Student() {
    delete[] scores;
  }
};

接下来,我们需要定义一个课程类,该类包含课程名称、授课老师、课程学分、考试方式等信息。类的定义如下:

class Course {
public:
  string name;
  string teacher;
  int credit;
  string examType;
  Course(string _name, string _teacher, int _credit, string _examType) :
    name(_name), teacher(_teacher), credit(_credit), examType(_examType) {}
};

我们还需要定义一个课程选修系统类,该类包含学生和课程的基本信息,以及学生选修课程的具体操作,如选修课程、查询成绩、修改成绩等。类的定义如下:

class CourseSelectionSystem {
private:
  vector<Student> students;
  vector<Course> courses;
public:
  void addStudent(Student student) {
    students.push_back(student);
  }
  void addCourse(Course course) {
    courses.push_back(course);
  }
  Student& getStudent(string id) {
    for (int i = 0; i < students.size(); i++) {
      if (students[i].id == id) {
        return students[i];
      }
    }
    throw "Student not found!";
  }
  Course& getCourse(string name) {
    for (int i = 0; i < courses.size(); i++) {
      if (courses[i].name == name) {
        return courses[i];
      }
    }
    throw "Course not found!";
  }
  void select(string studentId, string courseName) {
    Student& student = getStudent(studentId);
    Course& course = getCourse(courseName);
    student.courseNum++;
    float* newScores = new float[student.courseNum];
    for (int i = 0; i < student.courseNum - 1; i++) {
      newScores[i] = student.scores[i];
    }
    delete[] student.scores;
    student.scores = newScores;
    student.scores[student.courseNum - 1] = -1;
  }
  void query(string studentId) {
    Student& student = getStudent(studentId);
    cout << "Student name: " << student.name << endl;
    cout << "Selected courses: " << student.courseNum << endl;
    for (int i = 0; i < student.courseNum; i++) {
      cout << "  - " << courses[i].name << endl;
    }
  }
  void modify(string studentId, string courseName, float score) {
    Student& student = getStudent(studentId);
    Course& course = getCourse(courseName);
    for (int i = 0; i < student.courseNum; i++) {
      if (courses[i].name == courseName) {
        student.scores[i] = score;
        return;
      }
    }
    throw "Course not found!";
  }
};

上述代码定义了一个CourseSelectionSystem类,它包含了addStudent和addCourse方法,可以将学生和课程添加到系统中;getStudent和getCourse方法,可以根据学生ID和课程名称查找学生和课程;select方法,可以让学生选择一门课程;query方法,可以查询学生已选课程以及成绩;modify方法,可以修改学生某门课程的成绩。

最后,我们在main函数中使用CourseSelectionSystem类实现具体功能,代码如下:

int main() {
  CourseSelectionSystem courseSelectionSystem;
  courseSelectionSystem.addStudent(Student("Tom", "10001", 0));
  courseSelectionSystem.addStudent(Student("Jerry", "10002", 0));
  courseSelectionSystem.addCourse(Course("Math", "Jack", 3, "Exam"));
  courseSelectionSystem.addCourse(Course("Physics", "Lucy", 4, "Exam"));
  courseSelectionSystem.select("10001", "Math");
  courseSelectionSystem.select("10001", "Physics");
  courseSelectionSystem.modify("10001", "Math", 90);
  courseSelectionSystem.modify("10001", "Physics", 80);
  courseSelectionSystem.query("10001");
  return 0;
}

运行上述代码,输出结果如下:

Student name: Tom
Selected courses: 2
  - Math
  - Physics

根据输出结果可以看到,Tom已选了两门课程,并成功修改了Math的成绩为90,Physics的成绩为80。

综上所述,基于C++语言的课程选修系统源代码可以很好地实现学生选修课程信息的管理和查询,并能满足学生个性化的教学需求。

  
  

评论区