Advertisement
VodVas

Хранилище книг

Oct 22nd, 2023 (edited)
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.08 KB | None | 0 0
  1. namespace Хранилище_книг
  2. {
  3. internal class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. Storage bookStorage = new Storage();
  8.  
  9. bookStorage.Work();
  10. }
  11. }
  12.  
  13. class Storage
  14. {
  15. private int _lastIndex = 0;
  16.  
  17. private List<Book> _books = new List<Book>();
  18.  
  19. public void Work()
  20. {
  21. const string AddBookMenu = "1";
  22. const string RemoveBookMenu = "2";
  23. const string ShowAllBooksMenu = "3";
  24. const string SearchBookOnTitleMenu = "4";
  25. const string SearchBookOnAuthorMenu = "5";
  26. const string SearchBookOnGenreMenu = "6";
  27. const string SearchBookOnReleaseYearMenu = "7";
  28. const string ExitMenu = "8";
  29.  
  30. bool isRun = true;
  31.  
  32. while (isRun)
  33. {
  34. Console.WriteLine($"\nХранилище книг: \n\nДоступные команды:\nДобавить книгу - {AddBookMenu}\nУдалить книгу - {RemoveBookMenu}\nПоказать все книги - {ShowAllBooksMenu}\nНайти книгу по названию - {SearchBookOnTitleMenu}\nНайти книгу по автору - {SearchBookOnAuthorMenu}\nНайти книгу по жанру - {SearchBookOnGenreMenu}\nНайти книгу по году выпуска - {SearchBookOnReleaseYearMenu}\nВыход из программы - {ExitMenu}\n");
  35.  
  36. string userInput = Console.ReadLine();
  37.  
  38. switch (userInput)
  39. {
  40. case AddBookMenu:
  41. AddBook();
  42. break;
  43.  
  44. case RemoveBookMenu:
  45. RemoveBook();
  46. break;
  47.  
  48. case ShowAllBooksMenu:
  49. ShowAllBooks();
  50. break;
  51.  
  52. case SearchBookOnTitleMenu:
  53. SearchBookByTitle();
  54. break;
  55.  
  56. case SearchBookOnAuthorMenu:
  57. SearchBookByAuthor();
  58. break;
  59.  
  60. case SearchBookOnGenreMenu:
  61. SearchBookByGenre();
  62. break;
  63.  
  64. case SearchBookOnReleaseYearMenu:
  65. SearchBookByReleaseYear();
  66. break;
  67.  
  68. case ExitMenu:
  69. isRun = false;
  70. break;
  71.  
  72. default:
  73. Console.WriteLine("\nНет такой команды");
  74. break;
  75. }
  76. }
  77. }
  78.  
  79. private void RemoveBook()
  80. {
  81. if (_books.Count == 0)
  82. {
  83. Console.WriteLine("\nНа полке нет книг");
  84.  
  85. return;
  86. }
  87.  
  88. int indexOfBook = ReturnValidateInputNumber("\nВведите индекс книги, которую хотите удалить:");
  89.  
  90. if (indexOfBook >= 0 && indexOfBook < _books.Count)
  91. {
  92. _books.RemoveAt(indexOfBook);
  93.  
  94. Console.WriteLine($"\nКнига c индексом {indexOfBook} удалена");
  95.  
  96. return;
  97. }
  98. else
  99. {
  100. Console.WriteLine("\nВведите корректный номер");
  101.  
  102. return;
  103. }
  104. }
  105.  
  106. private void ShowAllBooks()
  107. {
  108. if (_books.Count > 0)
  109. {
  110. foreach (var book in _books)
  111. {
  112. book.ShowBookInfo();
  113. }
  114. }
  115. else if (_books.Count == 0)
  116. {
  117. Console.WriteLine("\nВ хранилище пока нет книг");
  118. }
  119. }
  120.  
  121. private void AddBook()
  122. {
  123. Console.WriteLine("\nВведите название, автора, жанр и год выпуска");
  124.  
  125. Console.WriteLine("Название: ");
  126. string title = Console.ReadLine();
  127.  
  128. Console.WriteLine("Автор: ");
  129. string author = Console.ReadLine();
  130.  
  131. Console.WriteLine("Жанр: ");
  132. string genre = Console.ReadLine();
  133.  
  134. int releaseYear = ReturnValidateInputNumber("Год выпуска: ");
  135.  
  136. _books.Add(new Book(_lastIndex, title, author, genre, releaseYear));
  137.  
  138. _lastIndex++;
  139. }
  140.  
  141. private void SearchBookByTitle()
  142. {
  143. if (_books.Count > 0)
  144. {
  145. Console.WriteLine("\nВведите название книги:");
  146.  
  147. string userInput = Console.ReadLine();
  148.  
  149. foreach (Book book in _books)
  150. {
  151. if (book.Title.ToLower() == userInput.ToLower())
  152. {
  153. book.ShowBookInfo();
  154. }
  155. else
  156. {
  157. Console.WriteLine("\nКнига не найдена");
  158.  
  159. break;
  160. }
  161. }
  162. }
  163. else
  164. {
  165. Console.WriteLine("\nВ хранилище пока нет книг");
  166. }
  167. }
  168.  
  169. private void SearchBookByAuthor()
  170. {
  171. if (_books.Count > 0)
  172. {
  173. Console.WriteLine("\nВведите автора книги: ");
  174.  
  175. string userInput = Console.ReadLine();
  176.  
  177. foreach (Book book in _books)
  178. {
  179. if (book.Author.ToLower() == userInput.ToLower())
  180. {
  181. book.ShowBookInfo();
  182. }
  183. else
  184. {
  185. Console.WriteLine("\nКнига не найдена");
  186.  
  187. break;
  188. }
  189. }
  190. }
  191. else
  192. {
  193. Console.WriteLine("\nВ хранилище пока нет книг");
  194. }
  195. }
  196.  
  197. private void SearchBookByReleaseYear()
  198. {
  199. if (_books.Count > 0)
  200. {
  201. Console.WriteLine("\nВведите год выпуска книги: ");
  202.  
  203. string userInput = Console.ReadLine();
  204.  
  205. foreach (Book book in _books)
  206. {
  207. if (userInput == book.ReleaseYear.ToString())
  208. {
  209. book.ShowBookInfo();
  210. }
  211. else
  212. {
  213. Console.WriteLine("\nКнига не найдена");
  214.  
  215. break;
  216. }
  217. }
  218. }
  219. else
  220. {
  221. Console.WriteLine("\nВ хранилище пока нет книг");
  222. }
  223. }
  224.  
  225. private void SearchBookByGenre()
  226. {
  227. if (_books.Count > 0)
  228. {
  229. Console.WriteLine("\nВведите жанр книги: ");
  230.  
  231. string userInput = Console.ReadLine();
  232.  
  233. foreach (Book book in _books)
  234. {
  235. if (book.Genre.ToLower() == userInput.ToLower())
  236. {
  237. book.ShowBookInfo();
  238. }
  239. else
  240. {
  241. Console.WriteLine("\nКнига не найдена");
  242.  
  243. break;
  244. }
  245. }
  246. }
  247. else
  248. {
  249. Console.WriteLine("\nВ хранилище пока нет книг");
  250. }
  251. }
  252.  
  253. private int ReturnValidateInputNumber(string message)
  254. {
  255. Console.WriteLine(message + " ");
  256.  
  257. int id = 0;
  258.  
  259. while ((int.TryParse(Console.ReadLine(), out id)) == false)
  260. {
  261. Console.WriteLine("Введено не число, попробуйте еще раз: ");
  262. Console.WriteLine(message + " ");
  263. }
  264.  
  265. return id;
  266. }
  267. }
  268.  
  269. class Book
  270. {
  271. public Book(int index, string title, string author, string genre, int releaseYear)
  272. {
  273. Index = index;
  274. Title = title;
  275. Author = author;
  276. Genre = genre;
  277. ReleaseYear = releaseYear;
  278. }
  279.  
  280. public int Index { get; private set; }
  281. public string Title { get; private set; }
  282. public string Author { get; private set; }
  283. public string Genre { get; private set; }
  284. public int ReleaseYear { get; private set; }
  285.  
  286. public void ShowBookInfo()
  287. {
  288. Console.WriteLine($"Индекс книги: {Index} Название: {Title} Автор: {Author} Жанр: {Genre} Год выпуска: {ReleaseYear}");
  289. }
  290. }
  291. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement