-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUniversity.hpp
More file actions
211 lines (189 loc) · 6.43 KB
/
University.hpp
File metadata and controls
211 lines (189 loc) · 6.43 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
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
#pragma once
#include "Person.hpp"
#include "Command.hpp"
#include <memory>
#include <vector>
#include <fstream>
using PersonIt = std::vector<std::shared_ptr<Person>>::iterator;
constexpr char DEFAULT_FILE_NAME[] { "records.txt" };
class University : public Command {
public:
//University();
~University() = default;
void operator()(std::vector<std::shared_ptr<Person>>& person) override;
//~University();
enum class MenuOption {
BaseMenu = 0,
AddStudents,
ShowStudent,
SearchStudents,
SortStudents,
SaveLoadFile,
GenerateData,
Exit,
SearchBySurname = 11,
SearchByPESEL = 12,
SearchBySalary = 13,
SortBySurname = 21,
SortByPESEL = 22,
Back = 100,
Delete = 200
};
enum class YesNoOption {
Yes,
No,
Error
};
enum class WhichPerson {
Anyone,
Student,
Professor
};
enum class LoadSaveOption {
NoChoice,
Save,
SaveNew,
ClearLoad,
LoadToExist,
Back
};
enum class IfPersonExist {
NoChoice,
Compare,
Update,
KeepOriginal,
Edit,
Back
};
void applicationStart();
private:
size_t printMenu();
void addNewPerson();
void printInsertPersonData();
void confirmAddRecord();
void selectPerson();
void insertStudentName();
void insertStudentSurname();
void insertAddress();
void insertStudentGender();
void insertStudentPeselNumber();
void insertStudentIndexNumber();
void insertProfessorSalary();
void deleteRecordByIndexNumber();
bool validationSelectPerson(size_t userChoice);
void assignmentPersonValue(size_t userChoice);
bool validationStringSize(std::string userStringData, size_t maxSize, bool isEqual = false);
bool validationIsAlpabet(std::string stringToCheck);
bool validationIsDigit(std::string stringToCheck);
bool peselValidDOBCheck();
bool peselValidGenderCheck();
bool peselValidWithCurrentlyDate();
bool peselValidWithWeight();
bool validatingPeselNumber();
bool validatingGender();
void addStudentRecordToVector();
void addProfesorRecordToVector();
MenuOption menuEngine(size_t menuSize);
bool validatingMenuChoose(const size_t choosenValueToValid, const size_t sizeMenu);
void showStudents();
void addOneRecordToEndFile(size_t personIndex, std::fstream & fileName);
void loadFromFile(std::string fileName = DEFAULT_FILE_NAME);
int countRecord(std::string fileMane = DEFAULT_FILE_NAME);
void printSearchMenu();
void printDeletePersonByIndexNumber();
MenuOption searchMenuStudent();
void searchMenuEngine();
bool validatingSearchAndSortMenuChoose(const int);
std::string insertSearchPeselNumber();
bool checkIfExistPeselNumber(std::string);
void printSetSalaryMenu();
void searchByPeselNumber();
void searchBySalary();
std::string insertSearchSalary();
std::string insertSearchSurname();
void checkIfExistSurname(std::string);
void searchBySurname();
void whichPersonIs(Person* person);
size_t choiceSetSalary();
void salaryOptions(size_t userChoice);
void changingSalary(std::string newSalary);
size_t printSaveLoadMenu();
LoadSaveOption menuLoadSaveEngine(size_t menuSize);
void loadSaveMenu();
std::vector<std::shared_ptr<Person>>::iterator isPersonExist();
size_t printMenuIfPersonExist();
IfPersonExist ifPersonExist(size_t menuSize);
void ifPersonExistMenu();
void updateRecordIfPersonExist();
void saveAllFile(std::string fileName = DEFAULT_FILE_NAME);
void saveInNewFile();
void printSaveInNewFile();
void validationSaveInNewFile();
void userInsertFileName();
void saveNew();
void printIfFileExist();
void validationIfFileExist(size_t userChoice);
void sortStudents();
void printSortMenu();
void sortMenuEngine();
MenuOption validationUserChoiceSortMenu();
void sortByPeselNumber();
void sortBySurname();
void sortBySalary();
void ifExistCompare();
size_t userChoiceIfFileExist();
size_t saveNewIfFileExist();
void clearLoad();
void printClearLoadMenu();
void clearVector();
void loadToExist();
void printLoadToExist();
std::vector<std::shared_ptr<Person>> copyDataToTempContanair(std::vector<std::shared_ptr<Person>>& personCopy);
void deleteDuplicate();
void printInterfaceDataGenerator();
void interfaceDataGeneratorStudent();
void interfaceDataGeneratorProfessor();
size_t interfaceDataGeneratorAll();
void dataGenerator();
void studentDataGenerator(size_t dataAmout);
void professorDataGenerator(size_t dataAmout);
void nameGenerator();
void surnameGenerator();
void addressGenerator();
void indexNumberGenerator();
void peselNumberGenerator();
void professorSalaryGenerator();
void genderGenerator();
void loadFromFileToGenerateData(std::string fileName);
std::string randomDataLoader(std::string fileName, size_t recordNumber);
size_t randomDataGenerator(size_t maxElement, size_t minElement = 1);
size_t countRecordGenerateData(std::string fileMane);
std::string generateWeightPeselNumber(std::string pesel);
void deleteByIndexNumber(std::string);
std::string convertPersonGender(const size_t);
YesNoOption yesNoOption();
MenuOption menuOption_ { MenuOption::BaseMenu };
std::string name_ { "test_name" };
std::string surname_ { "test_surname" };
std::string address_ { "test_address" };
std::string indexNumber_ { "1111111111" };
std::string peselNumber_ { "82040207834" };
std::string professorSalary_ { "4000" };
size_t gender_ { 1 };
size_t sizeNameLimit_ { 16 };
size_t sizeSurnameLimit_ { 30 };
size_t sizeAddressLimit_ { 40 };
size_t sizePeselNumberLimit_ { 11 };
size_t sizeGenderLimit_ { 6 };
size_t sizeIndexNumberLimit_ { 10 };
size_t sizeSalaryLimit_ { 5 };
std::vector<std::shared_ptr<Person>>person_;
std::shared_ptr<Person>currentlyPerson_;
WhichPerson userChoicePerson_ { WhichPerson::Anyone };
WhichPerson currentlyReadingRecord_ { WhichPerson::Anyone };
LoadSaveOption userChoiceLoadSave_ { LoadSaveOption::NoChoice };
IfPersonExist userChoiceIfExist_ { IfPersonExist::NoChoice };
PersonIt checkedIfPersonExist_ { };
std::string fileName_ { DEFAULT_FILE_NAME };
std::fstream file_;
};