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++实现学生住宿管理系统攻略 系统介绍 学生住宿管理系统主要功能是管理学生住宿信息,包括学生的基本信息和住宿信息,如宿舍楼、宿舍号、床位号等。该系统可以实现学生住宿信息的增删改查等基本操作,方便学生和管理员进行管理。 系统设计 数据库设计 首先,我们需要设计一个数据库,用来存储学生信息和住宿信息。可以使用MySQL或SQLite等关系型数据库,也可以使用文…

    C 2023年5月23日
    00
  • C#中Json反序列化的实现方法

    C#中我们可以使用Json反序列化来将Json字符串转换成对应的对象。下面介绍C#中Json反序列化的实现方法: 准备工作 在进行Json反序列化前,我们需要引入Newtonsoft.Json库。使用NuGet包管理器进行安装,或者手动下载该库进行引入。 Install-Package Newtonsoft.Json -Version 13.0.1 反序列化…

    C 2023年5月23日
    00
  • Linux/Nginx如何查看搜索引擎蜘蛛爬虫的行为

    要查看搜索引擎蜘蛛爬虫的行为,可以使用Linux系统中的命令行工具,例如使用Nginx的access日志。下面是查看蜘蛛爬虫行为的步骤: 1. 确定Nginx日志路径 默认情况下,Nginx的日志路径为 /var/log/nginx/access.log。但如果在安装Nginx时修改了日志路径,则需要确定正确的路径。 2. 查看日志内容 使用以下命令查看Ng…

    C 2023年5月22日
    00
  • 逍遥自在学C语言 | 算数运算符

    前言 一、人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。 二、算数运算符简介 C语言的算数运算符,是用来完成基本的算术运算的符号。 按操作数个数可分为一元运算符(含一个操作数)和二元运算符(含两个操作数)。 一元运算符的优先级一般高于二元运算符。 三、一元运算符 一元运算符如下…

    C语言 2023年4月18日
    00
  • Excel怎么制作每月的房贷车贷提前还贷计算器?

    制作每月的房贷车贷提前还贷计算器的完整攻略如下: 步骤一:新建 Excel 工作表 首先,打开 Excel 软件并新建工作表。可以直接使用 Excel 自带的模板,也可以自己设计一个。 步骤二:设置表头 在工作表的第一行,设置表头信息,包含如下内容: 月份 剩余本金 当期应还本金 当期应还利息 当期总还款额 提前还款金额 提前还款本金 提前还款后剩余本金 本…

    C 2023年5月22日
    00
  • JDK 7 新特性小结实例代码解析

    JDK 7 新特性小结实例代码解析 简介 JDK 7 是 Java Development Kit 的版本号,是 Java 的一个版本。JDK 7 主要添加了许多新特性,包括小型语言改进、文件访问/输入和输出的 I/O 改进、内部脚本引擎、实例创建类型推断、字符串开头的结尾和 switch 语句中的字符串变量、数字下划线等。本文将从例子出发,详细地介绍 JD…

    C 2023年5月23日
    00
  • win7开机出现“致命错误C0000034 正在更新操作XXX 共XXX个”的解决方法

    问题描述 win7开机出现“致命错误C0000034 正在更新操作XXX 共XXX个”的提示,随后无法进入系统。 原因分析 此错误通常是由于Windows更新过程中出现问题导致的。某些更新未能成功安装或配置完成,导致系统无法正常启动。 解决方法 以下是解决“致命错误C0000034 正在更新操作XXX 共XXX个”的方法: 方法1:使用系统恢复选项 关闭计算…

    C 2023年5月23日
    00
  • C语言main函数的参数及其返回值详细解析

    C语言main函数的参数及其返回值详细解析 1. main函数的定义 C语言程序中的main函数是程序的入口函数,也是程序执行的起始点。每个C语言程序必须有一个main函数。 main函数的定义如下: int main(int argc, char *argv[]) { // 程序主体代码 return 0; } 其中, int 表示返回值类型, argc …

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