Advertisement
Vlad_Savitskiy

Criminals

Jun 30th, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.01 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace CSLightFirst
  6. {
  7.     class Program
  8.     {
  9.         private static void Main()
  10.         {
  11.             List<Criminal> criminals = GenerateCriminals();
  12.  
  13.             while (true)
  14.             {
  15.                 Console.WriteLine("Выберите, что Вам нужно сделать:\n" +
  16.                                   "  1 - Выборка по росту\n" +
  17.                                   "  2 - Выборка по весу\n" +
  18.                                   "  3 - Выборка по национальности\n" +
  19.                                   "  4 - Показать всех преступников\n");
  20.                 Console.Write("Ваш ответ: ");
  21.  
  22.                 switch (Console.ReadLine())
  23.                 {
  24.                     case "1":
  25.                         MakeHeightSelection(criminals.Where(criminal => !criminal.IsDetained));
  26.                         break;
  27.                     case "2":
  28.                         MakeWeightSelection(criminals.Where(criminal => !criminal.IsDetained));
  29.                         break;
  30.                     case "3":
  31.                         MakeNationalitySelection(criminals.Where(criminal => !criminal.IsDetained));
  32.                         break;
  33.                     case "4":
  34.                         ShowAllCriminals(criminals);
  35.                         break;
  36.                     default:
  37.                         Console.WriteLine("Некорректное введенное значение, попробуйте ещё раз...");
  38.                         break;
  39.                 }
  40.             }
  41.         }
  42.  
  43.         private static void MakeNationalitySelection(IEnumerable<Criminal> criminals)
  44.         {
  45.             Nationality nationality = (Nationality)GetUserInput("Введите требуемую национальность: ");
  46.             ShowSelection(criminals.Where(criminal => criminal.Nationality == nationality));
  47.         }
  48.  
  49.         private static void MakeWeightSelection(IEnumerable<Criminal> criminals)
  50.         {
  51.             int weight = GetUserInput("Введите требуемый вес: ");
  52.             ShowSelection(criminals.Where(criminal => criminal.Weight == weight));
  53.         }
  54.  
  55.         private static void MakeHeightSelection(IEnumerable<Criminal> criminals)
  56.         {
  57.             int height = GetUserInput("Введите требуемый рост: ");
  58.             ShowSelection(criminals.Where(criminal => criminal.Height == height));
  59.         }
  60.  
  61.         private static int GetUserInput(string text)
  62.         {
  63.             Console.Clear();
  64.             Console.Write(text);
  65.  
  66.             if (int.TryParse(Console.ReadLine(), out int parameter))
  67.                 return parameter;
  68.            
  69.             return 0;
  70.         }
  71.  
  72.         private static void ShowSelection(IEnumerable<Criminal> selection)
  73.         {
  74.             int count = 0;
  75.             Console.WriteLine();
  76.  
  77.             foreach (Criminal criminal in selection)
  78.             {
  79.                 count++;
  80.                 criminal.ShowInfo();
  81.             }
  82.  
  83.             if (count == 0)
  84.             {
  85.                 Console.Clear();
  86.                 Console.WriteLine("Не найдено ни одного личного дела по вашему запросу.\n");
  87.             }
  88.         }
  89.  
  90.         private static List<Criminal> GenerateCriminals()
  91.         {
  92.             Random rand = new Random();
  93.  
  94.             string[] names = { "Джон", "Хью", "Энн", "Джек", "Уил", "Марк", "Лиз", "Майкл", "Дэвис" };
  95.             string[] surnames = { "Сильвер", "Морган", "Смит", "Джонс", "Уильямс", "Сноу", "Миллер", "Борк" };
  96.  
  97.             List<Criminal> criminals = new List<Criminal>(rand.Next(10, 16));
  98.  
  99.             for (int i = 0; i < criminals.Capacity; i++)
  100.                 criminals.Add(new Criminal(
  101.                     names[rand.Next(0, names.Length)],
  102.                     surnames[rand.Next(0, surnames.Length)],
  103.                     rand.Next(0, 2) == 0,
  104.                     rand.Next(160, 200),
  105.                     rand.Next(65, 100),
  106.                     (Nationality)rand.Next(0, 5)));
  107.  
  108.             return criminals;
  109.         }
  110.  
  111.         private static void ShowAllCriminals(List<Criminal> criminals)
  112.         {
  113.             Console.Clear();
  114.             Console.WriteLine("Преступники, находящиеся в базе:\n");
  115.  
  116.             foreach (Criminal criminal in criminals)
  117.                 criminal.ShowInfo();
  118.         }
  119.     }
  120.  
  121.     class Criminal
  122.     {
  123.         public string Name { get; }
  124.         public string Surname { get; }
  125.         public bool IsDetained { get; }
  126.         public int Height { get; }
  127.         public int Weight { get; }
  128.         public Nationality Nationality { get; }
  129.  
  130.         public Criminal(string name, string surname, bool isDetained, int height, int weight, Nationality nationality)
  131.         {
  132.             Name = name;
  133.             Surname = surname;
  134.             IsDetained = isDetained;
  135.             Height = height;
  136.             Weight = weight;
  137.             Nationality = nationality;
  138.         }
  139.  
  140.         public void ShowInfo()
  141.         {
  142.             string temp = IsDetained ? "Находится под стражей" : "На свободе";
  143.  
  144.             Console.WriteLine($"  Преступник: {Name} {Surname}\n" +
  145.                               $"  {temp}\n" +
  146.                               $"  Рост: {Height}\n" +
  147.                               $"  Вес: {Weight}\n" +
  148.                               $"  Национальность: {Nationality}\n");
  149.         }
  150.     }
  151.  
  152.     public enum Nationality
  153.     {
  154.         Русский,
  155.         Казах,
  156.         Американец,
  157.         Француз,
  158.         Немец
  159.     }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement