Created
July 17, 2024 17:08
-
-
Save QRemark/4509d21da72e27ba9cb5c16e55dccf73 to your computer and use it in GitHub Desktop.
Отчёт о вооружении
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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