44#include < fstream>
55#include < algorithm>
66
7+ using studentPtr = std::shared_ptr<Student>;
8+ using employeePtr = std::shared_ptr<Employee>;
9+ using std::dynamic_pointer_cast;
10+
711personIter Database::searchByLastName (const std::string& lastName)
812{
9- auto it = std::find_if (begin (data), end (data), [lastName] (std::shared_ptr<Person> person)
13+ auto it = std::find_if (begin (data), end (data), [lastName] (personPtr person)
1014 {
1115 return person -> getLastName () == lastName;
1216 });
@@ -20,7 +24,7 @@ personIter Database::searchByLastName(const std::string& lastName)
2024
2125personIter Database::searchByPersonalID (const unsigned long long & personalID)
2226{
23- auto it = std::find_if (begin (data), end (data), [personalID] (std::shared_ptr<Person> person)
27+ auto it = std::find_if (begin (data), end (data), [personalID] (personPtr person)
2428 {
2529 return person -> getPersonalID () == personalID;
2630 });
@@ -34,9 +38,9 @@ personIter Database::searchByPersonalID(const unsigned long long& personalID)
3438
3539personIter Database::searchByStudentID (const unsigned long & studentID)
3640{
37- auto it = std::find_if (begin (data), end (data), [studentID] (std::shared_ptr<Person> person)
41+ auto it = std::find_if (begin (data), end (data), [studentID] (personPtr person)
3842 {
39- std::shared_ptr<Student> student = std:: dynamic_pointer_cast<Student>(person);
43+ studentPtr student = dynamic_pointer_cast<Student>(person);
4044 return student -> getStudentIndex () == studentID;
4145 });
4246
@@ -59,19 +63,19 @@ void Database::printDatabase() const
5963
6064void Database::sortBySalary ()
6165{
62- std::sort (begin (data), end (data), [](std::shared_ptr<Person> left, std::shared_ptr<Person> right)
66+ std::sort (begin (data), end (data), [](personPtr left, personPtr right)
6367 {
6468 // input: 10.1 NaN 2.5 NaN 3.6
6569 // output: 2.5 3.6 10.1 Nan Nan
6670
6771 // NaN 2.5 --- if student on the left: bad!
68- if (std:: dynamic_pointer_cast<Student>(left)) return false ;
72+ if (dynamic_pointer_cast<Student>(left)) return false ;
6973
7074 // 2.5 NaN -- if student on the right: good! move all to the right
71- if (std:: dynamic_pointer_cast<Student>(right)) return true ;
75+ if (dynamic_pointer_cast<Student>(right)) return true ;
7276
73- std::shared_ptr<Employee> e_left = std:: dynamic_pointer_cast<Employee>(left);
74- std::shared_ptr<Employee> e_right = std:: dynamic_pointer_cast<Employee>(right);
77+ employeePtr e_left = dynamic_pointer_cast<Employee>(left);
78+ employeePtr e_right = dynamic_pointer_cast<Employee>(right);
7579 // if employee, compare it usually
7680 return e_left->getSalary () < e_right->getSalary ();
7781 });
@@ -80,34 +84,34 @@ void Database::sortBySalary()
8084
8185void Database::sortByLastName ()
8286{
83- std::sort (begin (data), end (data), [](std::shared_ptr<Person> left, std::shared_ptr<Person> right)
87+ std::sort (begin (data), end (data), [](personPtr left, personPtr right)
8488 {
8589 return left->getLastName () < right->getLastName ();
8690 });
8791}
8892
8993void Database::sortByPersonalID ()
9094{
91- std::sort (begin (data), end (data), [](std::shared_ptr<Person> left, std::shared_ptr<Person> right)
92- {
93- return left->getPersonalID () < right->getPersonalID ();
94- });
95+ std::sort (begin (data), end (data), [](personPtr left, personPtr right)
96+ {
97+ return left->getPersonalID () < right->getPersonalID ();
98+ });
9599}
96100
97101void Database::sortByStudentID ()
98102{
99- std::sort (begin (data), end (data), [](std::shared_ptr<Person> left, std::shared_ptr<Person> right)
103+ std::sort (begin (data), end (data), [](personPtr left, personPtr right)
100104 {
101- if (std:: dynamic_pointer_cast<Employee>(left)) return false ;
102- if (std:: dynamic_pointer_cast<Employee>(right)) return true ;
105+ if (dynamic_pointer_cast<Employee>(left)) return false ;
106+ if (dynamic_pointer_cast<Employee>(right)) return true ;
103107
104- std::shared_ptr<Student> student1 = std:: dynamic_pointer_cast<Student>(left);
105- std::shared_ptr<Student> student2 = std:: dynamic_pointer_cast<Student>(right);
108+ studentPtr student1 = dynamic_pointer_cast<Student>(left);
109+ studentPtr student2 = dynamic_pointer_cast<Student>(right);
106110 return student1->getStudentIndex () < student2->getStudentIndex ();
107111 });
108112}
109113
110- void Database::addPerson (std::shared_ptr<Person> person)
114+ void Database::addPerson (personPtr person)
111115{
112116 data.push_back (person);
113117}
@@ -119,7 +123,7 @@ bool Database::addStudent(const std::string& firstName,
119123 const std::string& address,
120124 const unsigned long & studentIndex)
121125{
122- std::shared_ptr<Person> student = std::make_shared<Student>(firstName,
126+ personPtr student = std::make_shared<Student>(firstName,
123127 lastName, personalID, gender, address, studentIndex);
124128 addPerson (student);
125129 return true ;
@@ -132,7 +136,7 @@ bool Database::addEmployee(const std::string& firstName,
132136 const std::string& address,
133137 const double & salary)
134138{
135- std::shared_ptr<Person> employee = std::make_shared<Employee>(firstName,
139+ personPtr employee = std::make_shared<Employee>(firstName,
136140 lastName, personalID, gender, address, salary);
137141 addPerson (employee);
138142 return true ;
@@ -201,12 +205,12 @@ bool Database::removeByStudentID(const unsigned long& studentID)
201205 auto iter = searchByStudentID (studentID);
202206
203207 if (iter != end (data))
204- {
205- data.erase (iter);
206- return true ;
207- }
208- else
209- return false ;
208+ {
209+ data.erase (iter);
210+ return true ;
211+ }
212+ else
213+ return false ;
210214}
211215
212216bool Database::modifySalary (const unsigned long long & personalID, const double & newSalary)
@@ -215,7 +219,7 @@ bool Database::modifySalary(const unsigned long long& personalID, const double&
215219
216220 if (personIter != data.end ())
217221 {
218- if (std::shared_ptr<Employee> isEmployee = std:: dynamic_pointer_cast<Employee>(*personIter))
222+ if (employeePtr isEmployee = dynamic_pointer_cast<Employee>(*personIter))
219223 {
220224 isEmployee->setSalary (newSalary);
221225 return true ;
0 commit comments