Skip to content

Instantly share code, notes, and snippets.

@QRemark
Created July 17, 2024 17:08
Show Gist options
  • Save QRemark/4509d21da72e27ba9cb5c16e55dccf73 to your computer and use it in GitHub Desktop.
Save QRemark/4509d21da72e27ba9cb5c16e55dccf73 to your computer and use it in GitHub Desktop.
Отчёт о вооружении
using System;
using System.Collections.Generic;
using System.Linq;
namespace Linq
{
internal class Program
{
static void Main(string[] args)
{
SoldierFactory soldierFactory = new SoldierFactory();
Platoon platoon = new Platoon(soldierFactory);
platoon.Work();
}
}
class Platoon
{
private List<Soldier> _soldiers;
public Platoon(SoldierFactory soldierFactory)
{
_soldiers = soldierFactory.Create();
}
public void Work()
{
const string CommandShowAllSoldiers = "1";
const string CommandShowReport = "2";
const string CommandExit = "3";
bool isRunning = true;
string userInput;
while (isRunning)
{
Console.WriteLine("Добро пожаловать в отчет о вооружении! \nВам доступно: ");
Console.WriteLine($"{CommandShowAllSoldiers} - посмотреть весь список солдат");
Console.WriteLine($"{CommandShowReport} - посмотреть отчет в котором имя и звание");
Console.WriteLine($"{CommandExit} - выйти из приложения");
Console.Write("Выберите действие: ");
userInput = Console.ReadLine();
switch (userInput)
{
case CommandShowAllSoldiers:
ShowSoldiers();
break;
case CommandShowReport:
ShowReport();
break;
case CommandExit:
isRunning = false;
break;
default:
UserUtils.HandleInvalidInput();
break;
}
Console.Clear();
}
Console.WriteLine("Всего доброго! \nДля закрытия приложения нажмите любую кнопку...");
Console.ReadKey();
}
private void Show(List<Soldier> soldiers)
{
int number = 1;
UserUtils.ShowLine();
foreach (var soldier in soldiers)
{
Console.Write(number++ + ") ");
soldier.ShowStats();
}
UserUtils.ShowLine();
}
private void ShowReport()
{
int number = 1;
Console.WriteLine("Вы решили посмотреть имя и звание: ");
var result = _soldiers.Select(soldier => new { soldier.Name, soldier.Rank }).ToList();
UserUtils.ShowLine();
foreach (var soldier in result)
{
Console.WriteLine($"{number++}) Имя: {soldier.Name}, Звание: {soldier.Rank}");
}
UserUtils.ShowLine();
Console.WriteLine("Нажмите любую клавишу для продолжения...");
Console.ReadKey();
}
private void ShowSoldiers()
{
Console.WriteLine("Вы выбрали посмотреть список всех солдат: ");
Show(_soldiers);
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
}
}
class SoldierFactory
{
public List<Soldier> Create()
{
List<Soldier> soldiers = new List<Soldier>
{
new Soldier("Иванов", "пистолет", "майор", 150),
new Soldier("Петров", "штурмовая винтовка", "полковник", 110),
new Soldier("Сидоров", "пистолет-пулемет", "сержант", 20),
new Soldier("Савельев", "РПГ", "рядовой", 7),
new Soldier("Морозова", "пулимет", "сержант", 10),
new Soldier("Пушкина", "снайперская винтовка", "младший сержант", 7),
new Soldier("Ложная", "автомат", "рядовой", 3),
};
return new List<Soldier>(soldiers);
}
}
class Soldier
{
public Soldier(string name, string weapon, string rank, int date)
{
Name = name;
Weapon = weapon;
Rank = rank;
Date = date;
}
public string Name { get; private set; }
public string Weapon { get; private set; }
public string Rank { get; private set; }
public int Date { get; private set; }
public void ShowStats()
{
Console.WriteLine($"Имя: {Name}, Вооружение: {Weapon}, Звание: {Rank}, Срок службы: {Date} месяцев");
}
}
static class UserUtils
{
public static void HandleInvalidInput()
{
Console.Clear();
Console.WriteLine("Команда не была распознана, нажмите любую клавишу для продолжения...");
Console.ReadKey();
}
public static void ShowLine() => Console.WriteLine("\n** " + new string('-', 40) + " **");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment