C++实现简易选课系统代码分享

以下是关于“C++实现简易选课系统代码分享”的完整攻略。

1. 实现思路

选课系统需要维护学生信息和课程信息,同时需要记录每个学生选修的课程。因此,在设计程序时,需要建立以下几个类:

学生类

学生类用于存储学生的基本信息,例如学号、姓名、性别等,同时需要用一个vector容器来存储该学生所选的课程。

课程类

课程类用于存储课程的基本信息,例如课程编号、课程名称、授课老师等。

选课系统类

选课系统类是整个程序的核心类,用于实现选课系统的所有功能。其中,需要实现以下成员函数:

  • 添加学生信息
  • 添加课程信息
  • 显示所有学生信息
  • 显示所有课程信息
  • 根据学号查询学生信息
  • 根据课程编号查询课程信息
  • 学生选课
  • 学生退课

2. 代码示例

以下是实现选课系统的部分代码示例。

学生类

class Student {
public:
    Student(string id, string name, string gender)
        : m_id(id), m_name(name), m_gender(gender) {}

    void addCourse(int courseNum) {
        m_courses.push_back(courseNum);
    }

private:
    string m_id;            // 学号
    string m_name;          // 姓名
    string m_gender;        // 性别
    vector<int> m_courses;  // 所选课程编号
};

课程类

class Course {
public:
    Course(int num, string name, string teacher)
        : m_num(num), m_name(name), m_teacher(teacher) {}

    int getNum() const { return m_num; }
    string getName() const { return m_name; }
    string getTeacher() const { return m_teacher; }

private:
    int m_num;           // 课程编号
    string m_name;      // 课程名称
    string m_teacher;   // 授课老师
};

选课系统类

class CourseSelectionSystem {
public:
    void addStudent(string id, string name, string gender) {
        Student student(id, name, gender);
        m_students.push_back(student);
    }

    void addCourse(int num, string name, string teacher) {
        Course course(num, name, teacher);
        m_courses.push_back(course);
    }

    void showAllStudents() {
        for (auto student : m_students) {
            cout << "学号:" << student.getId() << endl;
            cout << "姓名:" << student.getName() << endl;
            cout << "性别:" << student.getGender() << endl;
            cout << "已选课程:";
            for (auto courseNum : student.getCourses()) {
                cout << courseNum << " ";
            }
            cout << endl << endl;
        }
    }

    void showAllCourses() {
        for (auto course : m_courses) {
            cout << "课程编号:" << course.getNum() << endl;
            cout << "课程名称:" << course.getName() << endl;
            cout << "授课老师:" << course.getTeacher() << endl << endl;
        }
    }

    Student* findStudentById(string id) {
        for (auto &student : m_students) {
            if (student.getId() == id) {
                return &student;
            }
        }
        return nullptr;
    }

    Course* findCourseByNum(int num) {
        for (auto &course : m_courses) {
            if (course.getNum() == num) {
                return &course;
            }
        }
        return nullptr;
    }

    bool selectCourse(string id, int courseNum) {
        Student* student = findStudentById(id);
        Course* course = findCourseByNum(courseNum);
        if (student && course) {
            student->addCourse(courseNum);
            return true;
        }
        return false;
    }

    bool cancelCourse(string id, int courseNum) {
        Student* student = findStudentById(id);
        if (student) {
            auto it = find(student->getCourses().begin(),
                           student->getCourses().end(),
                           courseNum);
            if (it != student->getCourses().end()) {
                student->getCourses().erase(it);
                return true;
            }
        }
        return false;
    }

private:
    vector<Student> m_students;    // 学生列表
    vector<Course> m_courses;      // 课程列表
};

在这个示例程序中,我们建立了三个类,分别用于存储学生信息、课程信息和实现选课系统功能。同时,我们也实现了这三个类的基本成员函数,例如添加学生信息、添加课程信息、显示所有学生信息、显示所有课程信息等。最关键的是,我们也实现了学生选课和学生退课等功能。

当然,这只是一个简单的示例,实际开发中还需要考虑更多的细节和复杂逻辑。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现简易选课系统代码分享 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言各种符号的使用介绍下篇

    C语言各种符号的使用介绍 1. 赋值操作符 赋值操作符=用于将表达式右边的值赋给左边的变量。例如: int a; a = 10; 上述代码中,将整数值10赋值给变量a。 2. 算术操作符 2.1 加法操作符 加法操作符+用于将两个值相加。例如: int a = 10; int b = 20; int c = a + b; 上述代码中,将变量a和b的值相加,将…

    C 2023年5月23日
    00
  • 少女前线新手最全面入门指南 阵容搭配及枪娘选择攻略

    少女前线新手最全面入门指南 前言 《少女前线》是一款枪械题材的卡牌养成游戏,深受广大玩家喜爱。然而,对于新手来说,玩法和系统繁琐复杂,很容易迷失方向。因此,本篇文章将为各位新手提供一份全方位的入门指南,帮助大家快速了解游戏,并通过合理的阵容搭配和枪娘选择攻略,提高游戏体验。 入门指南 1. 完成游戏引导流程 在刚进入游戏时,请务必按照游戏引导流程逐步完成任务…

    C 2023年5月22日
    00
  • JSON常用解析框架使用操作详解

    JSON常用解析框架使用操作详解 什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript语言的一个子集,易于人们阅读和编写。JSON采用键值对的方式进行数据存储,使用它来简化数据的传输和存储。 JSON解析框架 在Java中,有很多JSON解析框架,常用的有以下几种: Gson…

    C 2023年5月23日
    00
  • C++ std::shared_mutex读写锁的使用

    C++11中引入的 std::shared_mutex 是一种读写锁,可以在多个线程对同一个数据进行读写的情况下实现线程安全。shared_mutex允许多个线程同时进入读共享区,但只允许一个线程进入写互斥区。 如何使用 shared_mutex 使用 shared_mutex 需要注意以下几点: 1.定义 shared_mutex 对象 2.读共享区,需要…

    C 2023年5月22日
    00
  • 特殊字符的json序列化总结大全

    首先来介绍一下“特殊字符的json序列化总结大全”的攻略。 特殊字符的json序列化总结大全 在进行json序列化时,一些特殊字符不会被直接转义,而是Unicode编码表示,在进行反序列化时要进行相应的转换。 1. 空字节 空字节是指二进制零值常见的表示方式,也是一些特殊字符的编码方式。空字节可以写作”\0″或者使用Ctrl+@或Ctrl+Shift+2组合…

    C 2023年5月23日
    00
  • C指针声明

    C指针是C语言中非常重要的一个概念,用于处理内存地址和变量的数据类型,因此在编写C程序时,使用正确的指针声明会在代码性能和可读性方面产生重要影响。以下是C指针声明的完整使用攻略。 什么是指针声明 在C语言中,指针是一个存储变量地址的变量。在声明指针变量时,需要指定指针所指向的变量的类型。指针的声明方式在语法上与变量的声明类似,但是需要在类型前面添加一个星号(…

    C 2023年5月9日
    00
  • php格式化json函数示例代码

    PHP格式化JSON函数示例代码 在PHP中,有一个很方便的函数可以帮助我们格式化JSON字符串。这个函数就是json_encode()。它使用非常简单,只需要将我们要格式化的JSON对象传入函数中即可。 例如,我们有一个如下所示的JSON字符串: { "name": "Tom", "age": 3…

    C 2023年5月23日
    00
  • C/C++读写JSON数据的详细过程记录

    C/C++读写JSON数据的详细过程记录 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于读写和解析,同时也易于机器生成和解析。JSON文本格式在互联网上广泛应用,尤其在Web应用中,如:动态数据的传输。常用于替代XML格式,因为JSON格式更加简洁、易读、易于解析和生成。 读取JSON数据 使…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部