Advertisement
RedFlys

Home work - find criminal

Jan 20th, 2022
831
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Home_Work
  8. {
  9.     class Program
  10.     {
  11.         static void Main()
  12.         {
  13.             DataBase dataBase = new DataBase();
  14.             dataBase.Work();
  15.         }
  16.     }
  17.  
  18.     class DataBase
  19.     {
  20.         private List<Criminal> _criminals;
  21.  
  22.         public DataBase()
  23.         {
  24.             _criminals = new List<Criminal>();
  25.             FillDataBase();
  26.         }
  27.  
  28.         public void Work()
  29.         {
  30.             bool isWorking = true;
  31.             List<Criminal> criminals = _criminals;
  32.             int number;
  33.  
  34.             while(isWorking == true)
  35.             {
  36.                 ShowSelection(criminals);
  37.                 Console.WriteLine("1. Отфильтровать.\n2. Показать всех.\n3. Выход.");
  38.                 Console.Write("Введите команду: ");
  39.                 number = GetNumber();
  40.  
  41.                 switch (number)
  42.                 {
  43.                     case 1:
  44.                         criminals = FilterOutCriminals();
  45.                         break;
  46.  
  47.                     case 2:
  48.                         criminals = _criminals;
  49.                         break;
  50.  
  51.                     case 3:
  52.                         isWorking = false;
  53.                         break;
  54.  
  55.                     default:
  56.                         Console.WriteLine("Неверная команда.");
  57.                         break;
  58.                 }
  59.  
  60.                 Console.ReadKey();
  61.                 Console.Clear();
  62.             }
  63.         }
  64.  
  65.         private List<Criminal> FilterOutCriminals()
  66.         {
  67.             int height;
  68.             int weight;
  69.             National national;
  70.  
  71.             Console.Write("Введите рост: ");
  72.             height = GetNumber();
  73.  
  74.             Console.Write("Введите вес: ");
  75.             weight = GetNumber();
  76.  
  77.             national = GetNational();
  78.  
  79.             var filteredCriminals = _criminals.Where(criminal => criminal.Height == height &&
  80.                                                                  criminal.Weight == weight &&
  81.                                                                  criminal.National == national &&
  82.                                                                  criminal.IsArrested == false).ToList();
  83.  
  84.             return filteredCriminals;
  85.         }
  86.  
  87.         private int GetNumber()
  88.         {
  89.             bool isConverted = false;
  90.             int number = 0;
  91.             string userInput;
  92.  
  93.             while(isConverted == false)
  94.             {
  95.                 userInput = Console.ReadLine();
  96.                 isConverted = Int32.TryParse(userInput, out number);
  97.             }
  98.  
  99.             return number;
  100.         }
  101.  
  102.         private National GetNational()
  103.         {
  104.             bool isSelected = false;
  105.             int nationalCount = Enum.GetNames(typeof(National)).Length;
  106.             int number = 0;
  107.  
  108.             for(int i = 0; i < nationalCount; i++)
  109.             {
  110.                 Console.WriteLine($"{i + 1}. {(National)i}.");
  111.             }
  112.  
  113.             while(isSelected == false)
  114.             {
  115.                 number = GetNumber() - 1;
  116.  
  117.                 if (number >= 0 && number < nationalCount)
  118.                 {
  119.                     isSelected = true;
  120.                 }
  121.                 else
  122.                 {
  123.                     Console.WriteLine("Введите номер национальности.");
  124.                 }
  125.             }
  126.  
  127.             return (National)number;
  128.         }
  129.  
  130.         private void ShowSelection(List<Criminal> criminals)
  131.         {
  132.             foreach (Criminal criminal in criminals)
  133.             {
  134.                 criminal.ShowInfo();
  135.             }
  136.         }
  137.  
  138.         private void FillDataBase()
  139.         {
  140.             _criminals.Add(new Criminal("Черёмушко Алексей Алексеевич", National.Russia, 180, 80, false));
  141.             _criminals.Add(new Criminal("Чер Дмитрий Алексеевич", National.Russia, 185, 50, false));
  142.             _criminals.Add(new Criminal("Альанах Алексей Дмитриевич", National.Georgia, 180, 90, true));
  143.             _criminals.Add(new Criminal("Вассерман Анатолий Акашанович", National.UA, 185, 80, true));
  144.             _criminals.Add(new Criminal("Шерлок Ди Холмс", National.Ukraina, 170, 70, false));
  145.             _criminals.Add(new Criminal("Макуночи Но Ипо", National.UA, 210, 75, true));
  146.             _criminals.Add(new Criminal("Грозный Иван Васильевич", National.USA, 180, 80, false));
  147.             _criminals.Add(new Criminal("Борн Дмитрий Анатольевич", National.USA, 190, 90, true));
  148.             _criminals.Add(new Criminal("Навальный Владимир Владиславович", National.Ukraina, 160, 75, false));
  149.             _criminals.Add(new Criminal("Евпатий Калодратий", National.Georgia, 150, 50, false));
  150.             _criminals.Add(new Criminal("Никто", National.Russia, 220, 100, true));
  151.             _criminals.Add(new Criminal("Андерсон Джон Викторович", National.Russia, 180, 70, true));
  152.             _criminals.Add(new Criminal("Самураев Душнила Тёмович", National.Ukraina, 150, 90, false));
  153.         }
  154.     }
  155.  
  156.     class Criminal
  157.     {
  158.         private string _fullName;
  159.         private National _national;
  160.         private int _height;
  161.         private int _weight;
  162.         private bool _isArrested;
  163.  
  164.         public Criminal(string fullName, National national, int height, int weight, bool isArrested)
  165.         {
  166.             _fullName = fullName;
  167.             _national = national;
  168.             _height = height;
  169.             _weight = weight;
  170.             _isArrested = isArrested;
  171.         }
  172.  
  173.         public National National => _national;
  174.         public int Height => _height;
  175.         public int Weight => _weight;
  176.         public bool IsArrested => _isArrested;
  177.  
  178.         public void ShowInfo()
  179.         {
  180.             string status;
  181.  
  182.             if(_isArrested == true)
  183.             {
  184.                 status = "Арестован";
  185.             }
  186.             else
  187.             {
  188.                 status = "Разыскивается";
  189.             }
  190.  
  191.             Console.WriteLine($"{_fullName}. Национальность: {_national}. Рост: {_height}. Вес: {_weight}. {status}.");
  192.         }
  193.     }
  194.  
  195.     enum National
  196.     {
  197.         Russia,
  198.         USA,
  199.         UA,
  200.         Georgia,
  201.         Ukraina
  202.     }
  203. }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement