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

yizhihongxing

以下是关于“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日

相关文章

  • js字符串转成JSON

    假设我们有一个字符串 str,它代表一个 JSON 对象,现在需要把它转成 JavaScript 对象,下面是实现的完整攻略。 1. 将字符串解析成 JSON 对象 使用 JSON.parse() 函数可以将字符串转为 JSON 对象,该函数有一个参数,即要解析的 JSON 字符串。 下面是一个示例: const jsonStr = ‘{"name…

    C 2023年5月23日
    00
  • log4j2 项目日志组件的实例代码

    以下是详细讲解“log4j2 项目日志组件的实例代码”的完整攻略。 什么是log4j2 log4j2是一个Java日志框架,可以提供高效灵活的日志记录服务,供各种Java应用程序使用。它是Apache软件基金会下的一个开源项目,其具备下列特点: 多种输出方式:文件、控制台、数据库等 丰富的API:易于使用、易于扩展 完善的日志级别:支持丰富的日志级别,能够控…

    C 2023年5月22日
    00
  • 教你如何使用PHP输出中文JSON字符串

    下面是“教你如何使用PHP输出中文JSON字符串”的完整攻略: 1. 什么是JSON 在开始讲解如何使用PHP输出中文JSON字符串之前,我们需要先理解JSON是什么。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,大部分现代编程语言都支持解析和生成JSON数据。它基于JavaScript语言的子集,并且易于阅读和…

    C 2023年5月23日
    00
  • C++程序代码优化的方法实例大全

    C++程序代码优化的方法实例大全 本文将为大家介绍C++程序代码优化的方法实例大全。通过本文的内容,可以帮助你更好地优化C++程序的代码,提高程序的性能。 一、代码优化的目标 代码优化的主要目标包括: 提高程序的运行速度和响应速度; 减少程序的内存占用和磁盘占用; 提高程序的可读性和可维护性。 二、优化方法 下面是几种常见的C++程序代码优化方法。 1. 使…

    C 2023年5月23日
    00
  • C++实现恶搞电脑关机小程序的示例代码

    为了向站点的访问者提供有价值的信息,网站作者在教程中提供了如何使用C++实现恶搞电脑关机小程序的示例代码。下面是实现的完整攻略: 程序简介 首先要了解的是,电脑关机小程序是一种作为开发者与计算机用户之间计算机恶搞竞技的一个漏洞程序,是一种不被计算机用户接受的。 通常,这种程序被认为是具有伤害性的程序,因此,如果不了解该程序的实现,其使用方法和操作规则,则不要…

    C 2023年5月23日
    00
  • C++实现猜数字游戏

    C++实现猜数字游戏攻略 1. 游戏规则 猜数字游戏是一款经典的游戏,其规则是: 系统随机生成一个四位数字,数字的每一位都不相同且在0-9之间。 玩家每次输入一个四位数字,系统会返回该数字与答案数字相比较的结果。 如果玩家输入的数字中包含了正确的数字但是位置不正确,则系统返回B。 如果玩家输入的数字中包含了正确的数字且位置也正确,则系统返回A。 如果玩家输入…

    C 2023年5月23日
    00
  • vs2019中使用MFC构建简单windows窗口程序

    下面我将详细讲解如何在VS2019中使用MFC构建简单的windows窗口程序。 1. 准备工作 首先,我们需要安装Microsoft Visual Studio 2019,并选择安装C++桌面开发组件中的MFC组件。 2. 创建MFC应用程序 在VS2019中打开,选择“创建新项目”,然后在左侧选中“Visual C++”,在右侧选中“MFC应用程序”,并…

    C 2023年5月30日
    00
  • 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结

    以下是深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结: 构造函数的调用过程 当一个对象被创建的时候,其构造函数会被自动调用; 如果该类没有定义构造函数,则系统会为该类自动生成一个默认构造函数; 如果该类存在构造函数,则必须在用户的代码中显式地调用构造函数; 如果一个类有多个构造函数,则在创建对象时可以根据需要选择其中之一来使用; 构造…

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