_Ziens_

Лаба №8

Apr 27th, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. class Request {
  8.     string destination; // Пункт назначения
  9.     int flightNumber{0}; // Номер рейса
  10.     string name; // Фамилия, инициалы
  11.     string date; // Желаемая дата вылета
  12.  
  13. public:
  14.  
  15.     void setDestination(const string &_destination) { destination = _destination; }
  16.  
  17.     void setFlightNumber(int _flightNumber) { flightNumber = _flightNumber; }
  18.  
  19.     void setName(const string &_name) { name = _name; }
  20.  
  21.     void setDate(const string &_date) { date = _date; }
  22.  
  23.     int getFlightNumber() const { return flightNumber; }
  24.  
  25.     string getDate() const { return date; }
  26.  
  27.     void print(bool printHeader) const {
  28.         if (printHeader)
  29.             cout << setw(12) << "Пункт назнач." << '|' << setw(6) << "Рейс №" << '|' << setw(14) << "Фамилия"
  30.                  << '|' << setw(12) << "Дата вылета" << endl;
  31.         cout << "-------------------------------------" << endl;
  32.         cout << setw(12) << destination << '|' << setw(6) << flightNumber << '|' << setw(14) << name
  33.              << '|' << setw(12) << date << endl;
  34.         cout << "-------------------------------------" << endl;
  35.     }
  36. };
  37.  
  38. int scanInt() {
  39.     int value;
  40.     while (true) {
  41.         cin >> value;
  42.         if (cin.good())
  43.             return value;
  44.         cin.clear();
  45.         cin.ignore(INTMAX_MAX, '\n');
  46.         cout << "Ошибка! Должно быть введено число." << endl;
  47.     }
  48. }
  49.  
  50. void fillRequest(Request &request) {
  51.     cin.clear();
  52.     cin.ignore(INT_MAX, '\n');
  53.     string destination, name, date;
  54.     int flightNumber;
  55.  
  56.     cout << "Введите пункт назначения: ";
  57.     getline (cin, destination);
  58.     cout << "Введите фамилию и инициалы: ";
  59.     getline (cin, name);
  60.     cout << "Введите желаемую дату вылета: ";
  61.     getline (cin, date);
  62.     cout << "Введите номер полёта: ";
  63.     flightNumber = scanInt();
  64.  
  65.     request.setDestination(destination);
  66.     request.setName(name);
  67.     request.setDate(date);
  68.     request.setFlightNumber(flightNumber);
  69. }
  70.  
  71. void filter(list<Request> const &requests) {
  72.     cout << "Введите номер рейса: ";
  73.     int flightNumber = scanInt();
  74.     cout << "Введите дату вылета: ";
  75.     string date;
  76.     cin >> date;
  77.  
  78.     for (auto iterator = requests.begin(); iterator != requests.end(); iterator++) {
  79.         if (iterator->getFlightNumber() == flightNumber && iterator->getDate() == date)
  80.             iterator->print(iterator == requests.begin());
  81.     }
  82. }
  83.  
  84. int main() {
  85.     setlocale(LC_ALL, "");
  86.     list<Request> requests;
  87.  
  88.     while (true) {
  89.         cout << "1) Добавить" << endl;
  90.         cout << "2) Удалить" << endl;
  91.         cout << "3) Поиск" << endl;
  92.         cout << "4) Печать" << endl;
  93.         cout << "5) Выход" << endl;
  94.         int choice;
  95.         cin >> choice;
  96.         switch (choice) {
  97.             case 1: {
  98.                 Request r;
  99.                 fillRequest(r);
  100.                 requests.push_back(r);
  101.             }
  102.                 break;
  103.             case 2:
  104.                 if (!requests.empty()) {
  105.                     requests.pop_back();
  106.                     cout << "Удалён последний элемент" << endl;
  107.                 }
  108.                 break;
  109.             case 3:
  110.                 filter(requests);
  111.                 break;
  112.             case 4:
  113.                 for (auto iterator = requests.begin(); iterator != requests.end(); iterator++)
  114.                     iterator->print(iterator == requests.begin());
  115.                 break;
  116.             case 5:
  117.                 return 0;
  118.             default:;
  119.         }
  120.     }
  121. }
Add Comment
Please, Sign In to add comment