Advertisement
SaNik74

library

Aug 6th, 2023 (edited)
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.55 KB | None | 0 0
  1. namespace Library_with_books;
  2.  
  3. class Program
  4. {
  5.     static void Main(string[] args)
  6.     {
  7.         Library library = new Library();
  8.         library.Work();
  9.     }
  10.  
  11.     class Library
  12.     {
  13.         private List<Book> _library = new List<Book>();
  14.  
  15.         public void Work()
  16.         {
  17.             const string AddBookCommand = "1";
  18.             const string FindBookCommand = "2";
  19.             const string DeleteBookCommand = "3";
  20.             const string ShowAllBooksCommand = "4";
  21.             const string ExitCommand = "5";
  22.  
  23.             Library library = new Library();
  24.             bool isWorking = true;
  25.             Console.WriteLine("Добавте первую книгу в библиотеку. ");
  26.             library.AddBook();
  27.             Console.Clear();
  28.  
  29.             while (isWorking)
  30.             {
  31.                 Console.WriteLine($"Хранилище книг\n\n\n" +
  32.                     $"Введите {AddBookCommand} если хотите добавить книгу.\n" +
  33.                     $"Введите {FindBookCommand} если хотите найти книгу.\n" +
  34.                     $"Введите {DeleteBookCommand} если хотите удалить книгу.\n" +
  35.                     $"Введите {ShowAllBooksCommand} если хотите увидеть список книг.\n" +
  36.                     $"Введите {ExitCommand} если хотите выйти из программы.\n\n" +
  37.                     $"Ввод: ");
  38.  
  39.                 string? userInput = Console.ReadLine();
  40.  
  41.                 switch (userInput)
  42.                 {
  43.                     case AddBookCommand:
  44.                         library.AddBook();
  45.                         break;
  46.  
  47.                     case FindBookCommand:
  48.                         library.FindBook();
  49.                         break;
  50.  
  51.                     case ShowAllBooksCommand:
  52.                         library.ShowAllBooks();
  53.                         break;
  54.  
  55.                     case DeleteBookCommand:
  56.                         library.DeleteBook();
  57.                         break;
  58.  
  59.                     case ExitCommand:
  60.                         isWorking = false;
  61.                         break;
  62.  
  63.                     default:
  64.                         Console.WriteLine("Введена неверная команда.");
  65.                         break;
  66.                 }
  67.  
  68.                 Console.ReadKey();
  69.                 Console.Clear();
  70.             }
  71.         }
  72.  
  73.         private void AddBook()
  74.         {
  75.             Book newBook = new Book();
  76.  
  77.             Console.WriteLine("Введите название книги: ");
  78.             newBook.AddBookTitle();
  79.             Console.WriteLine("Введите имя автора: ");
  80.             newBook.AddAuthorName();
  81.             Console.WriteLine("Введите год издания: ");
  82.             newBook.AddYearOfPublishing();
  83.  
  84.             _library.Add(newBook);
  85.         }
  86.  
  87.         private void ShowAllBooks()
  88.         {
  89.             int numberOfbook = 1;
  90.  
  91.             if (_library.Count == 0)
  92.             {
  93.                 Console.WriteLine("Список пуст.");
  94.             }
  95.  
  96.             foreach (var book in _library)
  97.             {
  98.                 Console.WriteLine($"{numberOfbook} {book.BookTitle} {book.AuthorName} {book.YearOfPublishing}");
  99.                 numberOfbook++;
  100.             }
  101.         }
  102.  
  103.         private void FindAuthor()
  104.         {
  105.             List<Book> libraryOfFindBooks = new List<Book>();
  106.  
  107.             Console.WriteLine("Введите имя автора для поиска: ");
  108.             string userInput = Console.ReadLine();
  109.             libraryOfFindBooks = _library.FindAll(item => item.AuthorName == userInput);
  110.             Console.WriteLine("Список найденых книг:");
  111.  
  112.             foreach (var book in libraryOfFindBooks)
  113.             {
  114.                 Console.WriteLine($"{book.BookTitle} {book.AuthorName} {book.YearOfPublishing}");
  115.             }
  116.         }
  117.  
  118.         private void FindNameOfBook()
  119.         {
  120.             List<Book> libraryOfFindBooks = new List<Book>();
  121.  
  122.             Console.WriteLine("Введите название книги для поиска: ");
  123.             string userInput = Console.ReadLine();
  124.             libraryOfFindBooks.AddRange(_library.FindAll(item => item.BookTitle == userInput));
  125.             Console.WriteLine("Список найденых книг:");
  126.  
  127.             foreach (var book in libraryOfFindBooks)
  128.             {
  129.                 Console.WriteLine($"{book.BookTitle} {book.AuthorName} {book.YearOfPublishing}");
  130.             }
  131.         }
  132.  
  133.         private void FindBook()
  134.         {
  135.             Book newBook = new Book();
  136.             string resultOfSelect = newBook.SelectNameOrTitle();
  137.  
  138.             if (resultOfSelect == "name")
  139.             {
  140.                 FindAuthor();
  141.             }
  142.             else
  143.             {
  144.                 FindNameOfBook();
  145.             }
  146.         }
  147.  
  148.         private void DeleteBook()
  149.         {
  150.             Book newBook = new Book();
  151.             bool isWorking = true;
  152.  
  153.             while (isWorking)
  154.             {
  155.                 if (_library.Count == 0)
  156.                 {
  157.                     Console.WriteLine("Список пуст.");
  158.                     isWorking = false;
  159.                 }
  160.  
  161.                 Console.Write("Введите номер книги для удаления: ");
  162.                 int indexOfBook = newBook.CheckNumber() - 1;
  163.  
  164.                 if (indexOfBook >= _library.Count || indexOfBook < 0)
  165.                 {
  166.                     Console.WriteLine("Номер книги отсутствует. Попробуйте снова");
  167.                 }
  168.                 else
  169.                 {
  170.                     _library.RemoveAt(indexOfBook);
  171.                     isWorking = false;
  172.                 }
  173.             }
  174.         }
  175.     }
  176.  
  177.     class Book
  178.     {
  179.         public Book(string bookTitle = "", string authorName = "", int yearOfPublishing = 0)
  180.         {
  181.             BookTitle = bookTitle;
  182.             AuthorName = authorName;
  183.             YearOfPublishing = yearOfPublishing;
  184.         }
  185.  
  186.         public string BookTitle { get; private set; }
  187.         public string AuthorName { get; private set; }
  188.         public int YearOfPublishing { get; private set; }
  189.  
  190.         public void AddAuthorName()
  191.         {
  192.             bool isWork = true;
  193.             string userInput;
  194.  
  195.             while (isWork)
  196.             {
  197.                 userInput = Console.ReadLine();
  198.  
  199.                 if (string.IsNullOrWhiteSpace(userInput))
  200.                 {
  201.                     Console.WriteLine("Пустая строка. Введите имя авторав.");
  202.                     Console.ReadKey();
  203.                     Console.Clear();
  204.                 }
  205.                 else
  206.                 {
  207.                     AuthorName = userInput;
  208.                     isWork = false;
  209.                 }
  210.             }
  211.         }
  212.  
  213.         public void AddBookTitle()
  214.         {
  215.             bool isWork = true;
  216.             string userInput;
  217.  
  218.             while (isWork)
  219.             {
  220.                 userInput = Console.ReadLine();
  221.  
  222.                 if (string.IsNullOrWhiteSpace(userInput))
  223.                 {
  224.                     Console.WriteLine("Пустая строка. Введите имя название книги.");
  225.                     Console.ReadKey();
  226.                     Console.Clear();
  227.                 }
  228.                 else
  229.                 {
  230.                     BookTitle = userInput;
  231.                     isWork = false;
  232.                 }
  233.             }
  234.         }
  235.  
  236.         public void AddYearOfPublishing()
  237.         {
  238.             YearOfPublishing = CheckNumber();
  239.         }
  240.  
  241.         public int CheckNumber()
  242.         {
  243.             bool isWorking = true;
  244.             int number = 0;
  245.  
  246.             while (isWorking)
  247.             {
  248.                 bool isSucces = int.TryParse(Console.ReadLine(), out int result);
  249.  
  250.                 if (isSucces == false)
  251.                 {
  252.                     Console.WriteLine("Нужно ввести число.");
  253.                     Console.ReadKey();
  254.                 }
  255.                 else
  256.                 {
  257.                     number = result;
  258.                     isWorking = false;
  259.                 }
  260.             }
  261.  
  262.             return number;
  263.         }
  264.  
  265.         public string SelectNameOrTitle()
  266.         {
  267.             const string SelectNameCommand = "1";
  268.             const string SelectTitleCommand = "2";
  269.  
  270.             string result = "nothing";
  271.             string name = "name";
  272.             string title = "title";
  273.             string? userInput;
  274.  
  275.             while (result == "nothing")
  276.             {
  277.                 Console.WriteLine($"Введите: \n{SelectNameCommand} для поиска по имени автора" +
  278.                     $"\n{SelectTitleCommand} для поиска по названию книги\nВвод: ");
  279.  
  280.                 userInput = Console.ReadLine();
  281.  
  282.                 switch (userInput)
  283.                 {
  284.                     case SelectTitleCommand:
  285.                         result = title;
  286.                         break;
  287.  
  288.                     case SelectNameCommand:
  289.                         result = name;
  290.                         break;
  291.  
  292.                     default:
  293.                         Console.WriteLine("Введена неверная команда.");
  294.                         break;
  295.                 }
  296.  
  297.                 Console.ReadKey();
  298.                 Console.Clear();
  299.             }
  300.  
  301.             return result;
  302.         }
  303.     }
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement