Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ООП
- {
- class Program
- {
- static void Main(string[] args)
- {
- bool isOpen = true;
- string userInput;
- Repository repository = new Repository(new List<Book>());
- while (isOpen)
- {
- Console.Write("Добро пожаловать в хранилище книг!\n\n1. Добавить книгу\n2. Удалить книгу\n3. Показать все книги\n\nПоказать книги сортированые по:" +
- "\n4. Названию\n5. Автору\n6. Году выпуска\n7. Количеству страниц\n\n8. Выход\n\nВведите номер действия: ");
- userInput = Console.ReadLine();
- switch (userInput)
- {
- case "1":
- repository.AddBook();
- break;
- case "2":
- repository.DeleteBook();
- break;
- case "3":
- repository.ShowBooks();
- break;
- case "4":
- repository.ShowBooksSortingByName();
- break;
- case "5":
- repository.ShowBooksSortingByAuthor();
- break;
- case "6":
- repository.ShowBooksSortingByYear();
- break;
- case "7":
- repository.ShowBooksSortingByPages();
- break;
- case "8":
- Console.WriteLine("Все книги будут удалены!\nДо свидания!");
- isOpen = false;
- break;
- default:
- Console.WriteLine("Такого действия нет!");
- break;
- }
- Console.ReadKey();
- Console.Clear();
- }
- }
- }
- class Repository
- {
- private List<Book> _repository;
- public Repository(List<Book> repository)
- {
- _repository = repository;
- }
- public void AddBook()
- {
- Console.Write("Введите название книги: ");
- string name = Console.ReadLine();
- Console.Write("Введите автора книги: ");
- string author = Console.ReadLine();
- Console.Write("Введите год выпуска книги: ");
- int year = CorrectIntInput();
- Console.Write("Введите количество страниц: ");
- int pages = CorrectIntInput();
- _repository.Add(new Book(name, author, year, pages));
- Console.Write("Книга успешно добавлена!");
- }
- public void DeleteBook()
- {
- bool correctImput = false;
- ShowBooks();
- while (correctImput == false)
- {
- Console.Write("Введите номер книги, которую необходимо удалить (введите 0 для отмены): ");
- string userInput = Console.ReadLine();
- correctImput = int.TryParse(userInput, out int correctNumber);
- if (correctNumber == 0)
- {
- Console.Write("Отмена действия!");
- break;
- }
- if (correctNumber > 0 && correctNumber <= _repository.Count)
- {
- int number = correctNumber;
- _repository.RemoveAt(number - 1);
- Console.Write($"Вы успешно удалили книгу под номером {number}");
- }
- else
- {
- Console.WriteLine("Некорректный ввод! Повторите попытку.");
- correctImput = false;
- }
- }
- }
- public void ShowBooks()
- {
- int bookNumber = 0;
- foreach (var book in _repository)
- {
- Console.Write($"#{++bookNumber} | ");
- book.ShowBook();
- }
- }
- public void ShowBooksSortingByName()
- {
- var sortedRepository = _repository.OrderBy(book => book.Name).ToList();
- ShowSortedBooks(sortedRepository);
- }
- public void ShowBooksSortingByAuthor()
- {
- var sortedRepository = _repository.OrderBy(book => book.Author).ToList();
- ShowSortedBooks(sortedRepository);
- }
- public void ShowBooksSortingByYear()
- {
- var sortedRepository = _repository.OrderBy(book => book.Year).ToList();
- ShowSortedBooks(sortedRepository);
- }
- public void ShowBooksSortingByPages()
- {
- var sortedRepository = _repository.OrderBy(book => book.Pages).ToList();
- ShowSortedBooks(sortedRepository);
- }
- private int CorrectIntInput()
- {
- bool correctImput = false;
- while (correctImput == false)
- {
- string userInput = Console.ReadLine();
- correctImput = int.TryParse(userInput, out int correctInt);
- if (correctImput && correctInt > 0)
- {
- return correctInt;
- }
- else
- {
- Console.Write("Некорректный ввод! повторите попытку: ");
- correctImput = false;
- }
- }
- return 0;
- }
- private void ShowSortedBooks(List<Book> sortedRepository)
- {
- foreach (var book in sortedRepository)
- {
- int bookNumber = 0;
- Console.Write($"#{++bookNumber} | ");
- book.ShowBook();
- }
- }
- }
- class Book
- {
- public string Name { get; private set; }
- public string Author { get; private set; }
- public int Year { get; private set; }
- public int Pages { get; private set; }
- public Book(string name, string author, int year, int pages)
- {
- Name = name;
- Author = author;
- Year = year;
- Pages = pages;
- }
- public void ShowBook()
- {
- Console.WriteLine($"Название: {Name} | Автор: {Author} | Год выпуска: {Year} | Кол-во страниц: {Pages}");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment