Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <list>
- #include <vector>
- using namespace std;
- //KLASY
- class User;
- class Teacher;
- class Student;
- class Subject;
- class Lesson;
- class TimeTable;
- class Group;
- //
- ///--USER
- //
- class User {
- protected:
- string firstName;
- string lastName;
- public:
- virtual void introduce() = 0;
- };
- //
- ///-- TEACHER--------------------------------------------------
- //
- class Teacher : public User {
- Subject *subject;
- public:
- virtual void introduce();
- Subject *getSubject();
- void setSubject(Subject *);
- Teacher(string firstName, string lastName);
- friend Lesson;
- friend TimeTable;
- };
- void Teacher::introduce() {
- cout << this->firstName << ' ' << this->lastName;
- };
- Subject *Teacher::getSubject() {
- return this->subject;
- }
- Teacher::Teacher(string firstName, string lastName) {
- this->firstName = firstName;
- this->lastName = lastName;
- }
- void Teacher::setSubject(Subject *subject) {
- this->subject = subject;
- }
- //
- ///-- GROUP-------------------------------------------
- //
- class Group {
- private:
- string groupName;
- public:
- vector<Student *> students;
- Student *getStudent(int);
- string getName();
- Group(string);
- friend Student;
- friend Lesson;
- friend TimeTable;
- };
- // GROUP - metody
- Student *Group::getStudent(int index) {
- if (!this->students.empty())return this->students[index];
- else return NULL;
- }
- string Group::getName() {
- return this->groupName;
- }
- Group::Group(string groupName) {
- this->groupName = groupName;
- }
- //
- ///-- SUBJECT-----------------------
- //
- class Subject {
- string name;
- public:
- Subject(string);
- string getName();
- void setName(string);
- friend Teacher;
- friend Lesson;
- friend TimeTable;
- };
- // SUBJECT - metody
- Subject::Subject(string name) {
- this->name = name;
- }
- string Subject::getName() {
- return this->name;
- }
- void Subject::setName(string name) {
- this->name = name;
- }
- //
- //-- STUDENT---------------------------------
- //
- class Student : public User {
- private:
- string albumNumber;
- Group *group;
- public:
- virtual void introduce();
- Group *getGroup();
- Student(string, string, string);
- string getAlbumNumber();
- Student(string, string, string, Group *);
- void setGroup(Group *);
- friend Lesson;
- friend TimeTable;
- };
- // STUDENT-metody
- void Student::introduce() {
- cout << this->firstName << ' ' << this->lastName << ' ' << this->albumNumber;
- }
- Group *Student::getGroup() {
- return this->group;
- }
- Student::Student(string firstName, string lastName, string albumNumber) {
- this->firstName = firstName;
- this->lastName = lastName;
- this->albumNumber = albumNumber;
- }
- string Student::getAlbumNumber() {
- return this->albumNumber;
- }
- Student::Student(string firstName, string lastName, string albumNumber, Group *group) {
- this->firstName = firstName;
- this->lastName = lastName;
- this->albumNumber = albumNumber;
- this->group = group;
- this->group->students.push_back(this);
- }
- void Student::setGroup(Group *group) {
- int i = 0;
- if (this->group != NULL) {
- while (this != this->group->students[i]) {
- i++;
- }
- for (i; i < this->group->students.size(); i++) {
- this->group->students[i] = this->group->students[i + 1];
- }
- this->group->students.pop_back();
- }
- this->group = group;
- this->group->students.push_back(this);
- }
- //
- //-- LESSON---------------------------------
- //
- class Lesson {
- private:
- Teacher *teacher;
- Group *group;
- Subject *subject;
- int number;
- public:
- vector<User *> users;
- Teacher *getTeacher();
- vector<User *> getUsers();
- Group *getGroup();
- int getNumber();
- Subject *getSubject();
- Lesson(Teacher *, Group *, Subject *, int);
- friend TimeTable;
- };
- Teacher *Lesson::getTeacher() {
- return this->teacher;
- }
- vector<User *> Lesson::getUsers() {
- for (int i = 0; i < this->group->students.size(); i++) {
- users.push_back(this->group->students[i]);
- }
- users.push_back(this->teacher);
- return users;
- }
- Group *Lesson::getGroup() {
- return this->group;
- }
- int Lesson::getNumber() {
- return this->number;
- }
- Subject *Lesson::getSubject() {
- return this->subject;
- }
- Lesson::Lesson(Teacher *teacher, Group *group, Subject *subject, int number) {
- this->teacher = teacher;
- this->group = group;
- this->subject = subject;
- this->number = number;
- this->users = getUsers();
- }
- //
- ///-- TIMETABLE -------------------------------------------
- //
- class TimeTable {
- private:
- list<Lesson *> timetable;
- public:
- bool addLesson(Lesson *);
- list<Lesson *> getStudentLessons(Student *);
- bool isStudentFree(Student *, int);
- Subject *getStudentLessonSubject(Student *, int);
- };
- bool TimeTable::addLesson(Lesson *lesson) {
- list<Lesson *>::iterator i;
- Lesson *it;
- list<Lesson *> timetable;
- for (i = this->timetable.begin(); i != this->timetable.end(); ++i) {
- it = *i;
- if (it->number == lesson->number && it->group == lesson->group) return false;
- if (it->number == lesson->number && it->users.back() == lesson->teacher) return false;
- }
- this->timetable.push_back(lesson);
- return true;
- }
- list<Lesson *> TimeTable::getStudentLessons(Student *student) {
- list<Lesson *>::iterator i;
- Lesson *it;
- list<Lesson *> timetable;
- for (i = this->timetable.begin(); i != this->timetable.end(); ++i) {
- it = *i;
- if (it->group == student->getGroup())timetable.push_back(it);
- }
- return timetable;
- }
- bool TimeTable::isStudentFree(Student *student, int number) {
- list<Lesson *>::iterator i;
- Lesson *it;
- for (i = this->timetable.begin(); i != this->timetable.end(); ++i) {
- it = *i;
- if (it->group == student->getGroup() && it->number == number) return false;
- }
- return true;
- }
- Subject *TimeTable::getStudentLessonSubject(Student *student, int number) {
- list<Lesson *>::iterator i;
- Lesson *it;
- for (i = this->timetable.begin(); i != this->timetable.end(); ++i) {
- it = *i;
- if (it->group == student->getGroup() && it->number == number) return it->subject;
- }
- return NULL;
- }
- //
- ///-- MAIN-------------------------------------------
- //
- int main() {
- Teacher *teacher = new Teacher("Jan", "Kowalski");
- Student *student1 = new Student("Adam", "Abacki", "1");
- Student *student2 = new Student("Bartosz", "Babacki", "2");
- Subject *subject1 = new Subject("Programowanie obiektowe");
- Subject *subject2 = new Subject("Podstawy symulacji");
- Group *group = new Group("I912");
- student1->setGroup(group);
- student2->setGroup(group);
- Lesson *l1 = new Lesson(teacher, group, subject1, 1);
- Lesson *l2 = new Lesson(teacher, group, subject2, 3);
- TimeTable *timeTable = new TimeTable();
- timeTable->addLesson(l1);
- timeTable->addLesson(l2);
- cout << timeTable->isStudentFree(student1, 2); // wypisuje 1
- cout << timeTable->isStudentFree(student1, 3); // wypisuje 0
- Subject *s = timeTable->getStudentLessonSubject(student1, 1);
- if (s != NULL) {
- cout << s->getName(); // wypisuje Programowanie obiektowe
- }
- list<Lesson *> lessonList = timeTable->getStudentLessons(student2);
- for (Lesson *v : lessonList)
- std::cout << v->getNumber() << " " << v->getSubject()->getName() << "\n";
- return 0;
- }
Add Comment
Please, Sign In to add comment