Advertisement
LeRoY_Go

Untitled

May 23rd, 2022
735
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace C_Sharp_Junior
  5. {
  6.     class Program
  7.     {
  8.         static void Main()
  9.         {
  10.             Storage storage = new Storage();
  11.             bool isExit = false;
  12.  
  13.             while (isExit == false)
  14.             {
  15.                 Console.Write("1 - Создать книгу\n2 - Удалить книгу\n3 - Показать все книги\n4 - Поиск книг по параметрам\n5 - Закрыть программу\nВаш выбор:");
  16.                 bool successfulConversion = int.TryParse(Console.ReadLine(), out int userInput);
  17.                 Console.Clear();
  18.                 if (successfulConversion)
  19.                 {
  20.                     switch (userInput)
  21.                     {
  22.                         case 1:
  23.                             storage.CreateBook();
  24.                             break;
  25.                         case 2:
  26.                             storage.DeleteBook();
  27.                             break;
  28.                         case 3:
  29.                             storage.ShowBooks();
  30.                             break;
  31.                         case 4:
  32.                             storage.SearchBook();
  33.                             break;
  34.                         case 5:
  35.                             isExit = true;
  36.                             break;
  37.                     }
  38.                 }
  39.  
  40.                 Console.Write("Нажмите любую кнопку для возвращения в главное меню");
  41.                 Console.ReadKey();
  42.                 Console.Clear();
  43.             }
  44.         }
  45.     }
  46.  
  47.     class Storage
  48.     {
  49.         private List<Book> _books;
  50.  
  51.         public Storage()
  52.         {
  53.             _books = new List<Book> { new Book("Хулиномика", "Алексей Марков", 2017, 5), new Book("Самый богатый человек в Вавилоне", "Джордж Клейсон", 2012, 4), new Book("Теория игр", "Диксит Авинаш", 2022, 4) };
  54.         }
  55.  
  56.         public void ShowBooks()
  57.         {
  58.             for (int i = 0; i < _books.Count; i++)
  59.             {
  60.                 Console.Write($"№{i + 1} | ");
  61.                 _books[i].ShowInfo();
  62.             }
  63.         }
  64.  
  65.         private (string Title, string Author, int PublicationDate, int Rating) GenerateInfoAboutBook()
  66.         {
  67.             bool successfulConversionPublicationDate, successfulConversionRating;
  68.             string title, author;
  69.             int publicationDate, rating;
  70.  
  71.             do
  72.             {
  73.                 Console.Write("Введите название книги: ");
  74.                 title = Console.ReadLine();
  75.                 Console.Write("Введите автора книги: ");
  76.                 author = Console.ReadLine();
  77.                 Console.Write("Введите год издания книги: ");
  78.                 successfulConversionPublicationDate = int.TryParse(Console.ReadLine(), out publicationDate);
  79.                 Console.Write("Введите рейтинг книги от 0 до 5: ");
  80.                 successfulConversionRating = int.TryParse(Console.ReadLine(), out rating);
  81.  
  82.                 if (successfulConversionPublicationDate != true || successfulConversionRating != true)
  83.                 {
  84.                     Console.WriteLine("Ошибка. Повторите ещё раз.");
  85.                 }
  86.             } while (successfulConversionPublicationDate == false && successfulConversionRating == false);
  87.  
  88.             return (title, author, publicationDate, rating);
  89.         }
  90.  
  91.         public void CreateBook()
  92.         {
  93.             var book = GenerateInfoAboutBook();
  94.             _books.Add(new Book(book.Title, book.Author, book.PublicationDate, book.Rating));
  95.             Console.WriteLine("Книга созданна успешна");
  96.         }
  97.  
  98.         public void DeleteBook()
  99.         {
  100.             Range rangeAvailableBooks = 1.._books.Count;
  101.             int index;
  102.  
  103.             ShowBooks();
  104.             do
  105.             {
  106.                 Console.Write("Введите индекс книги: ");
  107.                 bool successfulConversionIndex = int.TryParse(Console.ReadLine(), out index);
  108.                 if (successfulConversionIndex && index >= rangeAvailableBooks.Start.Value && index <= rangeAvailableBooks.End.Value)
  109.                 {
  110.                     _books.RemoveAt(index - 1);
  111.                 }
  112.                 else
  113.                 {
  114.                     Console.WriteLine("Ошибка. Такого индекса нет.");
  115.                 }
  116.             } while (index < rangeAvailableBooks.Start.Value || index >= rangeAvailableBooks.End.Value);
  117.  
  118.             Console.WriteLine("Книга успешна удалена");
  119.         }
  120.  
  121.         public int SelectSearchParameter()
  122.         {
  123.             int number;
  124.             Range userSelectionRange = 1..5;
  125.  
  126.             do
  127.             {
  128.                 Console.Write("Выберете параметр поиска.\n1 - Название книги\n2 - Автор\n3 - Год издания\n4 - Рейтинг книги\n");
  129.                 Console.Write("Ваш Выбор: ");
  130.                 bool successfulConversionNumber = int.TryParse(Console.ReadLine(), out number);
  131.                 if (successfulConversionNumber == false)
  132.                 {
  133.                     Console.WriteLine("Ошибка. Неверный ввод.");
  134.                 }
  135.             } while (number < userSelectionRange.Start.Value || number >= userSelectionRange.End.Value);
  136.  
  137.             return number;
  138.         }
  139.  
  140.         public void SearchBook()
  141.         {
  142.             int numberParameter = SelectSearchParameter();
  143.             Console.Write("Введите значение по которому будет осуществляться поиск: ");
  144.             string userInput = Console.ReadLine();
  145.  
  146.             if (userInput != null)
  147.             {
  148.                 foreach (var book in _books)
  149.                 {
  150.                     switch (numberParameter)
  151.                     {
  152.                         case 1:
  153.                             if (book.Title.Contains(userInput))
  154.                                 book.ShowInfo();
  155.                             break;
  156.                         case 2:
  157.                             if (book.Author.Contains(userInput))
  158.                                 book.ShowInfo();
  159.                             break;
  160.                         case 3:
  161.                             if (book.PublicationDate.ToString().Contains(userInput))
  162.                                 book.ShowInfo();
  163.                             break;
  164.                         case 4:
  165.                             if (book.Rating.ToString().Contains(userInput))
  166.                                 book.ShowInfo();
  167.                             break;
  168.                     }
  169.                 }
  170.             }
  171.  
  172.         }
  173.     }
  174.  
  175.     class Book
  176.     {
  177.         public string Title { get; private set; }
  178.         public string Author { get; private set; }
  179.         public int PublicationDate { get; private set; }
  180.         public int Rating { get; private set; }
  181.  
  182.         public Book(string title, string author, int publicationDate = 0, int rating = 0)
  183.         {
  184.             Title = title;
  185.             Author = author;
  186.             var curryYear = new DateTime();
  187.  
  188.             if (publicationDate >= 0 && publicationDate <= curryYear.Year)
  189.             {
  190.                 PublicationDate = publicationDate;
  191.             }
  192.             PublicationDate = curryYear.Year;
  193.  
  194.             int minRating = 0;
  195.             int maxRating = 5;
  196.             if (rating >= minRating && rating <= maxRating)
  197.             {
  198.                 Rating = rating;
  199.             }
  200.         }
  201.  
  202.         public void ShowInfo()
  203.         {
  204.             Console.WriteLine("Название: {0} | Автор: {1} | Год издания: {2} | Рейтинг: {3}", Title, Author, PublicationDate, Rating);
  205.         }
  206.     }
  207. }
Advertisement
RAW Paste Data Copied
Advertisement