W1thr

ООП-12

Jun 8th, 2022 (edited)
577
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.40 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace Homework12
  6. {
  7.     internal class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             List<Book> books = new List<Book>
  12.             {
  13.                 new Book("Title1", "Author1", 2005),
  14.                 new Book("Title2", "Author1", 2009),
  15.                 new Book("Title3", "Author2", 2013),
  16.                 new Book("Title4", "Author2", 1998),
  17.             };
  18.  
  19.             Storage storage = new Storage(books);
  20.             string userInput = null;
  21.  
  22.             bool isActive = true;
  23.             while (isActive)
  24.             {
  25.                 ChooseOption(userInput, storage, ref isActive);
  26.                 Console.ReadKey();
  27.                 Console.Clear();
  28.             }
  29.         }
  30.  
  31.         private static void ChooseOption(string input, Storage storage, ref bool isActive)
  32.         {
  33.             Console.WriteLine("Добавить книгу\n" +
  34.                               "Убрать книгу\n" +
  35.                               "Показать все книги\n" +
  36.                               "Показать книги по указанному параметру\n" +
  37.                               "Выход");
  38.  
  39.             input = Console.ReadLine();
  40.  
  41.             switch (input)
  42.             {
  43.                 case "Добавить книгу":
  44.                     storage.AddBook();
  45.                     break;
  46.                 case "Убрать книгу":
  47.                     storage.RemoveBook();
  48.                     break;
  49.                 case "Показать все книги":
  50.                     storage.ShowBooks();
  51.                     break;
  52.                 case "Показать книги по указанному параметру":
  53.                     storage.ShowBooks(storage.SortBooks());
  54.                     break;
  55.                 case "Выход":
  56.                     isActive = false;
  57.                     break;
  58.                 default:
  59.                     throw new NullReferenceException();
  60.             }
  61.         }
  62.     }
  63.  
  64.     class Book
  65.     {
  66.         public string Title { get; private set; }
  67.         public string Author { get; private set; }
  68.         public int ReleaseDate { get; private set; }
  69.  
  70.         public Book(string title, string author, int releasaeDate)
  71.         {
  72.             Title = title;
  73.             Author = author;
  74.             ReleaseDate = releasaeDate;
  75.         }
  76.  
  77.         public void ShowInfo()
  78.         {
  79.             Console.WriteLine($"|Название: {Title}|Автор: {Author}|Год выпуска: {ReleaseDate}|");
  80.         }
  81.     }
  82.  
  83.     class Storage
  84.     {
  85.         private List<Book> _books;
  86.  
  87.         public Storage(List<Book> books = null)
  88.         {
  89.             _books = books;
  90.         }
  91.  
  92.         public void AddBook()
  93.         {
  94.             string userTitle;
  95.             string userAuthor;
  96.             int userReleaseDate;
  97.  
  98.             Console.WriteLine("Введите название:");
  99.             userTitle = Console.ReadLine();
  100.             Console.WriteLine("Введите автора:");
  101.             userAuthor = Console.ReadLine();
  102.             Console.WriteLine("Введи год выпуска:");
  103.             userReleaseDate = int.Parse(Console.ReadLine());
  104.             Console.WriteLine("Новая книга добавлена!\n" +
  105.                               $"|Название: {userTitle}|Автор: {userAuthor}|Год выпуска: {userReleaseDate}|");
  106.  
  107.             _books.Add(new Book(userTitle, userAuthor, userReleaseDate));
  108.         }
  109.  
  110.         public void RemoveBook()
  111.         {
  112.             ShowBooks();
  113.  
  114.             Console.Write("Номер книги, которую нужно убрать:");
  115.             int number = int.Parse(Console.ReadLine());
  116.  
  117.             if (number >= 0 && number < _books.Count)
  118.                 _books.RemoveAt(number);
  119.             else
  120.                 throw new ArgumentOutOfRangeException();
  121.         }
  122.  
  123.         public void ShowBooks()
  124.         {
  125.             if (_books != null)
  126.                 foreach (var book in _books)
  127.                     book.ShowInfo();
  128.             else
  129.                 throw new NullReferenceException();
  130.         }
  131.  
  132.         public void ShowBooks(List<Book> books)
  133.         {
  134.             if (books != null)
  135.                 foreach (var book in books)
  136.                     book.ShowInfo();
  137.             else
  138.                 throw new NullReferenceException();
  139.         }
  140.  
  141.         public List<Book> SortBooks()
  142.         {
  143.             if (_books == null)
  144.                 throw new NullReferenceException();
  145.  
  146.             Console.WriteLine("По какому параметру сортировать?");
  147.             string input = Console.ReadLine();
  148.  
  149.             switch (input)
  150.             {
  151.                 case "по названию":
  152.                     return _books.Where(book => book.Title == Console.ReadLine()).OrderBy(book => book.Title).ToList();
  153.                 case "по автору":
  154.                     return _books.Where(book => book.Author == Console.ReadLine()).OrderBy(book => book.Author).ToList();
  155.                 case "по году выпуска":
  156.                     return _books.Where(book => book.ReleaseDate == int.Parse(Console.ReadLine())).OrderBy(book => book.ReleaseDate).ToList();
  157.                 default:
  158.                     return null;
  159.             }
  160.         }
  161.     }
  162. }
  163.  
Add Comment
Please, Sign In to add comment