Advertisement
OldBeliver

Function_01ver05

Mar 26th, 2021
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.25 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace HRdepartment_02
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             string[] fullName;
  14.             string[] jobTitle;
  15.             string[] description;
  16.             string headerName = "ДОСЬЕ ОСТРОВА СОКРОВИЩ";
  17.  
  18.             FillDossier(out fullName, out jobTitle, out description);
  19.             HandleMenu(headerName, fullName, jobTitle, description);
  20.         }
  21.  
  22.         static void FillDossier(out string[] fullName, out string[] jobTitle, out string[] description)
  23.         {            
  24.             fullName = new string[] { "Джимми Гокинс", "Джон Трелони", "Дэвид Ливси", "Джон Сильвер", "Бен Ганн", "Билли Бонс", "Александр Смоллетт", "Черный Пес", "Слепой Пью", "Христофор Бонифатьевич Врунгель" };
  25.             jobTitle = new string[] { "хороший мальчик", "сквайр", "доктор", "самый страшный пират", "пират", "капитан", "капитан", "пират", "старый пират", "капитан" };
  26.             description = new string[] {"Очень, очень хороший мальчик. Вежлив, правдив, скромен, добр. Слушает маму. Каждое утро делает зарядку. Характер очень мягкий.",
  27.             "Туп, жаден, прожорлив, ленив, труслив, надменен. Характер отсутствует. Не женат.",
  28.             "Очень хороший и веселый человек. Характер общительный. Не женат.",
  29.             "Он же \"Окорок\", он же \"Одноногий\". Самый страшный пират, но удачно притворяется добрым. Характер скрытный. Не женат.",
  30.             "В детстве был благовоспитанным мальчиком, но начал изучать C#, связался с Unity и покатился... Характер мягкий. Не женат.",
  31.             "Обладатель карты острова сокровищ. Много пьет и всегда простужен. Характер скверный. Не женат.",
  32.             "Старый моряк и солдат. Говорит правду в глаза, отчего и страдает. Характер прескверный. Не женат.",
  33.             "Друг Флинта. Охотится за картой острова сокровищ. Характер скрытный. Не женат.",
  34.            "Друг Флинта. Жаден, ради денег готов на все. Характер мерзкий. Не женат.",
  35.             "Преподаёт навигацию в мореходном училище"};
  36.         }
  37.  
  38.         static void HandleMenu(string headerName, string[] fullName, string[] jobTitle, string[] description)
  39.         {
  40.             bool exit = false;
  41.             string menuItem = "";
  42.  
  43.             while (exit == false)
  44.             {
  45.                 Console.Write($"\n1 - Добавить досье\n\n2 - Вывести список досье\n\n3 - Удалить досье\n\n4 - Поиск по фамилии\n\n5 - Выход\n\n");
  46.                 menuItem = Console.ReadLine();
  47.                 switch (menuItem)
  48.                 {
  49.                     case "1":
  50.                         AddRecord(headerName, ref fullName, ref jobTitle, ref description);
  51.                         break;
  52.                     case "2":
  53.                         ShowListDossier(headerName, fullName, jobTitle);
  54.                         break;
  55.                     case "3":
  56.                         DeleteRecord(headerName, ref fullName, ref jobTitle, ref description);
  57.                         break;
  58.                     case "4":
  59.                         FindDossier(headerName, fullName, jobTitle, description);
  60.                         break;
  61.                     case "5":
  62.                         exit = true;
  63.                         break;
  64.                 }
  65.  
  66.                 Console.WriteLine($"\nНажмите любую клавишу для продолжения...");
  67.                 Console.ReadKey();
  68.                 Console.Clear();
  69.             }
  70.         }
  71.  
  72.         static void AddRecord(string headerName, ref string[] fullName, ref string[] jobTitle, ref string[] description)
  73.         {
  74.             string newFullName;
  75.             string newJobTitle;
  76.             string newDescription = "";
  77.  
  78.             Console.WriteLine($"Добавление персонажа в {headerName}.");
  79.             Console.Write($"Введите ФИО: ");
  80.             newFullName = Console.ReadLine();
  81.             Console.Write($"Введите должность: ");
  82.             newJobTitle = Console.ReadLine();
  83.             Console.Write($"Введите описание: ");
  84.             DisplayErrorMesage("Добавление описания доступно в зарегистрированной версии программы.");
  85.  
  86.             fullName = IncreaseArray(fullName, newFullName);
  87.             jobTitle = IncreaseArray(jobTitle, newJobTitle);
  88.             description = IncreaseArray(description, newDescription);
  89.  
  90.             Console.WriteLine($"Добавлена новая запись: {newFullName}, {newJobTitle}");
  91.         }
  92.  
  93.         static string[] IncreaseArray(string[] array, string record)
  94.         {
  95.             string[] tempArray = new string[array.Length + 1];
  96.  
  97.             for (int i = 0; i < array.Length; i++)
  98.             {
  99.                 tempArray[i] = array[i];
  100.             }
  101.  
  102.             tempArray[tempArray.Length - 1] = record;
  103.             array = tempArray;
  104.  
  105.             return array;
  106.         }
  107.  
  108.         static void ShowListDossier(string headerName, string[] fullName, string[] jobTitle)
  109.         {
  110.             Console.WriteLine($"ФИО и должность из {headerName}.\n");
  111.  
  112.             for (int i = 0; i < fullName.Length; i++)
  113.             {
  114.                 Console.WriteLine($"{i + 1}. {fullName[i]} - {jobTitle[i]}");
  115.             }
  116.         }
  117.  
  118.         static void DeleteRecord(string headerName, ref string[] fullName, ref string[] jobTitle, ref string[] description)
  119.         {
  120.             int deleteNumber;
  121.             string userInput;
  122.  
  123.             Console.WriteLine($"Удаление персонажа из {headerName}.");
  124.             Console.Write($"Введите номер досье для удаления: ");
  125.             userInput = Console.ReadLine();
  126.  
  127.             bool isNumber = int.TryParse(userInput, out deleteNumber);
  128.  
  129.             if (isNumber == true)
  130.             {
  131.                 if (deleteNumber > 0 && deleteNumber <= fullName.Length)
  132.                 {
  133.                     Console.WriteLine($"{jobTitle[deleteNumber - 1]} {fullName[deleteNumber - 1]} будет удален из списка.");
  134.                     fullName = DecreaseArray(fullName, deleteNumber - 1);
  135.                     jobTitle = DecreaseArray(jobTitle, deleteNumber - 1);
  136.                     description = DecreaseArray(description, deleteNumber - 1);
  137.                 }
  138.                 else
  139.                 {
  140.                     DisplayErrorMesage("Номер за пределами диапазона");
  141.                 }
  142.             }
  143.             else
  144.             {
  145.                 DisplayErrorMesage("Это не число!");
  146.             }
  147.         }
  148.  
  149.         static string[] DecreaseArray(string[] array, int deletedIndex)
  150.         {
  151.             int oldArrayIndex = 0;            
  152.             string[] deleteArray = new string[array.Length - 1];
  153.  
  154.             for (int i = 0; i < deleteArray.Length; i++)
  155.             {
  156.                 if (deletedIndex == i)
  157.                 {
  158.                     ++oldArrayIndex;
  159.                 }
  160.  
  161.                 deleteArray[i] = array[oldArrayIndex];                
  162.                 oldArrayIndex++;
  163.             }
  164.  
  165.             array = deleteArray;
  166.             return array;
  167.         }
  168.  
  169.         static void FindDossier(string headerName, string[] fullName, string[] jobTitle, string[] description)
  170.         {
  171.             Console.Write($"Поиск по имени: ");
  172.             string name = Console.ReadLine();
  173.  
  174.             bool nameIsFind = false;
  175.  
  176.             for (int i = 0; i < fullName.Length; i++)
  177.             {
  178.                 if (name.ToLower() == fullName[i].ToLower())
  179.                 {
  180.                     Console.WriteLine($"{fullName[i]} - {jobTitle[i]} - {description[i]}");
  181.                     nameIsFind = true;
  182.                 }
  183.             }
  184.  
  185.             if (nameIsFind == false)
  186.             {
  187.                 Console.WriteLine($"В {headerName} нет человека с именем {name}");
  188.             }
  189.         }
  190.  
  191.         static void DisplayErrorMesage(string text)
  192.         {
  193.             ConsoleColor defaultColor = Console.ForegroundColor;
  194.             Console.ForegroundColor = ConsoleColor.Red;
  195.             Console.WriteLine(text);
  196.             Console.ForegroundColor = defaultColor;
  197.         }
  198.     }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement