HomoCivicus

TUSUR 21.05.2019 (2)

May 21st, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <stack>
  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.     stack <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 takeBook() {
  102.         if (shelves.top().copies > 0) {
  103.             shelves.top().copies--;
  104.         }
  105.         else {
  106.             cout << "\nВсе экземпляры на руках";
  107.         }
  108.     }
  109.  
  110.     // Возврат последней книги
  111.     void returnBook() {
  112.         shelves.top().copies++;
  113.     }
  114.  
  115.     // Сведения о последней доступной книге
  116.     void infoProvision() {
  117.         cout << "\n\nЧисло книг в библиотеке: " << shelves.size();
  118.         cout << "\n\nПоследняя книга:";
  119.         cout << "\nУДК: " << shelves.top().udc;
  120.         cout << "\nАвтор: " << shelves.top().author;
  121.         cout << "\nНазвание: " << shelves.top().title;
  122.         cout << "\nГод издания: " << shelves.top().year;
  123.         cout << "\nКоличество экземпляров: " << shelves.top().copies;
  124.     }
  125. };
  126.  
  127. int main() {
  128.     // Ниже - пример работы с классом Library
  129.  
  130.     Library myLibrary;
  131.     myLibrary.generateData();
  132.     myLibrary.addBook();
  133.     myLibrary.infoProvision();
  134.     myLibrary.deleteBook();
  135.     myLibrary.infoProvision();
  136.     myLibrary.takeBook();
  137.     myLibrary.infoProvision();
  138.     myLibrary.returnBook();
  139.     myLibrary.infoProvision();
  140.  
  141.     return 0;
  142. }
Add Comment
Please, Sign In to add comment