Untitled
unknown
plain_text
a year ago
3.4 kB
26
Indexable
Course.h
#ifndef COURSE_H
#define COURSE_H
#include <string>
#include <vector>
class Student;
class Course {
private:
std::string name;
int minStudents;
int maxStudents;
std::vector<Student*> enrolledStudents;
public:
Course(const std::string& name, int minStudents, int maxStudents);
~Course();
std::string getName() const;
int getMinStudents() const;
int getMaxStudents() const;
bool addStudent(Student* student);
void displayEnrolledStudents() const;
bool isAvailable() const;
};
#endif
Course.cpp
#include "Course.h"
#include "Student.h"
#include <iostream>
Course::Course(const std::string& name, int minStudents, int maxStudents)
: name(name), minStudents(minStudents), maxStudents(maxStudents) {}
Course::~Course() {}
std::string Course::getName() const {
return name;
}
int Course::getMinStudents() const {
return minStudents;
}
int Course::getMaxStudents() const {
return maxStudents;
}
bool Course::addStudent(Student* student) {
if (enrolledStudents.size() < maxStudents) {
enrolledStudents.push_back(student);
return true;
}
return false;
}
void Course::displayEnrolledStudents() const {
std::cout << "Enrolled students in " << name << ":" << std::endl;
for (const auto& student : enrolledStudents) {
std::cout << student->getName() << std::endl;
}
}
bool Course::isAvailable() const {
return enrolledStudents.size() < maxStudents;
}
Student.h
#ifndef STUDENT_H
#define STUDENT_H
#include <string>
#include <vector>
class Course; // Forward declaration
class Student {
private:
std::string name;
std::vector<Course*> registeredCourses;
public:
Student(const std::string& name);
~Student();
std::string getName() const;
bool registerForCourse(Course* course);
void displayRegisteredCourses() const;
};
#endif // STUDENT_H
Student.cpp
#include "Student.h"
#include "Course.h"
#include <iostream>
Student::Student(const std::string& name)
: name(name) {}
Student::~Student() {}
std::string Student::getName() const {
return name;
}
bool Student::registerForCourse(Course* course) {
if (registeredCourses.size() < 5) {
registeredCourses.push_back(course);
return true;
}
return false;
}
void Student::displayRegisteredCourses() const {
std::cout << "Registered courses for " << name << ":" << std::endl;
for (const auto& course : registeredCourses) {
std::cout << course->getName() << std::endl;
}
}
Coursemain.cpp
#include <iostream>
#include "Course.h"
#include "Student.h"
int main() {
// Create courses
Course math("Math", 5, 30);
Course physics("Physics", 5, 25);
// Create students
Student alice("Alice");
Student bob("Bob");
// Register students for courses
alice.registerForCourse(&math);
alice.registerForCourse(&physics);
bob.registerForCourse(&math);
// Display courses available
std::cout << "Available courses:" << std::endl;
if (math.isAvailable()) {
std::cout << math.getName() << std::endl;
}
if (physics.isAvailable()) {
std::cout << physics.getName() << std::endl;
}
// Display registered courses for students
alice.displayRegisteredCourses();
bob.displayRegisteredCourses();
return 0;
}Editor is loading...
Leave a Comment