Advertisement
SPavelA

OOPTask5BooksStorage

Oct 24th, 2024
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.46 KB | Gaming | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace OOPTask5BooksStorage
  6. {
  7.     internal class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             BooksStorage booksStorage = new BooksStorage();
  12.  
  13.             booksStorage.Work();
  14.         }
  15.     }
  16.  
  17.     public class BooksStorage
  18.     {
  19.         private List<Book> _books = new List<Book>();
  20.  
  21.         public void Work()
  22.         {
  23.             const string CommandAdd = "add";
  24.             const string CommandDelete = "delete";
  25.             const string CommandShowAll = "all";
  26.             const string CommandShowByAuthor = "author";
  27.             const string CommandShowByTitle = "title";
  28.             const string CommandShowByYear = "year";
  29.             const string CommandExit = "exit";
  30.  
  31.             bool _isWorking = true;
  32.             string userInput;
  33.        
  34.             while (_isWorking == true)
  35.             {
  36.                 Console.WriteLine($"На складе {_books.Count} книг.");
  37.                 Console.WriteLine($"{CommandAdd} - добавить книгу");
  38.                 Console.WriteLine($"{CommandDelete} - удалить книгу");
  39.                 Console.WriteLine($"{CommandShowAll} - показать все книги");
  40.                 Console.WriteLine($"{CommandShowByAuthor} - поиск по автору");
  41.                 Console.WriteLine($"{CommandShowByTitle} - поиск по названию");
  42.                 Console.WriteLine($"{CommandShowByYear} - поиск по году");
  43.                 Console.WriteLine($"{CommandExit} - выход");
  44.                 Console.Write("Введите команду: ");
  45.                 userInput = Console.ReadLine();
  46.  
  47.                 switch (userInput)
  48.                 {
  49.                     case CommandAdd:
  50.                         Add();
  51.                         break;
  52.  
  53.                     case CommandDelete:
  54.                         Delete();
  55.                         break;
  56.  
  57.                     case CommandShowAll:
  58.                         ShowAll();
  59.                         break;
  60.  
  61.                     case CommandShowByAuthor:
  62.                         ShowByAuthor();
  63.                         break;
  64.  
  65.                     case CommandShowByTitle:
  66.                         ShowByTitle();
  67.                         break;
  68.  
  69.                     case CommandShowByYear:
  70.                         ShowByYear();
  71.                         break;
  72.  
  73.                     case CommandExit:
  74.                         _isWorking = false;
  75.                         break;
  76.  
  77.                     default:
  78.                         Console.WriteLine("Неизвестная команда");
  79.                         break;
  80.                 }
  81.  
  82.                 Console.WriteLine("Для продолжения нажмите любую кнопку");
  83.                 Console.ReadKey();
  84.                 Console.Clear();
  85.             }
  86.         }
  87.  
  88.         private void Add()
  89.         {
  90.             Console.WriteLine("Введите название книги: ");
  91.             string title = Console.ReadLine();
  92.             Console.WriteLine("Введите автора книги: ");
  93.             string author = Console.ReadLine();
  94.             Console.WriteLine("Введите год книги: ");
  95.             int year = ReadInt();
  96.             _books.Add(new Book(title, author, year));
  97.             Console.WriteLine("Книга успешно добавлена");
  98.         }
  99.  
  100.         private void Delete()
  101.         {
  102.             if (IsEmpty())
  103.                 return;
  104.  
  105.             ShowAll();
  106.             Console.Write("Выберите номер книги, которую хотите удалить: ");
  107.             int index = ReadInt() - 1;
  108.  
  109.             if (index >= 0 && index < _books.Count())
  110.             {
  111.                 _books.RemoveAt(index);
  112.                 Console.WriteLine("Книга удалена");
  113.             }
  114.             else
  115.             {
  116.                 Console.WriteLine("Книги с таким номером нет");
  117.             }
  118.         }
  119.  
  120.         private void ShowAll()
  121.         {
  122.             if (IsEmpty())
  123.                 return;
  124.  
  125.             Console.WriteLine("Книги в хранилище:");
  126.             int index = 1;
  127.            
  128.             foreach (Book book in _books)
  129.             {
  130.                 Console.Write((index++) + " - ");
  131.                 book.ShowInfo();
  132.             }
  133.         }
  134.  
  135.         private void ShowByAuthor()
  136.         {
  137.             if (IsEmpty())
  138.                 return;
  139.  
  140.             Console.Write("Введите автора: ");
  141.             string author = Console.ReadLine();
  142.             int index = 1;
  143.  
  144.             foreach (Book book in _books)
  145.             {
  146.                 if (book.Author == author)
  147.                 {
  148.                     Console.Write((index++) + " - ");
  149.                     book.ShowInfo();
  150.                 }
  151.             }
  152.  
  153.             if (index == 1)
  154.             {
  155.                 Console.WriteLine("В хранилище нет книг с таким автором");
  156.             }
  157.         }
  158.  
  159.         private void ShowByTitle()
  160.         {
  161.             if (IsEmpty())
  162.                 return;
  163.  
  164.             Console.Write("Введите название: ");
  165.             string title = Console.ReadLine();
  166.             int index = 1;
  167.  
  168.             foreach (Book book in _books)
  169.             {
  170.                 if (book.Title == title)
  171.                 {
  172.                     Console.Write((index++) + " - ");
  173.                     book.ShowInfo();
  174.                 }
  175.             }
  176.  
  177.             if (index == 1)
  178.             {
  179.                 Console.WriteLine("В хранилище нет книг с таким названием");
  180.             }
  181.         }
  182.  
  183.         private void ShowByYear()
  184.         {
  185.             if (IsEmpty())
  186.                 return;
  187.          
  188.             Console.Write("Введите год: ");
  189.             int year = ReadInt();
  190.             int index = 1;
  191.  
  192.             foreach (Book book in _books)
  193.             {
  194.                 if (book.Year == year)
  195.                 {
  196.                     Console.Write((index++) + " - ");
  197.                     book.ShowInfo();
  198.                 }
  199.             }
  200.  
  201.             if (index == 1)
  202.             {
  203.                 Console.WriteLine("В хранилище нет книг с таким годом");
  204.             }
  205.         }
  206.  
  207.         private bool IsEmpty()
  208.         {
  209.             if (_books.Count == 0)
  210.             {
  211.                 Console.WriteLine("Хранилище пусто");
  212.                 return true;
  213.             }
  214.             else
  215.             {
  216.                 return false;
  217.             }
  218.         }
  219.  
  220.         private int ReadInt()
  221.         {
  222.             int inputNumber;
  223.  
  224.             while (int.TryParse(Console.ReadLine(), out inputNumber) == false)
  225.             {
  226.                 Console.Write("Это не число, попробуйте еще раз: ");
  227.             }
  228.  
  229.             return inputNumber;
  230.         }
  231.     }
  232.  
  233.     public class Book
  234.     {
  235.         public Book(string title, string author, int year)
  236.         {
  237.             Title = title;
  238.             Author = author;
  239.             Year = year;
  240.         }
  241.  
  242.         public string Title { get; private set; }
  243.         public string Author { get; private set; }
  244.         public int Year { get; private set; }
  245.  
  246.         public void ShowInfo()
  247.         {
  248.             Console.WriteLine($"{Author} \"{Title}\", {Year}");
  249.         }
  250.     }
  251. }
  252.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement