-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStudent.cpp
More file actions
81 lines (64 loc) · 2.51 KB
/
Copy pathStudent.cpp
File metadata and controls
81 lines (64 loc) · 2.51 KB
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
#include "Student.h"
//Getters
int const Student::get_studentCode(){ return studentCode_;}
std::string const Student::get_studentName() {return studentName_;}
std::list<Classes_per_uc> const Student::get_classes() {return classes_;}
//Constructor
Student::Student() : studentCode_(0), studentName_("null"), classes_({}) {}
Student::Student( int studentCode, std::string studentName, std::list<Classes_per_uc> classes) : studentCode_(studentCode), studentName_(studentName), classes_(classes){;}
//Methods
/**
*
* @param filename
* @return returns a binary search tree with all the students from the file
*/
std::set<Student> Student::read(const std::string &filename){
ifstream file(filename);
string line;
getline(file,line);
line = "";
std::set<Student> result;
list<Classes_per_uc> classes_;
std::string studentCode,studentName, ucCode, classCode;
std::string nextStudentCode, nextStudentName, nextUcCode, nextClassCode;
getline(file, line);
istringstream input(line);
getline(input, nextStudentCode, ',');
getline(input, nextStudentName, ',');
getline(input, nextUcCode, ',');
getline(input, nextClassCode, ',');
while (getline(file, line)) {
stringstream inputString(line);
studentCode = nextStudentCode, studentName = nextStudentName, ucCode = nextUcCode, classCode = nextClassCode;
getline(inputString, nextStudentCode, ',');
getline(inputString, nextStudentName, ',');
getline(inputString, nextUcCode, ',');
getline(inputString, nextClassCode, ',');
if(studentCode != nextStudentCode) {
Classes_per_uc cpu = Classes_per_uc(ucCode, classCode);
classes_.push_back(cpu);
Student object(stoi(studentCode), studentName, classes_);
result.insert(object);
classes_.clear();
}
else {
Classes_per_uc cpu = Classes_per_uc(ucCode, classCode);
classes_.push_back(cpu);
}
line = "";
}
Classes_per_uc cpu = Classes_per_uc(nextUcCode, nextClassCode);
classes_.push_back(cpu);
Student object(stoi(studentCode), studentName, classes_);
result.insert(object);
return result;
}
void Student::print() {
std::cout << studentCode_ << ',' << studentName_ << '\n';
for (Classes_per_uc s : classes_){
cout << '\t';
cout << s.get_ucCode() << ' ' << s.get_classCode() << endl;}
}
void Student::studentsPerClassPrint() {
cout << '\t' << studentCode_ << ' ' << studentName_ << '\n';
}