HomoCivicus

TUSUR 21.05.2019 (3)

May 21st, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. using namespace std;
  4.  
  5. struct Book {
  6.     string udc = "";
  7.     string author = "";
  8.     string title = "";
  9.     int year = -1;
  10.     int copies = -1;
  11. };
  12.  
  13. class Library {
  14. private:
  15.     queue <Book> shelves;
  16.  
  17. public:
  18.     // Начальное формирование данных о книгах
  19.     void generateData() {
  20.         cout << "Поля заполняются без пробелов!\n";
  21.  
  22.         int n;
  23.        
  24.         do {
  25.             cout << "\nЧисло книг в библиотеке: ";
  26.             cin >> n;
  27.         } while (n <= 0);
  28.  
  29.         for (int i = 0; i < n; i++) {
  30.             Book tmpBook;
  31.             cout << "\nКнига №" << i + 1 << ":\n";
  32.  
  33.             cout << "УДК: ";
  34.             do {
  35.                 cin >> tmpBook.udc;
  36.             } while (tmpBook.udc.empty());
  37.  
  38.             cout << "Автор: ";
  39.             do {
  40.                 cin >> tmpBook.author;
  41.             } while (tmpBook.author.empty());
  42.  
  43.             cout << "Название: ";
  44.             do {
  45.                 cin >> tmpBook.title;
  46.             } while (tmpBook.title.empty());
  47.  
  48.             cout << "Год издания: ";
  49.             do {
  50.                 cin >> tmpBook.year;
  51.             } while (tmpBook.year < 0);
  52.  
  53.             cout << "Количество экземпляров: ";
  54.             do {
  55.                 cin >> tmpBook.copies;
  56.             } while (tmpBook.copies < 0);
  57.  
  58.             shelves.push(tmpBook);
  59.         }
  60.     }
  61.  
  62.     // Добавление книги в конец
  63.     void addBook() {
  64.         Book tmpBook;
  65.         cout << "\nНовая книга: ";
  66.  
  67.         cout << "\nУДК: ";
  68.         do {
  69.             cin >> tmpBook.udc;
  70.         } while (tmpBook.udc.empty());
  71.  
  72.         cout << "Автор: ";
  73.         do {
  74.             cin >> tmpBook.author;
  75.         } while (tmpBook.author.empty());
  76.  
  77.         cout << "Название: ";
  78.         do {
  79.             cin >> tmpBook.title;
  80.         } while (tmpBook.title.empty());
  81.  
  82.         cout << "Год издания: ";
  83.         do {
  84.             cin >> tmpBook.year;
  85.         } while (tmpBook.year < 0);
  86.  
  87.         cout << "Количество экземпляров: ";
  88.         do {
  89.             cin >> tmpBook.copies;
  90.         } while (tmpBook.copies < 0);
  91.  
  92.         shelves.push(tmpBook);
  93.     }
  94.  
  95.     // Удаление первой книги
  96.     void deleteBook() {
  97.         shelves.pop();
  98.     }
  99.  
  100.     // Выдача первой книги
  101.     void takeFirstBook() {
  102.         if (shelves.front().copies > 0) {
  103.             shelves.front().copies--;
  104.         }
  105.         else {
  106.             cout << "\nВсе экземпляры на руках";
  107.         }
  108.     }
  109.  
  110.     // Выдача последней книги
  111.     void takeLastBook() {
  112.         if (shelves.back().copies > 0) {
  113.             shelves.back().copies--;
  114.         }
  115.         else {
  116.             cout << "\nВсе экземпляры на руках";
  117.         }
  118.     }
  119.  
  120.     // Возврат первой книги
  121.     void returnFirstBook() {
  122.         shelves.front().copies++;
  123.     }
  124.  
  125.     // Возврат последней книги
  126.     void returnLastBook() {
  127.         shelves.back().copies++;
  128.     }
  129.  
  130.     // Сведения о первой и последней доступной книге
  131.     void infoProvision() {
  132.         cout << "\n\nЧисло книг в библиотеке: " << shelves.size();
  133.  
  134.         cout << "\n\nПервая книга:";
  135.         cout << "\nУДК: " << shelves.front().udc;
  136.         cout << "\nАвтор: " << shelves.front().author;
  137.         cout << "\nНазвание: " << shelves.front().title;
  138.         cout << "\nГод издания: " << shelves.front().year;
  139.         cout << "\nКоличество экземпляров: " << shelves.front().copies;
  140.  
  141.         cout << "\n\nПоследняя книга:";
  142.         cout << "\nУДК: " << shelves.back().udc;
  143.         cout << "\nАвтор: " << shelves.back().author;
  144.         cout << "\nНазвание: " << shelves.back().title;
  145.         cout << "\nГод издания: " << shelves.back().year;
  146.         cout << "\nКоличество экземпляров: " << shelves.back().copies;
  147.     }
  148. };
  149.  
  150. int main() {
  151.     // Ниже - пример работы с классом Library
  152.  
  153.     Library myLibrary;
  154.     myLibrary.generateData();
  155.     myLibrary.addBook();
  156.     myLibrary.infoProvision();
  157.     myLibrary.deleteBook();
  158.     myLibrary.infoProvision();
  159.     myLibrary.takeFirstBook();
  160.     myLibrary.infoProvision();
  161.     myLibrary.takeLastBook();
  162.     myLibrary.infoProvision();
  163.     myLibrary.returnFirstBook();
  164.     myLibrary.infoProvision();
  165.     myLibrary.returnLastBook();
  166.     myLibrary.infoProvision();
  167.  
  168.     return 0;
  169. }
Add Comment
Please, Sign In to add comment