Advertisement
Torgach

Library of Books

Jan 20th, 2023 (edited)
892
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.59 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Collections.ObjectModel;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.IO;
  9.  
  10. namespace Основы.Практика
  11. {
  12.     class Program
  13.     {
  14.         static void Main()
  15.         {
  16.             Menu menu = new Menu();
  17.             menu.Run();
  18.         }
  19.     }
  20.  
  21.     class Menu
  22.     {
  23.         private const string ExitCommand = "0";
  24.         private const string AddBookCommand = "1";
  25.         private const string RemoveBookCommand = "2";
  26.         private const string ShowBooksCommand = "3";
  27.         private const string ShowBooksByParametrCommand = "4";
  28.  
  29.         private Library _library;
  30.  
  31.         public Menu()
  32.         {
  33.             _library = new Library();
  34.         }
  35.  
  36.         public void Run()
  37.         {
  38.             bool isRun = true;
  39.  
  40.             while (isRun)
  41.             {
  42.                 Console.WriteLine($"{ExitCommand} - Выход\n" +
  43.                     $"{AddBookCommand} - Добавить книгу\n" +
  44.                     $"{RemoveBookCommand} - Убрать книгу\n" +
  45.                     $"{ShowBooksCommand} - Показать все книги\n" +
  46.                     $"{ShowBooksByParametrCommand} - Показать книги по определенному параметру");
  47.                 Console.Write("Ввод: ");
  48.  
  49.                 string userInput = Console.ReadLine();
  50.  
  51.                 Console.Clear();
  52.  
  53.                 switch (userInput)
  54.                 {
  55.                     case ExitCommand:
  56.                         Console.WriteLine("Выход...");
  57.                         isRun = false;
  58.                         break;
  59.  
  60.                     case AddBookCommand:
  61.                         _library.AddBook();
  62.                         break;
  63.  
  64.                     case RemoveBookCommand:
  65.                         _library.RemoveBook();
  66.                         break;
  67.  
  68.                     case ShowBooksCommand:
  69.                         _library.ShowBooks();
  70.                         break;
  71.  
  72.                     case ShowBooksByParametrCommand:
  73.                         _library.ShowBooksByParametr();
  74.                         break;
  75.  
  76.                     default:
  77.                         Console.WriteLine("Некорректный ввод!");
  78.                         break;
  79.                 }
  80.             }
  81.         }
  82.     }
  83.  
  84.     class Library
  85.     {
  86.         private List<Book> _books;
  87.  
  88.         public Library()
  89.         {
  90.             _books = new List<Book>()
  91.             {
  92.                 new Book("Метро 2033", "Глуховский", 2005),
  93.                 new Book("Ведьмак", "Сапковский", 1986),
  94.                 new Book("Кровь, пот и пиксели", "Шрейер", 2018),
  95.                 new Book("Метро 2034", "Глуховский", 2009),
  96.                 new Book("Метро 2035", "Глуховский", 2015)
  97.             };
  98.         }
  99.  
  100.         public void AddBook()
  101.         {
  102.             Console.Write("Введите название книги: ");
  103.             string name = Console.ReadLine();
  104.  
  105.             Console.Write("\nВведите автора: ");
  106.             string author = Console.ReadLine();
  107.  
  108.             Console.Write("\nВведите год выпуска: ");
  109.  
  110.             if(int.TryParse(Console.ReadLine(), out int releaseYear) == false)
  111.             {
  112.                 Console.WriteLine("Некорректный ввод года выпуска!");
  113.                 return;
  114.             }
  115.  
  116.             Book book = new Book(name, author, releaseYear);
  117.             _books.Add(book);
  118.         }
  119.  
  120.         public void RemoveBook()
  121.         {
  122.             Console.WriteLine("Выберите из списка книгу, необходимую для удаления: ");
  123.  
  124.             for (int i = 0; i < _books.Count; i++)
  125.             {
  126.                 Console.WriteLine($"{i + 1} ) Название: {_books[i].Name}; Автор: {_books[i].Author}; " +
  127.                     $"Год выпуска: {_books[i].ReleaseYear}");
  128.             }
  129.  
  130.             Console.Write("Ввод: ");
  131.  
  132.             if(int.TryParse(Console.ReadLine(), out int userInput) == false)
  133.             {
  134.                 Console.WriteLine("Некорректный ввод!");
  135.                 return;
  136.             }
  137.             else if (--userInput < 0 && userInput > _books.Count)
  138.             {
  139.                 Console.WriteLine("Такой книги нет!");
  140.                 return;
  141.             }
  142.  
  143.             _books.RemoveAt(userInput);
  144.         }
  145.  
  146.         public void ShowBooks()
  147.         {
  148.             foreach (Book book in _books)
  149.             {
  150.                 Console.WriteLine($"Название: {book.Name}; Автор: {book.Author}; " +
  151.                     $"Год выпуска: {book.ReleaseYear}");
  152.             }
  153.         }
  154.  
  155.         public void ShowBooksByParametr()
  156.         {
  157.             const string ShowBookByNameCommand = "1";
  158.             const string ShowBookByAuthorCommand = "2";
  159.             const string ShowBookByReleaseYearCommand = "3";
  160.  
  161.             Console.WriteLine("Выберите параметр:\n" +
  162.                 $"{ShowBookByNameCommand} - по названию\n" +
  163.                 $"{ShowBookByAuthorCommand} - по авторам\n" +
  164.                 $"{ShowBookByReleaseYearCommand} - по году выпуска");
  165.  
  166.             Console.Write("Ввод: ");
  167.             string userInput = Console.ReadLine();
  168.  
  169.             Console.WriteLine();
  170.  
  171.             switch (userInput)
  172.             {
  173.                 case ShowBookByNameCommand:
  174.                     ShowBookByName();
  175.                     break;
  176.  
  177.                 case ShowBookByAuthorCommand:
  178.                     ShowBookByAuthor();
  179.                     break;
  180.  
  181.                 case ShowBookByReleaseYearCommand:
  182.                     ShowBookByReleaseYear();
  183.                     break;
  184.  
  185.                 default:
  186.                     Console.WriteLine("Такого параметра нет!");
  187.                     break;
  188.             }
  189.         }
  190.  
  191.         private void ShowBookByAuthor()
  192.         {
  193.             List<string> booksByAuthors = new List<string>();
  194.  
  195.             foreach (Book book in _books)
  196.             {
  197.                 booksByAuthors.Add(book.Author);
  198.                 Console.WriteLine(book.Author);
  199.             }
  200.  
  201.             Console.Write("\nВведите интересующего автора: ");
  202.             string userInput = Console.ReadLine();
  203.  
  204.             if (booksByAuthors.Contains(userInput) == false)
  205.             {
  206.                 Console.WriteLine("Такого автора нет!");
  207.                 return;
  208.             }
  209.  
  210.             Console.WriteLine($"Список книг автора {userInput}");
  211.  
  212.             foreach (Book book in _books)
  213.             {
  214.                 if (book.Author == userInput)
  215.                 {
  216.                     Console.WriteLine($"Название: {book.Name}. " +
  217.                     $"Год выпуска: {book.ReleaseYear};");
  218.                 }
  219.             }
  220.         }
  221.  
  222.         private void ShowBookByName()
  223.         {
  224.             List<string> booksByName = new List<string>();
  225.  
  226.             foreach (Book book in _books)
  227.             {
  228.                 booksByName.Add(book.Name);
  229.                 Console.WriteLine(book.Name);
  230.             }
  231.  
  232.             Console.Write("\nВведите название: ");
  233.             string userInput = Console.ReadLine();
  234.  
  235.             if (booksByName.Contains(userInput) == false)
  236.             {
  237.                 Console.WriteLine("Такого названия нет!");
  238.                 return;
  239.             }
  240.  
  241.             Console.WriteLine($"Информация об одноименной книге <{userInput}>");
  242.  
  243.             foreach (Book book in _books)
  244.             {
  245.                 if (book.Name == userInput)
  246.                 {
  247.                     Console.WriteLine($"Автора: {book.Author}. " +
  248.                     $"Год выпуска: {book.ReleaseYear};");
  249.                 }
  250.             }
  251.         }
  252.  
  253.         private void ShowBookByReleaseYear()
  254.         {
  255.             List<int> booksByReleaseYear = new List<int>();
  256.  
  257.             foreach (Book book in _books)
  258.             {
  259.                 booksByReleaseYear.Add(book.ReleaseYear);
  260.                 Console.WriteLine(book.ReleaseYear);
  261.             }
  262.  
  263.             Console.Write("\nВведите год: ");
  264.  
  265.             if(int.TryParse(Console.ReadLine(), out int userInput) == false)
  266.             {
  267.                 Console.WriteLine("Некорректный ввод!");
  268.                 return;
  269.             }
  270.             else if (booksByReleaseYear.Contains(userInput) == false)
  271.             {
  272.                 Console.WriteLine("Такого года выпуска нет!");
  273.                 return;
  274.             }
  275.  
  276.             Console.WriteLine($"Информация релизах в {userInput} г.");
  277.  
  278.             foreach (Book book in _books)
  279.             {
  280.                 if (book.ReleaseYear == userInput)
  281.                 {
  282.                     Console.WriteLine($"Название: {book.Name}. " +
  283.                     $"Автор: {book.Author};");
  284.                 }
  285.             }
  286.         }
  287.     }
  288.  
  289.     class Book
  290.     {
  291.         public Book(string name, string author, int releaseYear)
  292.         {
  293.             Name = name;
  294.             Author = author;
  295.             ReleaseYear = releaseYear;
  296.         }
  297.  
  298.         public string Name { get; private set; }
  299.         public string Author { get; private set; }
  300.         public int ReleaseYear { get; private set; }
  301.     }
  302. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement