OldBeliver

Function_01ver03

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