Осуществил с помощью того что я умею, сложного не использовал ибо еще не дошел до него . Тут 2 класса идут в двух разных .cs .
Единственные нюансы: 1) не осуществил год до нашей эры, т.е если год вводится -2 (2 до н.е) выводится 2.
2) запутанность жесткая, ибо использовал goto и много переменных разных. с моими текущими знаниями я не мог использовать что то попроще, возможно оптимизируете.
1 класс:
using System;
namespace HomeLibrary
{
class ListOfBooks
{
static string Author, Category, Name; static int Year;
public static bool Indicate, SecondIndicate, ThirdIndicate;
public static string SetAuthor
{
get
{
return Author;
}
set
{
if (string.IsNullOrWhiteSpace(value) || int.TryParse(value, out int WrongValue))
{
Indicate = true;
}
else
{
Author = value;
}
}
}
public static int SetYear
{
get
{
return Year;
}
set
{
if(value >= 0 && value <= 2022)
{
Year = value;
}
}
}
public static string SetCategory
{
get
{
return Category;
}
set
{
if (string.IsNullOrWhiteSpace(value) || int.TryParse(value, out int WrongValue))
{
SecondIndicate = true;
}
else
{
Category = value;
}
}
}
public static string SetName
{
get
{
return Name;
}
set
{
if (string.IsNullOrWhiteSpace(value) || int.TryParse(value, out int WrongValue))
{
ThirdIndicate = true;
}
else
{
Name = value;
}
}
}
}
}
2 класс.
using System;
using System.Collections.Generic;
namespace HomeLibrary
{
class Program
{
static void SecondMenue(int SecondChoise)
{
switch(SecondChoise)
{
case 2:
List<string> Books = new List<string>();
TryAgain4:
Console.WriteLine("Введите название книги.");
ListOfBooks.SetName = Console.ReadLine();
if (ListOfBooks.ThirdIndicate == true)
{
Console.WriteLine("Попробуйте ещё раз. Некорректное значение.");
Answers & Comments
Осуществил с помощью того что я умею, сложного не использовал ибо еще не дошел до него . Тут 2 класса идут в двух разных .cs .
Единственные нюансы: 1) не осуществил год до нашей эры, т.е если год вводится -2 (2 до н.е) выводится 2.
2) запутанность жесткая, ибо использовал goto и много переменных разных. с моими текущими знаниями я не мог использовать что то попроще, возможно оптимизируете.
1 класс:
using System;
namespace HomeLibrary
{
class ListOfBooks
{
static string Author, Category, Name; static int Year;
public static bool Indicate, SecondIndicate, ThirdIndicate;
public static string SetAuthor
{
get
{
return Author;
}
set
{
if (string.IsNullOrWhiteSpace(value) || int.TryParse(value, out int WrongValue))
{
Indicate = true;
}
else
{
Author = value;
}
}
}
public static int SetYear
{
get
{
return Year;
}
set
{
if(value >= 0 && value <= 2022)
{
Year = value;
}
}
}
public static string SetCategory
{
get
{
return Category;
}
set
{
if (string.IsNullOrWhiteSpace(value) || int.TryParse(value, out int WrongValue))
{
SecondIndicate = true;
}
else
{
Category = value;
}
}
}
public static string SetName
{
get
{
return Name;
}
set
{
if (string.IsNullOrWhiteSpace(value) || int.TryParse(value, out int WrongValue))
{
ThirdIndicate = true;
}
else
{
Name = value;
}
}
}
}
}
2 класс.
using System;
using System.Collections.Generic;
namespace HomeLibrary
{
class Program
{
static void SecondMenue(int SecondChoise)
{
switch(SecondChoise)
{
case 2:
List<string> Books = new List<string>();
TryAgain4:
Console.WriteLine("Введите название книги.");
ListOfBooks.SetName = Console.ReadLine();
if (ListOfBooks.ThirdIndicate == true)
{
Console.WriteLine("Попробуйте ещё раз. Некорректное значение.");
ListOfBooks.ThirdIndicate = false;
Console.ReadLine();
goto TryAgain4;
}
TryAgain:
Console.WriteLine("Введите имя/псевдоним автора.");
ListOfBooks.SetAuthor = Console.ReadLine();
if ( ListOfBooks.Indicate == true)
{
Console.WriteLine("Попробуйте ещё раз. Некорректное значение.");
ListOfBooks.Indicate = false;
Console.ReadLine();
goto TryAgain;
}
TryAgain2:
string YearString;
Console.WriteLine("Введите год выпуска книги.");
YearString = Console.ReadLine();
if (!(int.TryParse(YearString, out int Year)))
{
Console.WriteLine("Попробуйте ещё раз. Некорректное значение.");
Console.ReadLine();
goto TryAgain2;
}
ListOfBooks.SetYear = Year;
TryAgain3:
Console.WriteLine("Введите категорию книги.");
ListOfBooks.SetCategory = Console.ReadLine();
if (ListOfBooks.SecondIndicate == true)
{
Console.WriteLine("Попробуйте ещё раз. Некорректное значение.");
ListOfBooks.SecondIndicate = false;
Console.ReadLine();
goto TryAgain3;
}
Books.Add($"Книга: {ListOfBooks.SetName}, Автор: {ListOfBooks.SetAuthor}, Год: {ListOfBooks.SetYear}, Категория: {ListOfBooks.SetCategory}.");
Console.WriteLine("Книга успешно добавлена в вашу библиотеку.");
string ChoiceAfter;
TryAgain5:
Console.WriteLine("Желаете добавить ещё книгу - 2 , посмотреть список книг - 3, закончить - 4 .");
ChoiceAfter = Console.ReadLine(); if (int.TryParse(ChoiceAfter, out int Choice) && Choice == 2) goto TryAgain4;
else if(Choice == 3)
{
Console.WriteLine("Список ваших книг:");
foreach(string Book in Books)
{
Console.Write($"\n{Book}");
Console.ReadLine();
}
goto TryAgain5;
}
else if(Choice == 4)
{
Console.WriteLine("Всего доброго!");
Console.ReadLine();
return;
}
break;
case 4:
Console.WriteLine("Всего доброго!");
Console.ReadLine();
return;
}
}
static void Menue(int UserNumber)
{
TryAgainX2:
switch (UserNumber)
{
case 1:
string ChoiseString;
Console.WriteLine("Добавить книгу - 2 , Закончить работу - 4 .");
ChoiseString = Console.ReadLine();
int.TryParse(ChoiseString, out int Choise); if (Choise >= 2 && Choise <= 4) SecondMenue(Choise);
break;
default:
Console.WriteLine("Некорректное значение");
goto TryAgainX2;
break;
}
}
static void Main(string[] args)
{
TryAgain:
string ChoiceFirst;
Console.WriteLine("Здравствуйте, Вас приветсвует домашняя библиотека. Открыть меню команд - 1");
ChoiceFirst = Console.ReadLine();
if (int.TryParse(ChoiceFirst, out int Choice) && Choice == 1) Menue(Choice);
else
{
Console.WriteLine("Неверное значение, попробуйте ещё раз.");
goto TryAgain;
}
Console.ReadLine();
}
}
}