-
Notifications
You must be signed in to change notification settings - Fork 2
/
Course.h
132 lines (101 loc) · 3.01 KB
/
Course.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#pragma once
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <string>
#include <cstring>
#include <queue>
#include <stack>
#include <fstream>
#include <iomanip>
#include <chrono>
#include <thread>
#include <conio.h>
#include <map>
#include <cstdlib>
#include <assert.h>
using namespace std;
using namespace this_thread;
using namespace std::chrono;
struct Student;
struct Assignment;
struct Course {
//Members
//===========================================================================================
string name;
string code;
string Dr;
int semester; // to allow automatic addition of students in this semester
int status;
deque <shared_ptr <Assignment> > assignments;
vector< string > desc;
bool described = false;
deque <shared_ptr<Course> > pre;
set < shared_ptr <Student> > studentCnt;
Course(string n, string c, string D, int sem) {
name = n; code = c; Dr = D; semester = sem;
}
Course(string n, string c, string D, int sem, deque <shared_ptr<Course> >& temp) {
name = n; code = c; Dr = D; semester = sem; pre = temp;
}
~Course() {}
//Methods
//===========================================================================================
//-------------------------------------------------------------------------------------------
void drSummary() {
cout << "Course Description: ";
if (described) {
cout << endl;
for (auto& s : desc) {
cout << s << endl;
}
cout << endl;
}
else cout << "\nNo course Description, press 'd' to add a new one" << endl << endl;
cout << "Course Name: " << name << endl
<< "Course Code: " << code << endl
<< "Number of students: " << studentCnt.size() << endl
<< "Number of assignments: " << assignments.size() << endl;
}
void stSummary() {
cout << "Course Description: ";
if (described) {
cout << endl;
for (auto& s : desc) {
cout << s << endl;
}
}
else cout << "\nNo course Description" << endl;
cout << endl;
cout << "Course Name: " << name << endl
<< "Course Code: " << code << endl
<< "Dr: " << Dr << endl;
}
void setDesc() {
string temp;
cout << "Press enter twice to go back" << endl;
while (getline(cin, temp) and temp != "") {
desc.push_back(temp);
}
described = true;
}
//-------------------------------------------------------------------------------------------
//void removeAssignment(string name) {
// auto pred = [name](const Assignment& assignment) {
// return assignment.name == name;
// };
// auto it = find_if(assignments.begin(), assignments.end(), pred);
// assignments.erase(it);
//}
//Overloaded operators
//===========================================================================================
bool operator == (shared_ptr <Course> b) {
return code == b->code;
} // to recognise same course by code
};
static bool operator< (const Course& a, const Course& b)
{
if (a.semester == b.semester) return a.name < b.name;
else return a.semester < b.semester;
}