lovelyvook

Unit_41

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