Загрузка данных
using System.Xml.Linq;
namespace ConsoleApp1
{
public class Program
{
static void Main(string[] args)
{
Equipment[] equipments =
[
new(1, "Отвертка", 50),
new(2, "Клюшка для гольфа", 42),
new(3, "Холодильник", 80),
new(4, "Веревка", 205),
new(5, "Окно", 15),
new(6, "Стол", 90),
new(7, "Параплан", 65),
new(8, "Кирка из Minecraft", 42),
new(9, "Подводная лодка", 70),
new(10, "Камень", 250)
];
bool isContinue = true;
while(isContinue)
{
Console.Write("\tМеню\n" +
"1. Просмотр оборудования\n" +
"2. Выбор единицы\n" +
"3. Изменение суточной стоимости\n" +
"4. Выдача\n" +
"5. Возврат\n" +
"0. Выход\n" +
"Выберите действие: ");
string? selectedAction = Console.ReadLine();
Console.WriteLine();
switch(selectedAction)
{
case "1":
PrintEquipments(equipments);
break;
case "2":
PrintEquipments(equipments);
Console.Write("Выберите оборудование: ");
int selectedEquipment;
while (!int.TryParse(Console.ReadLine(), out selectedEquipment) || !(selectedEquipment >= 1 && selectedEquipment <= equipments.Length))
Console.Write("Неверный ввод!\n" +
"Выберите оборудование: ");
selectedEquipment--;
Console.Write("1. Изменение суточной стоимости\n" +
"2. Выдача\n" +
"3. Возврат\n" +
"Выебрите действие: ");
string selectedAction_;
break;
case "3":
break;
case "4":
break;
case "5":
break;
case "0":
break;
default:
Console.WriteLine("Неизвестная команда, повторите ввод");
break;
}
}
//просмотр оборудования
//выбор единицы
//изменение суточной стоимости
//выдача
//возврат
//выход
}
static void PrintEquipments(Equipment[] equipments)
{
for (int i = 0; i < equipments.Length; i++)
Console.WriteLine($"{i + 1}. {equipments[i].FullInfo}");
}
}
public class Equipment
{
private readonly int inventoryNumber;
private string name;
private decimal dailyRate;
public int InventoryNumber { get { return inventoryNumber; } }
public string Name
{
get { return name; }
set
{
if (string.IsNullOrWhiteSpace(value))
throw new Exception("Имя оборудования не может быть пустым");
else
name = value;
}
}
public decimal DailyRate
{
get { return dailyRate; }
set
{
if (!IsAvailable)
throw new Exception("Пока оборудование выдано, изменять суточную стоимость нельзя");
else if (value <= 0)
throw new Exception("Значение суточной стоимости не может быть меньше или равно нулю");
else
dailyRate = value;
}
}
public int CurrentRentalDays { get; private set; } = 0;
public bool IsAvailable
{
get
{
return CurrentRentalDays == 0? true : false;
}
}
public decimal CurrentRentalCost { get { return DailyRate * CurrentRentalDays; } }
public string FullInfo
{
get
{
return $"Инвентарный номер: {InventoryNumber} | Название: {Name}\n" +
$"\tСуточная стоимость: {DailyRate}\n" +
$"\tДоступность оборудования: {(IsAvailable ? "Доступно" : "Недоступно")}\n" +
$"\tСрок текущего проката: {(IsAvailable ? "-" : CurrentRentalDays)}\n" +
$"\tСтоимость текущего проката: {(IsAvailable ? "-" : CurrentRentalCost)}"; }
}
public Equipment(int inventoryNumber, string name, decimal dailyRate)
{
this.inventoryNumber = inventoryNumber;
Name = name;
DailyRate = dailyRate;
}
public bool Rent()
{
if (IsAvailable)
CurrentRentalDays = 1;
else
return false;
return true;
}
public bool Rent(int currentRentalDays)
{
if (IsAvailable && currentRentalDays > 0)
CurrentRentalDays = currentRentalDays;
else
return false;
return true;
}
public bool ReturnEquipment()
{
if (!IsAvailable)
CurrentRentalDays = 0;
else
return false;
return true;
}
}
}