Я работаю над небольшим проектом базы данных.Я уже создал интерфейс с функцией switch()
, которая должна вызывать функции и выполнять циклы, пока не выберу опцию «EXIT».Я контролирую цикл, устанавливая указанное значение в переменную int Loop
.Является ли хорошей практикой иметь дело с таким циклом?Если нет, то почему?В других функциях, когда у меня несколько условий, я использую такие переменные даже дважды.Может быть, я должен сделать это по-другому?Имеет ли смысл, если я использую try(), throw(), catch()
исключения в этом случае, как бы это выглядело тогда?Вот мой кусок кода:
void mainMenu() {
vector<Employee> firmEmployees;
vector<Intern> firmInterns;
int Loop = 0;
while (Loop == 0) {
cout << endl << endl;
cout << "================ EMPLOYEE DATABASE ================" << endl << endl;
cout << " HIRE NEW EMPLOYEE (1)" << endl;
cout << " MANAGE EMPLOYEES (2)" << endl;
cout << " HIRE NEW INTERN (3)" << endl;
cout << " MANAGE INTERNS (4)" << endl;
cout << " EXIT (5)" << endl;
cout << " Choose option... ";
int option;
cin >> option;
if (option < 1 || option > 5 || !cin) {
cout << endl << "---Wrong input!---";
clearInput(); // cleaning cin
} else {
switch (option) {
default:
break;
case 1:
hireEmployee(firmEmployees);
break;
case 2:
employeeMenu(firmEmployees);
break;
case 3:
hireIntern(firmInterns);
break;
case 4:
internMenu(firmInterns);
break;
case 5:
Loop = 1;
break;
}
}
}
}
РЕДАКТИРОВАТЬ: Другой пример, больше переменных.
void fireEmployee(vector<Employee>& sourceEmployee) {
int repeat = 0;
while (repeat == 0) {
cout << "Enter ID to fire an employee: ";
int id;
cin >> id;
if (cin.fail()) {
clearInput();
cout << "ID number needed!" << endl;
} else {
int buf = 0;
for (auto &i : sourceEmployee) {
if (i.getID() == id) {
i.Fire();
i.setSalary(0);
cout << i.getName() << " " << i.getSurname() << " (" << i.getID() << ") has been fired" << endl;
buf = 1;
repeat = 1;
}
}
if (buf == 0) {
cout << "No employee with ID: " << id << endl;
}
}
}
}