Dr_Max_Experience

Task 5

Mar 27th, 2022 (edited)
1,088
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.99 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ООП
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             bool isOpen = true;
  14.             string userInput;
  15.  
  16.             Repository repository = new Repository(new List<Book>());
  17.  
  18.             while (isOpen)
  19.             {
  20.                 Console.Write("Добро пожаловать в хранилище книг!\n\n1. Добавить книгу\n2. Удалить книгу\n3. Показать все книги\n\nПоказать книги сортированые по:" +
  21.                     "\n4. Названию\n5. Автору\n6. Году выпуска\n7. Количеству страниц\n\n8. Выход\n\nВведите номер действия: ");
  22.  
  23.                 userInput = Console.ReadLine();
  24.  
  25.                 switch (userInput)
  26.                 {
  27.                     case "1":
  28.                         repository.AddBook();
  29.                         break;
  30.  
  31.                     case "2":
  32.                         repository.DeleteBook();
  33.                         break;
  34.  
  35.                     case "3":
  36.                         repository.ShowBooks();
  37.                         break;
  38.  
  39.                     case "4":
  40.                         repository.ShowBooksSortingByName();
  41.                         break;
  42.  
  43.                     case "5":
  44.                         repository.ShowBooksSortingByAuthor();
  45.                         break;
  46.  
  47.                     case "6":
  48.                         repository.ShowBooksSortingByYear();
  49.                         break;
  50.  
  51.                     case "7":
  52.                         repository.ShowBooksSortingByPages();
  53.                         break;
  54.  
  55.                     case "8":
  56.                         Console.WriteLine("Все книги будут удалены!\nДо свидания!");
  57.                         isOpen = false;
  58.                         break;
  59.  
  60.                     default:
  61.                         Console.WriteLine("Такого действия нет!");
  62.                         break;
  63.                 }
  64.  
  65.                 Console.ReadKey();
  66.                 Console.Clear();
  67.             }
  68.         }
  69.     }
  70.  
  71.     class Repository
  72.     {
  73.         private List<Book> _repository;
  74.  
  75.         public Repository(List<Book> repository)
  76.         {
  77.             _repository = repository;
  78.         }
  79.  
  80.         public void AddBook()
  81.         {
  82.             Console.Write("Введите название книги: ");
  83.             string name = Console.ReadLine();
  84.  
  85.             Console.Write("Введите автора книги: ");
  86.             string author = Console.ReadLine();
  87.  
  88.             Console.Write("Введите год выпуска книги: ");
  89.             int year = CorrectIntInput();
  90.  
  91.             Console.Write("Введите количество страниц: ");
  92.             int pages = CorrectIntInput();
  93.  
  94.             _repository.Add(new Book(name, author, year, pages));
  95.             Console.Write("Книга успешно добавлена!");
  96.         }
  97.  
  98.         public void DeleteBook()
  99.         {
  100.             bool correctImput = false;
  101.  
  102.             ShowBooks();
  103.  
  104.             while (correctImput == false)
  105.             {
  106.                 Console.Write("Введите номер книги, которую необходимо удалить (введите 0 для отмены): ");
  107.                 string userInput = Console.ReadLine();
  108.  
  109.                 correctImput = int.TryParse(userInput, out int correctNumber);
  110.  
  111.                 if (correctNumber == 0)
  112.                 {
  113.                     Console.Write("Отмена действия!");
  114.                     break;
  115.                 }
  116.  
  117.                 if (correctNumber > 0 && correctNumber <= _repository.Count)
  118.                 {
  119.                     int number = correctNumber;
  120.                     _repository.RemoveAt(number - 1);
  121.                     Console.Write($"Вы успешно удалили книгу под номером {number}");
  122.                 }
  123.                 else
  124.                 {
  125.                     Console.WriteLine("Некорректный ввод! Повторите попытку.");
  126.                     correctImput = false;
  127.                 }
  128.             }
  129.         }
  130.  
  131.         public void ShowBooks()
  132.         {
  133.             int bookNumber = 0;
  134.  
  135.             foreach (var book in _repository)
  136.             {
  137.                 Console.Write($"#{++bookNumber} | ");
  138.                 book.ShowBook();
  139.             }
  140.         }
  141.  
  142.         public void ShowBooksSortingByName()
  143.         {
  144.             var sortedRepository = _repository.OrderBy(book => book.Name).ToList();
  145.  
  146.             ShowSortedBooks(sortedRepository);
  147.         }
  148.  
  149.         public void ShowBooksSortingByAuthor()
  150.         {
  151.             var sortedRepository = _repository.OrderBy(book => book.Author).ToList();
  152.  
  153.             ShowSortedBooks(sortedRepository);
  154.         }
  155.  
  156.         public void ShowBooksSortingByYear()
  157.         {
  158.             var sortedRepository = _repository.OrderBy(book => book.Year).ToList();
  159.  
  160.             ShowSortedBooks(sortedRepository);
  161.         }
  162.  
  163.         public void ShowBooksSortingByPages()
  164.         {
  165.             var sortedRepository = _repository.OrderBy(book => book.Pages).ToList();
  166.  
  167.             ShowSortedBooks(sortedRepository);
  168.         }
  169.  
  170.         private int CorrectIntInput()
  171.         {
  172.             bool correctImput = false;
  173.  
  174.             while (correctImput == false)
  175.             {
  176.                 string userInput = Console.ReadLine();
  177.                 correctImput = int.TryParse(userInput, out int correctInt);
  178.  
  179.                 if (correctImput && correctInt > 0)
  180.                 {
  181.                     return correctInt;
  182.                 }
  183.                 else
  184.                 {
  185.                     Console.Write("Некорректный ввод! повторите попытку: ");
  186.                     correctImput = false;
  187.                 }
  188.             }
  189.  
  190.             return 0;
  191.         }
  192.  
  193.         private void ShowSortedBooks(List<Book> sortedRepository)
  194.         {
  195.             foreach (var book in sortedRepository)
  196.             {
  197.                 int bookNumber = 0;
  198.  
  199.                 Console.Write($"#{++bookNumber} | ");
  200.                 book.ShowBook();
  201.             }
  202.         }
  203.     }
  204.  
  205.     class Book
  206.     {
  207.         public string Name { get; private set; }
  208.         public string Author { get; private set; }
  209.         public int Year { get; private set; }
  210.         public int Pages { get; private set; }
  211.  
  212.         public Book(string name, string author, int year, int pages)
  213.         {
  214.             Name = name;
  215.             Author = author;
  216.             Year = year;
  217.             Pages = pages;
  218.         }
  219.  
  220.         public void ShowBook()
  221.         {
  222.             Console.WriteLine($"Название: {Name} | Автор: {Author} | Год выпуска: {Year} | Кол-во страниц: {Pages}");
  223.         }
  224.     }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment