NikaBang

ДЗ: Хранилище книг

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