IGRODELOFF

Task42

Jul 22nd, 2022 (edited)
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.80 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 Task42
  8. {
  9.     internal class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int index;
  14.             Library library = new Library(out index);
  15.  
  16.             bool isExit = false;
  17.  
  18.             string menu =
  19.                 "Add ----- добавить книгу \n" +
  20.                 "Delete -- убрать книгу из хранилища по указанному параметру \n" +
  21.                 "ShowAll - показать все книхи в хранилище \n" +
  22.                 "Show ---- показать книгу по указанному параметру \n" +
  23.                 "Exit ---- выйти из программы \n" +
  24.                 "============================================================";
  25.             string noSearchCommand =
  26.                 "Вы ввели команду которой нет, проверьте правильность написания и соответсвтвия. Попробуйте снова. ";
  27.             string requestInputKey =
  28.                 "Ведите любой символ для продолжение или просто нажмите Enter. ";
  29.             string goodbye =
  30.                 "До свидания! ";
  31.             string userInput;
  32.  
  33.             while (isExit == false)
  34.             {
  35.                 Console.Clear();
  36.                 Console.WriteLine(menu);
  37.                 userInput = Console.ReadLine();
  38.  
  39.                 switch (userInput)
  40.                 {
  41.                     case "Add":
  42.                         library.Add(ref index);
  43.                         break;
  44.                     case "Delete":
  45.                         library.Delete();
  46.                         break;
  47.                     case "ShowAll":
  48.                         library.ShowAll();
  49.                         break;
  50.                     case "Show":
  51.                         library.Show();
  52.                         break;
  53.                     case "Exit":
  54.                         isExit = true;
  55.                         break;
  56.                     default:
  57.                         Console.WriteLine(noSearchCommand);
  58.                         break;
  59.                 }
  60.  
  61.                 Console.WriteLine(requestInputKey);
  62.                 Console.ReadKey();
  63.             }
  64.  
  65.             Console.WriteLine(goodbye);
  66.         }
  67.     }
  68.  
  69.     class Book
  70.     {
  71.         public int Index { get; private set; }
  72.         public string Title { get; private set; }
  73.         public string Author { get; private set; }
  74.         public int DateCreate { get; private set; }
  75.         public string Genre { get; private set; }
  76.  
  77.         public Book(int index,string title, string author, int dateCreate, string genre)
  78.         {
  79.             Index = index;
  80.             Title = title;
  81.             Author = author;
  82.             DateCreate = dateCreate;
  83.             Genre = genre;
  84.         }
  85.     }
  86.  
  87.     class Library
  88.     {
  89.         private List<Book> _books = new List<Book>();
  90.         private List<Book> _searchBook = new List<Book>();
  91.  
  92.  
  93.         public Library(out int index)
  94.         {
  95.             index = 1;
  96.  
  97.             _books.Add(new Book(index,"Нечто", "Ч.Т. Кто-тович", 1986, "Нонфикшн"));
  98.             index++;
  99.             _books.Add(new Book(index, "Дерево", "О.Б. Толстый", 1862, "Дама"));
  100.             index++;
  101.             _books.Add(new Book(index, "Физика космоса", "З.А. Умный", 2010, "Научная литература"));
  102.             index++;
  103.             _books.Add(new Book(index, "Поезд в сибирь", "О.Б. Толстый", 1870, "Роман"));
  104.             index++;
  105.             _books.Add(new Book(index, "Поезд в сибирь", "Р.В. Солежиницын", 1972, "Драма"));
  106.             index++;
  107.             _books.Add(new Book(index, "Быстро заработай, заработай быстро", "Л.О. Харин", 2020, "Бизнес"));
  108.             index++;
  109.         }
  110.         public void Add(ref int index)
  111.         {
  112.             string requestTitleBook =
  113.                 "Введите название книги: ";
  114.             string requestAuthorBook =
  115.                 "Введите автора книги: ";
  116.             string requestDateCreateBook =
  117.                 "Введите год создания книги: ";
  118.             string requestGenreBook =
  119.                 "Введите жанр книги: ";
  120.             string succesAddBook =
  121.                 "Книга успешно добавлена. ";
  122.             string title;
  123.             string author;
  124.             string genre;
  125.  
  126.             int yearCreate;
  127.  
  128.             Console.Write(requestTitleBook);
  129.             title = Console.ReadLine();
  130.  
  131.             Console.Write(requestAuthorBook);
  132.             author = Console.ReadLine();
  133.  
  134.             yearCreate = GetInt(requestDateCreateBook);
  135.  
  136.             Console.Write(requestGenreBook);
  137.             genre = Console.ReadLine();
  138.  
  139.             _books.Add(new Book(index, title, author, yearCreate, genre));
  140.             index++;
  141.             Console.WriteLine(succesAddBook);
  142.         }
  143.  
  144.         public void Delete()
  145.         {
  146.             string requestIndexBook =
  147.                 "Введи номер книги, которую хотите удалить: ";
  148.             string succesDelete =
  149.                 "Книга удалена. ";
  150.             string errorIndexBook =
  151.                 "Книги под данным номером не существует. ";
  152.  
  153.             int indexBook;
  154.  
  155.             indexBook = GetInt(requestIndexBook);
  156.             indexBook--;
  157.  
  158.             if (indexBook <= _books.Count)
  159.             {
  160.                 _books.RemoveAt(indexBook);
  161.                 Console.WriteLine(succesDelete);
  162.             }
  163.             else
  164.             {
  165.                 Console.WriteLine(errorIndexBook);
  166.             }
  167.         }
  168.  
  169.         public void Show()
  170.         {
  171.             string requestParameter =
  172.                 "Введите параметр: \n" +
  173.                 "Название --- поиск по названию \n" +
  174.                 "Автор ------ поиск по автору \n" +
  175.                 "Год -------- поиск по году создания \n" +
  176.                 "Жанр ------- поиск по жанру \n" +
  177.                 "Стоп ------- выйти из поиска \n" +
  178.                 "======================================";
  179.             string noSearchCommand =
  180.                 "Вы ввели команду которой нет, проверьте правильность написания и соответсвтвия. Попробуйте снова. ";
  181.             string requestInputKey =
  182.                 "Ведите любой символ для продолжение или просто нажмите Enter. ";
  183.             string userInput;
  184.  
  185.             bool isActive = true;
  186.  
  187.             while (isActive == true)
  188.             {
  189.                 Console.Clear();
  190.                 Console.WriteLine(requestParameter);
  191.                 userInput = Console.ReadLine();
  192.  
  193.                 switch (userInput)
  194.                 {
  195.                     case "Название":
  196.                         SearchToTitle();
  197.                         break;
  198.                     case "Автор":
  199.                         SearchToAuthor();
  200.                         break;
  201.                     case "Год":
  202.                         SearchToDateCreateBook();
  203.                         break;
  204.                     case "Жанр":
  205.                         SearchToGenreBook();
  206.                         break;
  207.                     case "Стоп":
  208.                         isActive = false;
  209.                         break;
  210.                     default:
  211.                         Console.WriteLine(noSearchCommand);
  212.                         break;
  213.                 }
  214.  
  215.                 Console.WriteLine(requestInputKey);
  216.                 Console.ReadKey();
  217.             }
  218.         }
  219.        
  220.         public void ShowAll()
  221.         {
  222.             for (int i = 0; i < _books.Count; i++)
  223.             {
  224.                 Console.WriteLine(
  225.                     $"=======================================\n" +
  226.                     $"номер -------- {_books[i].Index} \n" +
  227.                     $"название ----- {_books[i].Title} \n " +
  228.                     $"автор -------- {_books[i].Author} \n" +
  229.                     $"год создания - {_books[i].DateCreate} \n" +
  230.                     $"жанр --------- {_books[i].Genre} \n" +
  231.                     $"=======================================");
  232.             }
  233.         }
  234.  
  235.         private int GetInt(string requestInputNumber)
  236.         {
  237.             string errorConversion = "Ошибка,вы вели не цифры! Попробуйте снова.";
  238.             string userInput;
  239.  
  240.             bool resultConverted = false;
  241.  
  242.             int number = 0;
  243.  
  244.             while (resultConverted == false)
  245.             {
  246.                 Console.Write(requestInputNumber);
  247.                 userInput = Console.ReadLine();
  248.  
  249.                 resultConverted = int.TryParse(userInput, out int numberConvert);
  250.  
  251.                 if (resultConverted != true)
  252.                     Console.WriteLine(errorConversion);
  253.                 else
  254.                     number = numberConvert;
  255.             }
  256.             return number;
  257.         }
  258.  
  259.         private void ShowSearch()
  260.         {
  261.             string searchBook =
  262.                 "Найденные книги: ";
  263.             string errorSearchBook =
  264.                 "Книги не обнаружено. ";
  265.  
  266.             if (TryToSearch())
  267.             {
  268.                 Console.WriteLine(searchBook);
  269.  
  270.                 for (int i = 0; i < _searchBook.Count; i++)
  271.                 {
  272.                     Console.WriteLine(
  273.                         $"=======================================\n" +
  274.                         $"номер -------- {_searchBook[i].Index} \n" +
  275.                         $"название ----- {_searchBook[i].Title} \n " +
  276.                         $"автор -------- {_searchBook[i].Author} \n" +
  277.                         $"год создания - {_searchBook[i].DateCreate} \n" +
  278.                         $"жанр --------- {_searchBook[i].Genre} \n" +
  279.                         $"=======================================");
  280.                 }
  281.             }
  282.             else
  283.             {
  284.                 Console.WriteLine(errorSearchBook);
  285.             }
  286.         }
  287.  
  288.         private bool TryToSearch()
  289.         {
  290.             if (_searchBook.Count == 0)
  291.                 return false;
  292.             else
  293.                 return true;
  294.         }
  295.  
  296.         private void SearchToTitle()
  297.         {
  298.             string title;
  299.             string requestTitleBook =
  300.                 "Введите название книги: ";
  301.  
  302.             Console.Write(requestTitleBook);
  303.             title = Console.ReadLine();
  304.  
  305.             foreach (var book in _books)
  306.             {
  307.                 if (book.Title.ToLower() == title.ToLower())
  308.                 {
  309.                     _searchBook.Add(book);
  310.                 }
  311.             }
  312.  
  313.             ShowSearch();
  314.         }
  315.  
  316.         private void SearchToAuthor()
  317.         {
  318.             string author;
  319.             string requestAuthorBook =
  320.                 "Введите автора книги: ";
  321.  
  322.             Console.Write(requestAuthorBook);
  323.             author = Console.ReadLine();
  324.  
  325.             foreach (var book in _books)
  326.             {
  327.                 if (book.Author.ToLower() == author.ToLower())
  328.                 {
  329.                     _searchBook.Add(book);
  330.                 }
  331.             }
  332.  
  333.             ShowSearch();
  334.         }
  335.  
  336.         private void SearchToDateCreateBook()
  337.         {
  338.             int date;
  339.  
  340.             string requestDateBook =
  341.                 "Введите дату создания книги: ";
  342.  
  343.             date = GetInt(requestDateBook);
  344.  
  345.             foreach (var book in _books)
  346.             {
  347.                 if (book.DateCreate == date)
  348.                 {
  349.                     _searchBook.Add(book);
  350.                 }
  351.             }
  352.  
  353.             ShowSearch();
  354.         }
  355.  
  356.         private void SearchToGenreBook()
  357.         {
  358.             string genre;
  359.             string requestGenreBook =
  360.                 "Введите жанр книги: ";
  361.  
  362.             Console.Write(requestGenreBook);
  363.             genre = Console.ReadLine();
  364.  
  365.             foreach (var book in _books)
  366.             {
  367.                 if (book.Genre.ToLower() == genre.ToLower())
  368.                 {
  369.                     _searchBook.Add(book);
  370.                 }
  371.             }
  372.  
  373.             ShowSearch();
  374.         }
  375.     }
  376. }
  377.  
Add Comment
Please, Sign In to add comment