TwinFrame

LINQ_FindCriminal

Dec 16th, 2020 (edited)
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Clight_38_LINQ_FindCriminal
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.  
  12.             int height = 0;
  13.             int weight = 0;
  14.             string nationality = "";
  15.  
  16.             Dictionary<string, Nationality> persons = new Dictionary<string, Nationality>
  17.             {
  18.                 {"Иванов А.Г.", Nationality.Русский }, {"Владимиров Б.У.", Nationality.Русский}, {"Оксанин Г.В.", Nationality.Русский },
  19.                 {"Генацвали А.В.", Nationality.Грузин }, {"Маринин С.А.", Nationality.Русский}, {"Игорян Х.А.", Nationality.Грузин },
  20.                 {"Евгенов С.М.", Nationality.Русский }, {"Мариуполев С.В", Nationality.Таджик  }, {"Надеждина Н.Т.", Nationality.Русский },
  21.                 {"Русланков В.А." , Nationality.Русский}, {"Сергеев Н.Н.", Nationality.Русский }, {"Иринина И.П.", Nationality.Грузин },
  22.                 {"Маринок Ж.А.", Nationality.Таджик }, {"Игрил Х.Х.", Nationality.Таджик }, {"Оксанн П.С.", Nationality.Таджик },
  23.                 {"Возбудидзе А.Ю.", Nationality.Грузин }, {"Попин М.Ю.", Nationality.Русский }, {"Сааркян С.И.", Nationality.Грузин }
  24.             };
  25.  
  26.             SecurityService securityService = new SecurityService(persons);
  27.  
  28.             while (true)
  29.             {
  30.                 Console.Clear();
  31.                 Console.WriteLine("База Службы Безопасности.\n");
  32.  
  33.                 height = securityService.CheckInputUser("\nВведите рост подозреваемого (см, от 155 до 210): ");
  34.                 weight = securityService.CheckInputUser("Введите вес подозреваемого (кг, от 60 до 110): ");
  35.                 nationality = securityService.CheckInputUserNationality("Введите национальность подозреваемого (Русский, Грузин, Таджик): ");
  36.  
  37.                 List<Criminal> matchByCriminals = securityService.FindMatchByCriminals(height, weight, nationality);
  38.                 ShowCriminals(matchByCriminals);
  39.             }
  40.         }
  41.  
  42.         public static void ShowCriminals(List<Criminal> criminals)
  43.         {
  44.             if (criminals.Count == 0)
  45.             {
  46.                 Console.WriteLine("\nПодозреваемых с такими данными не найдено.");
  47.             }
  48.             else
  49.             {
  50.                 Console.WriteLine("\nНайдены подозреваемые:");
  51.  
  52.                 foreach (var criminal in criminals)
  53.                 {
  54.                     criminal.ShowInfo();
  55.                 }
  56.             }
  57.  
  58.             Console.ReadKey();
  59.         }
  60.     }
  61.  
  62.     public enum Nationality
  63.     {
  64.         Русский, Грузин, Таджик
  65.     }
  66.  
  67.     class SecurityService
  68.     {
  69.         private Random random = new Random();
  70.  
  71.         private List<Criminal> _criminals;
  72.  
  73.         public SecurityService(Dictionary<string, Nationality> persons)
  74.         {
  75.             _criminals = new List<Criminal>();
  76.  
  77.             foreach (var person in persons)
  78.             {
  79.                 int height = random.Next(155, 210);
  80.                 int weight = random.Next(60, 110);
  81.                 bool isConclusion = Convert.ToBoolean(random.Next(0, 2));
  82.                 Criminal criminal = new Criminal(person.Key, person.Value.ToString(), height, weight, isConclusion);
  83.                 _criminals.Add(criminal);
  84.             }
  85.         }
  86.  
  87.         public List<Criminal> FindMatchByCriminals(int height, int weight, string nationality)
  88.         {
  89.             var filteredCrimanals = from Criminal criminal in _criminals
  90.                                     where (criminal.Height > height - 3 && criminal.Height < height + 3) &&
  91.                                     (criminal.Weight > weight - 3 && criminal.Weight < weight + 3) &&
  92.                                     (criminal.Nationality == nationality) &&
  93.                                     (criminal.IsConclusion == false)
  94.                                     select criminal;
  95.  
  96.             return filteredCrimanals.ToList();
  97.         }
  98.  
  99.         public int CheckInputUser(string text)
  100.         {
  101.             bool isNumber;
  102.             bool isVerify = false;
  103.             int verifyValue = 0;
  104.  
  105.             while (!isVerify)
  106.             {
  107.                 Console.Write(text);
  108.                 isNumber = Int32.TryParse(Console.ReadLine(), out int value);
  109.  
  110.                 if (isNumber)
  111.                 {
  112.                     verifyValue = value;
  113.                     isVerify = true;
  114.                 }
  115.                 else
  116.                 {
  117.                     Console.WriteLine("Не корректный ввод.\n");
  118.                     Console.ReadKey();
  119.                 }
  120.             }
  121.  
  122.             return verifyValue;
  123.         }
  124.  
  125.         public string CheckInputUserNationality(string text)
  126.         {
  127.             string nationality = "";
  128.             bool isVerify = false;
  129.  
  130.             while (!isVerify)
  131.             {
  132.                 Console.Write(text);
  133.                 nationality = Console.ReadLine();
  134.  
  135.                 var filteredCrimanals = from Criminal criminal in _criminals
  136.                                         where criminal.Nationality == nationality
  137.                                         select criminal;
  138.  
  139.                 if (filteredCrimanals.Count() > 0)
  140.                 {
  141.                     isVerify = true;
  142.                 }
  143.                 else
  144.                 {
  145.                     Console.WriteLine($"Национальность {nationality} в базе не найдена. Попробуйте ввести другую.\n");
  146.                     Console.ReadKey();
  147.                 }
  148.             }
  149.  
  150.             return nationality;
  151.         }
  152.     }
  153. }
  154.  
  155. class Criminal
  156. {
  157.     Random random = new Random();
  158.  
  159.     public string Fio { get; private set; }
  160.     public string Nationality { get; private set; }
  161.     public int Height { get; private set; }
  162.     public int Weight { get; private set; }
  163.     public bool IsConclusion { get; private set; }
  164.  
  165.     public Criminal(string name, string nationality, int height, int weight, bool isConclusion)
  166.     {
  167.         Fio = name;
  168.         Nationality = nationality;
  169.         Height = height;
  170.         Weight = weight;
  171.         IsConclusion = isConclusion;
  172.     }
  173.  
  174.     public void ShowInfo()
  175.     {
  176.         if (IsConclusion)
  177.         {
  178.             Console.WriteLine($"Ф.И.О.: {Fio}, Национальность: {Nationality}, Рост: {Height} см, Вес: {Weight} кг, Заключенный: да");
  179.         }
  180.         else
  181.         {
  182.             Console.WriteLine($"Ф.И.О.: {Fio}, Национальность: {Nationality}, Рост: {Height} см, Вес: {Weight} кг, Заключенный: нет");
  183.         }
  184.     }
  185. }
Add Comment
Please, Sign In to add comment