Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- class Program
- {
- static void Main(string[] args)
- {
- Library library = new Library();
- library.Work();
- }
- }
- class Book
- {
- public Book(string title, string author, string years, long id)
- {
- Title = title;
- Author = author;
- Years = years;
- Id = id;
- }
- public string Title { get; private set; }
- public string Author { get; private set; }
- public string Years { get; private set; }
- public long Id { get; private set; }
- public void ShowInfo()
- {
- Console.WriteLine($"Название книги - {Title}, автор - {Author}, год издания - {Years}, уник. индиф. - {Id}");
- }
- }
- class Library
- {
- private const int FindBooksByTitleCommand = 1;
- private const int FindBooksByAuthorCommand = 2;
- private const int FindBooksByYearCommand = 3;
- private const int ReturnToPreviousMenuCommand = 9;
- private long _id;
- private List<Book> _books = new List<Book>();
- public Library()
- {
- _id = 0;
- _books = new List<Book>();
- Fill();
- }
- public void Work()
- {
- const int AddBookCommand = 1;
- const int DeleteBookCommand = 2;
- const int ShowAllBooksCommand = 3;
- const int SearchBookCommand = 4;
- const int ExitForProgramCommand = 9;
- string userInput;
- bool isCorrectInput;
- bool isWork = true;
- while (isWork)
- {
- Console.WriteLine("Библиотека. \nВведите команду:");
- Console.WriteLine($"{AddBookCommand} - Добавить книгу, \n{DeleteBookCommand} - Удалить книгу, \n{ShowAllBooksCommand} - Показать все книги, \n{SearchBookCommand} - Поиск книги, \n{ExitForProgramCommand} - Выход из программы.");
- userInput = Console.ReadLine();
- isCorrectInput = int.TryParse(userInput, out int selectMenu);
- if (isCorrectInput)
- {
- switch (selectMenu)
- {
- case AddBookCommand:
- AddBook();
- break;
- case DeleteBookCommand:
- DeleteBook();
- break;
- case ShowAllBooksCommand:
- ShowAllBooks();
- break;
- case SearchBookCommand:
- SearchBooks();
- break;
- case ExitForProgramCommand:
- isWork = false;
- break;
- default:
- Console.WriteLine($"\aМеню выбора {userInput} не существует!");
- break;
- }
- }
- else
- {
- Console.WriteLine($"\aНужно вводить число для выбора меню.");
- }
- Console.WriteLine("Нажмите любую клавишу для продолжения...");
- Console.ReadKey();
- Console.Clear();
- }
- }
- private void AddBook()
- {
- string userInputBookTitle;
- string userInputAuthor;
- string userInputYear;
- int thisYear = 2022;
- bool isYearCorrect;
- Console.WriteLine("Вы выбрали меню \"Добавить книгу\".");
- Console.Write("Введите имя новой книги: ");
- userInputBookTitle = Console.ReadLine();
- Console.Write("Введите автора новой книги: ");
- userInputAuthor = Console.ReadLine();
- Console.Write("Введите год издания новой книги: ");
- userInputYear = Console.ReadLine();
- isYearCorrect = int.TryParse(userInputYear, out int bookYear);
- if (userInputBookTitle != null)
- {
- if (userInputAuthor != null)
- {
- if (isYearCorrect && bookYear <= thisYear)
- {
- _books.Add(new Book(userInputBookTitle, userInputAuthor, userInputYear, GetId()));
- Console.WriteLine($"Книга {_books[_books.Count - 1].Title} успешно добавлена.");
- }
- else
- {
- Console.WriteLine($"\aГод издания книги введён не верно!");
- }
- }
- else
- {
- Console.WriteLine($"\aАвтор книги не может содержать пустую строку!");
- }
- }
- else
- {
- Console.WriteLine($"\aНазвание книги не может содержать пустую строку!");
- }
- }
- private void DeleteBook()
- {
- const int Yes = 1;
- const int No = 2;
- string userInput;
- Console.WriteLine("Вы выбрали меню \"Удалить книгу\".");
- Book book = SelectBook();
- if (book != null)
- {
- Console.Write($"\aВы действительно хотите безвозвратно удалить книгу \"{book.Title}\"? Это действие безвозвратно. {Yes} - Да, {No} - Нет: ");
- userInput = Console.ReadLine();
- int.TryParse(userInput, out int result);
- if (result != 0 && result == 1)
- {
- _books.Remove(book);
- Console.WriteLine("Выполнено успешно.");
- }
- else
- {
- Console.WriteLine($"Удаление игрока {book.Title} отменено.");
- }
- }
- }
- private void ShowAllBooks()
- {
- foreach (Book book in _books)
- {
- book.ShowInfo();
- }
- }
- private void SearchBooks()
- {
- GetBooks(out List<Book> foundBooks);
- if (foundBooks != null)
- {
- foreach (Book book in foundBooks)
- {
- book.ShowInfo();
- }
- }
- }
- private void GetBooks(out List<Book> foundBooks)
- {
- bool isFoundBook;
- string userInput;
- int selectOptionSearch = SelectOptionSearch();
- foundBooks = new List<Book>();
- if (selectOptionSearch != ReturnToPreviousMenuCommand)
- {
- Console.Write($"Введите искомое поле: ");
- userInput = Console.ReadLine();
- if (userInput != null)
- {
- switch (selectOptionSearch)
- {
- case FindBooksByTitleCommand:
- isFoundBook = GetBooksByTitle(foundBooks, userInput);
- break;
- case FindBooksByAuthorCommand:
- isFoundBook = GetBooksByAuthor(foundBooks, userInput);
- break;
- case FindBooksByYearCommand:
- isFoundBook = GetBooksByYear(foundBooks, userInput);
- break;
- default:
- Console.WriteLine("\aТакого типа поиска \"" + selectOptionSearch + "\" не найдено.");
- isFoundBook = false;
- break;
- }
- if (isFoundBook)
- {
- Console.WriteLine("Поиск завершён успешно.");
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("\aКниг/авторов/годов изданий \"" + userInput + "\" в библиотеке не найдено.");
- Console.ForegroundColor = ConsoleColor.White;
- }
- }
- else
- {
- Console.WriteLine($"\aИскомое поле не может быть пустым!");
- }
- }
- else
- {
- Console.WriteLine($"Возврат в предыдущее меню.");
- }
- }
- private int SelectOptionSearch()
- {
- string userInput;
- bool isCorrectInput;
- Console.Write("Выберите, по какому параметру ищем: ");
- Console.WriteLine($"\n{FindBooksByTitleCommand} - по наименовании книги, \n{FindBooksByAuthorCommand} - по автору, \n{FindBooksByYearCommand} - по году издания, \n{ReturnToPreviousMenuCommand} - Возврат в предыдущее меню. ");
- userInput = Console.ReadLine();
- isCorrectInput = int.TryParse(userInput, out int selectOption);
- return selectOption;
- }
- private long GetId()
- {
- _id++;
- return _id;
- }
- private Book SelectBook()
- {
- bool isFoundBook = false;
- Book book = null;
- string userInput;
- Console.Write("Введите уникальный идентификатор книги (число): ");
- userInput = Console.ReadLine();
- int.TryParse(userInput, out int id);
- for (int i = 0; i < _books.Count; i++)
- {
- if (id == _books[i].Id)
- {
- isFoundBook = true;
- book = _books[i];
- i = _books.Count;
- }
- }
- if (isFoundBook)
- {
- Console.WriteLine($"Операция завершена успешно.");
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("\aКниги с уникальным идентификатором" + id + " в библиотеке не найдено.");
- Console.ForegroundColor = ConsoleColor.White;
- }
- return book;
- }
- private bool GetBooksByTitle(List<Book> foundBooks, string userInput)
- {
- bool isFoundBook = false;
- foreach (Book book in _books)
- {
- if (book.Title.ToLower().Contains($"{userInput.ToLower()}"))
- {
- isFoundBook = true;
- foundBooks.Add(book);
- }
- }
- return isFoundBook;
- }
- private bool GetBooksByAuthor(List<Book> foundBooks, string userInput)
- {
- bool isFoundBook = false;
- foreach (Book book in _books)
- {
- if (book.Author.ToLower().Contains($"{userInput.ToLower()}"))
- {
- isFoundBook = true;
- foundBooks.Add(book);
- }
- }
- return isFoundBook;
- }
- private bool GetBooksByYear(List<Book> foundBooks, string userInput)
- {
- bool isFoundBook = false;
- foreach (Book book in _books)
- {
- if (book.Years.ToLower().Contains($"{userInput.ToLower()}"))
- {
- isFoundBook = true;
- foundBooks.Add(book);
- }
- }
- return isFoundBook;
- }
- private void Fill()
- {
- _books.Add(new Book("Агасфер", "Жуковский Василий Андреевич", "1852", GetId()));
- _books.Add(new Book("Адъютант его превосходительства", "Владимир Галактионович Короленко", "1884", GetId()));
- _books.Add(new Book("Алые паруса", "Александр Степанович Грин", "1923", GetId()));
- _books.Add(new Book("Анна Каренина", "Лев Николаевич Толстой", "1926", GetId()));
- _books.Add(new Book("Анна Снегина", "Сергей Александрович Есенин", "1925", GetId()));
- }
- }
- // Создать хранилище книг.
- // Каждая книга имеет название, автора и год выпуска (можно добавить еще параметры). В хранилище можно добавить книгу,
- // убрать книгу, показать все книги и показать книги по указанному параметру (по названию, по автору, по году выпуска).
- // Про указанный параметр, к примеру нужен конкретный автор, выбирается показ по авторам, запрашивается у пользователя
- // автор и показываются все книги с этим автором.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement