Advertisement
holllowknight

Поиск пре

Apr 30th, 2023 (edited)
1,136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.48 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace linqFindCriminal
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             const int CommandNewFind = 1;
  12.             const int CommandFindByNationality = 2;
  13.             const int CommandFindByWeight = 3;
  14.             const int CommandFindByHeight = 4;
  15.             const int CommandExit = 5;
  16.             bool isRunning = true;
  17.             Database database = new Database();
  18.  
  19.             Console.WriteLine($"{ CommandNewFind} - Новый поиск");
  20.             Console.WriteLine($"{ CommandFindByNationality} - Искать по национальности");
  21.             Console.WriteLine($"{ CommandFindByWeight} - Искать по весу");
  22.             Console.WriteLine($"{ CommandFindByHeight} - Искать по росту");
  23.             Console.WriteLine($"{ CommandExit} - Закрыть программу");
  24.  
  25.             while (isRunning)
  26.             {
  27.                 Console.Write("\nВведите команду: ");
  28.                 int userInput = UserUtils.GetNumberFromUser();
  29.  
  30.                 switch (userInput)
  31.                 {
  32.                     case CommandNewFind:
  33.                         database.ResetFindResult();
  34.                         break;
  35.  
  36.                     case CommandFindByNationality:
  37.                         database.FindByNationality();
  38.                         break;
  39.  
  40.                     case CommandFindByWeight:
  41.                         database.FindByWeight();
  42.                         break;
  43.  
  44.                     case CommandFindByHeight:
  45.                         database.FindByHeight();
  46.                         break;
  47.  
  48.                     case CommandExit:
  49.                         isRunning = false;
  50.                         break;
  51.                 }
  52.             }
  53.         }
  54.     }
  55.  
  56.     class UserUtils
  57.     {
  58.         public static int GetNumberFromUser()
  59.         {
  60.             string userInput;
  61.             int userNumber;
  62.             bool isNumber = false;
  63.  
  64.             do
  65.             {
  66.                 userInput = Console.ReadLine();
  67.                 isNumber = int.TryParse(userInput, out userNumber);
  68.             }
  69.             while (isNumber == false);
  70.  
  71.             return userNumber;
  72.         }
  73.     }
  74.  
  75.     class Criminal
  76.     {
  77.         public Criminal(string surname, string name, string patronymic, bool guarded, int height, int weight, string nationality)
  78.         {
  79.             Name = name;
  80.             Surname = surname;
  81.             Patronymic = patronymic;
  82.             Guarded = guarded;
  83.             Height = height;
  84.             Weight = weight;
  85.             Nationality = nationality;
  86.         }
  87.  
  88.         public string Name { get; private set; }
  89.         public string Surname { get; private set; }
  90.         public string Patronymic { get; private set; }
  91.         public bool Guarded { get; private set; }
  92.         public int Height { get; private set; }
  93.         public int Weight { get; private set; }
  94.         public string Nationality { get; private set; }
  95.  
  96.         public void ShowInfo()
  97.         {
  98.             string guardedLabel = Guarded ? "да" : "нет";
  99.             Console.WriteLine($"рост:{Height} вес:{Weight} национальность:{Nationality}  {Name} {Surname} {Patronymic}  Задержан:{guardedLabel}");
  100.         }
  101.     }
  102.  
  103.     class Database
  104.     {
  105.         private List<Criminal> _criminals = new List<Criminal>();
  106.         private List<Criminal> _foundCriminals;
  107.  
  108.         public Database()
  109.         {
  110.             _criminals.Add(new Criminal("Иванов", "Иван", "Иванович", false, 160, 80, "Марсианин"));
  111.             _criminals.Add(new Criminal("Петров", "Пётр", "Петрович", false, 163, 80, "Лунатик"));
  112.             _criminals.Add(new Criminal("Сидоров", "Сидор", "Сидорович", true, 160, 70, "Марсианин"));
  113.             _criminals.Add(new Criminal("Антонов", "Антон", "Антонович", false, 160, 80, "Лунатик"));
  114.             _criminals.Add(new Criminal("Джигурда", "Валентин", "Исакевич", false, 163, 70, "Лунатик"));
  115.             _criminals.Add(new Criminal("Кожедубов", "Артём", "Игоревич", false, 163, 80, "Землянин"));
  116.             _criminals.Add(new Criminal("Натулько", "Алексей", "Петрович", false, 168, 70, "Марсианин"));
  117.             _criminals.Add(new Criminal("Карбонный", "Антон", "Петрович", true, 163, 80, "Марсианин"));
  118.             _criminals.Add(new Criminal("Филь", "Артём", "Александрович", false, 168, 99, "Землянин"));
  119.             _criminals.Add(new Criminal("Попов", "Пётр", "Сидорович", false, 160, 99, "Марсианин"));
  120.             _criminals.Add(new Criminal("Ларетти", "Антон", "Александрович", true, 163, 99, "Землянин"));
  121.             _criminals.Add(new Criminal("Ковальски", "Иван", "Моисеевич", false, 168, 80, "Землянин"));
  122.             ResetFindResult();
  123.         }
  124.  
  125.         public void ResetFindResult()
  126.         {
  127.             _foundCriminals = _criminals;
  128.         }
  129.  
  130.         public void FindByHeight()
  131.         {
  132.             Console.WriteLine("Введите рост");
  133.             int height = UserUtils.GetNumberFromUser();
  134.             _foundCriminals = _foundCriminals.Where(criminal => criminal.Height == height && criminal.Guarded == false).ToList<Criminal>();
  135.             ShowFindResult();
  136.         }
  137.  
  138.         public void FindByWeight()
  139.         {
  140.             Console.WriteLine("Введите вес");
  141.             int weight = UserUtils.GetNumberFromUser();
  142.             _foundCriminals = _foundCriminals.Where(criminal => criminal.Weight == weight && criminal.Guarded == false).ToList<Criminal>();
  143.             ShowFindResult();
  144.         }
  145.  
  146.         public void FindByNationality()
  147.         {
  148.             Console.WriteLine("Введите национальность");
  149.             string nationality = Console.ReadLine();
  150.             _foundCriminals = _foundCriminals.Where(criminal => criminal.Nationality == nationality && criminal.Guarded == false).ToList<Criminal>();
  151.             ShowFindResult();
  152.         }
  153.  
  154.         public void ShowFindResult()
  155.         {
  156.             Console.WriteLine("");
  157.  
  158.             foreach(var criminal in _foundCriminals)
  159.                 criminal.ShowInfo();
  160.         }
  161.     }
  162. }
  163.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement