Добрый день! Подскажите как сделать многоуровневое меню на С++по типу :
Что бы найти заявку ,нажмите f:
Что бы найти заявку по номеру рейса, нажмите 1;
Что бы найти заявку по дате вылета , нажмите 2;
Что бы отсортировать базу, нажмите g:
Что бы отсортировать по пункту назначения, нажмите 1;
Что бы отсортировать по дате вылета, нажмите 2;
Писала меню с помощью switch case
С++ изучать стала не давно так что прошу подробней обьяснять
Код:
int main(int argc, char const *argv[]) {
setlocale(LC_ALL, "rus");
Menu();
char c = 'z';
while (c != 'q') {
cin >> c;
cin.ignore(100, '\n');
int s = 10;
switch (c) {
case 'q':
break;
case 'm':
Menu();
break;
case 'l':
if (!Load()) {
cout << "Ошибка чтения файла" << endl;
break;
}
cout << "Загружено " << GetSize() << " заявок " << endl;
break;
case 'k':
cout << "Размер базы - " << GetSize() << endl;
break;
case 's':
if (IsEmpty()) {
cout << "База пуста" << endl;
break;
}
if (!Save()) {
cout << "Ошибка при сохранении" << endl;
break;
}
cout << "База сохранена" << endl;
break;
case 'e':
if (IsEmpty())
cout << "База пуста" << endl;
else
cout << "База не пуста" << endl;
break;
case 'p':
if (IsEmpty()) {
cout << "База пуста" << endl;
break;
}
PrintBase();
break;
case 'f':
if (IsEmpty()) {
cout << "База пуста" << endl;
break;
}
// поиск по дате
/* char SearchDepDate[11];
cout << "Введите дату вылета: ";
cin >> SearchDepDate;
cout << endl;
PassengerNode* tmp;
tmp = FindPassenger(SearchDepDate);
if (tmp == nullptr) {
cout << " не найден!" << endl;
break;
}
cout << "Заявка найдена" << endl;
PrintPassengerInfo(tmp->PassengerData);
cout << "Удалить?(y/n)" << endl;
cin >> c;
if (c == 'y') DeletePassenger(tmp);
c = 'z';
break;
*/
//поиск по рейсу
char SearchFlight[NFOSize];
cout << "Введите номер рейса для поиска: ";
cin >> SearchFlight;
cout << endl;
PassengerNode* tmp;
tmp = FindPassenger(SearchFlight);
if (tmp == nullptr) {
cout << " не найден!" << endl;
break;
}
cout << "Найден рейс" << endl;
PrintPassengerInfo(tmp->PassengerData);
cout << "Удалить?(y/n)" << endl;
cin >> c;
if (c == 'y') DeletePassenger(tmp);
c = 'z';
break;
case 'a':
char Name[NFOSize];
char SecondName[NFOSize];
char LastName[NFOSize];
char Destin[NFOSize];
char DepDate[11];
char Flight[NFOSize];
cout << "Введите информацию о пассажире" << endl;
cout << "Имя: ";
cin >> Name;
cout << endl;
cout << "Фамилия: ";
cin >> LastName;
cout << endl;
cout << "Отчество: ";
cin >> SecondName;
cout << "Пункт назначения: ";
cin >> Destin;
cout << endl;
cout << "Дата вылета(дд.мм.гггг): ";
cin >> DepDate;
cout << endl;
cout << "Рейс: ";
cin >> Flight;
cout << endl;
AddPassenger(Name, LastName, SecondName, Destin, DepDate, Flight);
cout << "Заявка добавлена" << endl;
break;
case 'g':
if (IsEmpty()) {
cout << "База пуста" << endl;
break;
}
while (s != sort::up && s != sort::down) {
cout << "Выберете направление сортировки(" << sort::up << " - по возрастанию, " << sort::down << " - по убыванию): ";
cin >> s;
if (s != sort::up && s != sort::down) cout << "Вы ввели недопустимое число" << endl;
}
Sorting(s);
break;
default:
cout << "Неизвестная команда" << endl;
break;
}
}
return 0;
}
//--------------------------