OldBeliver

Function_01ver02

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