Advertisement
ranee

Библиотека

Mar 22nd, 2023
771
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.49 KB | None | 0 0
  1. using System;
  2. using System.Numerics;
  3.  
  4. namespace BookStorage
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             const string AddBookCommand = "1";
  11.             const string ShowAllBookCommand = "2";
  12.             const string RemovePlayerByIdCommand = "3";
  13.             const string SearchBookByAuthorCommand = "4";
  14.             const string SearchBookByNameCommand = "5";
  15.             const string SearchBookByYearCommand = "6";
  16.             const string ExitCommand = "7";
  17.  
  18.             bool isWork = true;
  19.             BookStorage bookStorage = new BookStorage();
  20.  
  21.             while (isWork)
  22.             {
  23.                 Console.WriteLine($"{AddBookCommand}. Добавить книгу" +
  24.                     $"\n{ShowAllBookCommand}. Посмотреть все книги" +
  25.                     $"\n{RemovePlayerByIdCommand}. Удалить книгу по ID" +
  26.                     $"\n{SearchBookByAuthorCommand}. Поиск книги по автору" +
  27.                     $"\n{SearchBookByNameCommand}. Поиск книги по названию" +
  28.                     $"\n{SearchBookByYearCommand}. Поиск книги по году" +
  29.                     $"\n{ExitCommand}. Выйти");
  30.                 string userSelection = Console.ReadLine();
  31.  
  32.                 switch (userSelection)
  33.                 {
  34.                     case AddBookCommand:
  35.                         bookStorage.AddBook();
  36.                         break;
  37.  
  38.                     case ShowAllBookCommand:
  39.                         bookStorage.ShowAllBook();
  40.                         break;
  41.  
  42.                     case RemovePlayerByIdCommand:
  43.                         bookStorage.RemovePlayerById();
  44.                         break;
  45.  
  46.                     case SearchBookByAuthorCommand:
  47.                         bookStorage.SearchBookByAuthor();
  48.                         break;
  49.  
  50.                     case SearchBookByNameCommand:
  51.                         bookStorage.SearchBookByName();
  52.                         break;
  53.  
  54.                     case SearchBookByYearCommand:
  55.                         bookStorage.SearchBookByYear();
  56.                         break;
  57.  
  58.                     case ExitCommand:
  59.                         isWork = false;
  60.                         break;
  61.  
  62.                     default:
  63.                         Console.WriteLine("Ошибка, такого пункта меню нет");
  64.                         break;
  65.                 }
  66.  
  67.                 Console.ReadKey();
  68.                 Console.Clear();
  69.             }
  70.         }
  71.     }
  72.  
  73.     class Book
  74.     {
  75.         private static int _idCounter = 1;
  76.  
  77.         public Book(string autor, string title, string yearOfRelease)
  78.         {
  79.             Autor = autor;
  80.             Title = title;
  81.             YearOfRelease = yearOfRelease;
  82.             UniqueNumber = _idCounter++;
  83.         }
  84.  
  85.         public int UniqueNumber { get; private set; }
  86.         public string Autor { get; private set; }
  87.         public string Title { get; private set; }
  88.         public string YearOfRelease { get; private set; }
  89.  
  90.         public void ShowBook()
  91.         {
  92.             Console.WriteLine($"Id книги: {UniqueNumber}, Автор книги: {Autor}, Название книги: {Title}, Год выпуска книги: {YearOfRelease}.");
  93.         }
  94.     }
  95.  
  96.     class BookStorage
  97.     {
  98.         private List<Book> _books;
  99.  
  100.         public BookStorage()
  101.         {
  102.             _books = new List<Book>();
  103.         }
  104.  
  105.         private string SetAuthor()
  106.         {
  107.             Console.Write("Введите ФИО автора книги:");
  108.             return Console.ReadLine();
  109.         }
  110.  
  111.         private string SetTitle()
  112.         {
  113.             Console.Write("Введите название книги:");
  114.             return Console.ReadLine();
  115.         }
  116.  
  117.         private string SetYearOfRelease()
  118.         {
  119.             Console.Write("Введите год выпуска");
  120.             return Console.ReadLine();
  121.         }
  122.  
  123.         public void AddBook()
  124.         {
  125.             Console.Clear();
  126.  
  127.             Book book = new Book(SetAuthor(), SetTitle(), SetYearOfRelease());
  128.  
  129.             _books.Add(book);
  130.  
  131.             Console.WriteLine($"Книга {book.Title} успешно добавлена c Id {book.UniqueNumber}.");
  132.         }
  133.  
  134.         public void ShowAllBook()
  135.         {
  136.             Console.Clear();
  137.  
  138.             if (_books.Count > 0)
  139.             {
  140.                 foreach (var book in _books)
  141.                 {
  142.                     book.ShowBook();
  143.                 }
  144.             }
  145.             else
  146.             {
  147.                 Console.WriteLine("В хранинилище нет книг.");
  148.             }
  149.         }
  150.  
  151.         public void RemovePlayerById()
  152.         {
  153.             Book book;
  154.             Console.WriteLine("Введите ID книги:");
  155.  
  156.             if (int.TryParse(Console.ReadLine(), out int id))
  157.             {
  158.                 if (TryGetBook(id, out book))
  159.                 {
  160.                     _books.Remove(book);
  161.                     Console.WriteLine($"Книга с ID {id} успешно удалена.");
  162.                 }
  163.                 else
  164.                 {
  165.                     Console.WriteLine($"Книга с ID {id} не найдена.");
  166.                 }
  167.             }
  168.             else
  169.             {
  170.                 Console.WriteLine("Неверный ввод.");
  171.             }
  172.         }
  173.  
  174.         private bool TryGetBook(int id, out Book book)
  175.         {
  176.             foreach (Book bookLocal in _books)
  177.             {
  178.                 if (bookLocal.UniqueNumber == id)
  179.                 {
  180.                     book = bookLocal;
  181.                     return true;
  182.                 }
  183.             }
  184.  
  185.             book = null;
  186.  
  187.             return false;
  188.         }
  189.  
  190.         public void SearchBookByAuthor()
  191.         {
  192.             Console.Clear();
  193.  
  194.             if (_books.Count > 0)
  195.             {
  196.                 Console.Write("Введите имя автора: ");
  197.                 string author = Console.ReadLine().ToLower();
  198.                 int counter = 0;
  199.  
  200.                 foreach (var book in _books)
  201.                 {
  202.                     if (book.Autor.ToLower() == author || book.Autor.ToLower().Contains(author))
  203.                     {
  204.                         book.ShowBook();
  205.                         counter++;
  206.                     }
  207.                 }
  208.  
  209.                 if (counter == 0)
  210.                 {
  211.                     Console.WriteLine("Совпадений нет");
  212.                 }
  213.             }
  214.             else
  215.             {
  216.                 Console.WriteLine("В хранилище нет книг.");
  217.             }
  218.         }
  219.  
  220.         public void SearchBookByName()
  221.         {
  222.             Console.Clear();
  223.  
  224.             if (_books.Count > 0)
  225.             {
  226.                 int counter = 0;
  227.                 Console.Write("Введите название книги: ");
  228.                 string title = Console.ReadLine().ToLower();
  229.  
  230.                 foreach (var book in _books)
  231.                 {
  232.                     if (book.Title.ToLower() == title || book.Title.ToLower().Contains(title))
  233.                     {
  234.                         book.ShowBook();
  235.                         counter++;
  236.                     }
  237.                 }
  238.  
  239.                 if (counter == 0)
  240.                 {
  241.                     Console.WriteLine("Совпадений нет");
  242.                 }
  243.             }
  244.             else
  245.             {
  246.                 Console.WriteLine("В хранилище нет книг.");
  247.             }
  248.  
  249.         }
  250.  
  251.         public void SearchBookByYear()
  252.         {
  253.             Console.Clear();
  254.  
  255.             if (_books.Count > 0)
  256.             {
  257.                 Console.Write("Введите год выпуска книги: ");
  258.                 string year = Console.ReadLine().ToLower();
  259.                 int counter = 0;
  260.  
  261.                 foreach (var book in _books)
  262.                 {
  263.                     if (book.YearOfRelease.ToLower() == year || book.YearOfRelease.ToLower().Contains(year))
  264.                     {
  265.                         book.ShowBook();
  266.                         counter++;
  267.                     }
  268.                 }
  269.  
  270.                 if (counter == 0)
  271.                 {
  272.                     Console.WriteLine("Совпадений нет");
  273.                 }
  274.             }
  275.             else
  276.             {
  277.                 Console.WriteLine("В хранилище нет книг.");
  278.             }
  279.         }
  280.     }
  281. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement