Advertisement
TwinFrame

Clight_28_Dossier

Apr 27th, 2023 (edited)
664
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.87 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Clight_28
  4. {
  5.     class Program
  6.     {
  7.         static void Main()
  8.         {
  9.             const int CommandAddDossier = 1;
  10.             const int CommandShowAllDossiers = 2;
  11.             const int CommandDeleteDossier = 3;
  12.             const int CommandFindDossier = 4;
  13.             const int CommandExit = 5;
  14.  
  15.             int userInput;
  16.             bool isWorking = true;
  17.  
  18.             string[] names = new string[0];
  19.             string[] workPositions = new string[0];
  20.             char separator = ' ';
  21.  
  22.             while (isWorking)
  23.             {
  24.                 Console.Clear();
  25.                 Console.WriteLine("Кадровый учёт\n");
  26.                 Console.WriteLine("Меню:");
  27.                 Console.WriteLine($"{CommandAddDossier} - добавить досье.");
  28.                 Console.WriteLine($"{CommandShowAllDossiers} - посмотреть все досье.");
  29.                 Console.WriteLine($"{CommandDeleteDossier} - удалить досье.");
  30.                 Console.WriteLine($"{CommandFindDossier} - найти досье по фамилии.");
  31.                 Console.WriteLine($"{CommandExit} - выход.");
  32.                 Console.Write("\nВыберете пункт меню: ");
  33.                 userInput = Convert.ToInt32(Console.ReadLine());
  34.  
  35.                 switch (userInput)
  36.                 {
  37.                     case CommandAddDossier:
  38.                         AddDossier(separator, ref names, ref workPositions);
  39.                         break;
  40.  
  41.                     case CommandShowAllDossiers:
  42.                         ShowAllDossiers(names, workPositions);
  43.                         break;
  44.  
  45.                     case CommandDeleteDossier:
  46.                         DeleteDossier(ref names, ref workPositions);
  47.                         break;
  48.  
  49.                     case CommandFindDossier:
  50.                         FindDossier(names, workPositions, separator);
  51.                         break;
  52.  
  53.                     case CommandExit:
  54.                         isWorking = false;
  55.                         Console.WriteLine("До свидания!");
  56.                         break;
  57.  
  58.                     default:
  59.                         Console.WriteLine("Не верно выбран номер пункта меню.");
  60.                         break;
  61.                 }
  62.  
  63.                 Console.Write("\nДля продолжения нажмите любую клавишу.");
  64.                 Console.ReadKey();
  65.             }
  66.         }
  67.  
  68.         static void AddDossier(char separator, ref string[] names, ref string[] workPositions)
  69.         {
  70.             Console.Clear();
  71.  
  72.             Console.Write("\nВведите фамилию: ");
  73.             string templateSurname = Console.ReadLine();
  74.             Console.Write("\nВведите имя: ");
  75.             string templateName = Console.ReadLine();
  76.             Console.Write("\nВведите отчество: ");
  77.             string templatePatronymic = Console.ReadLine();
  78.  
  79.             string templateFullName = templateSurname + separator + templateName + separator + templatePatronymic;
  80.  
  81.             Console.Write("\nВведите должность: ");
  82.             string templateWorkPosition = Console.ReadLine();
  83.  
  84.             AddElement(templateFullName, ref names);
  85.             AddElement(templateWorkPosition, ref workPositions);
  86.         }
  87.  
  88.         static void AddElement(string element, ref string[] array)
  89.         {
  90.             string[] templateDossier = new string[array.Length + 1];
  91.  
  92.             for (int i = 0; i < array.Length; i++)
  93.             {
  94.                 templateDossier[i] = array[i];
  95.             }
  96.  
  97.             templateDossier[templateDossier.Length - 1] = element;
  98.  
  99.             array = templateDossier;
  100.         }
  101.  
  102.         static void DeleteDossier(ref string[] names, ref string[] workPositions)
  103.         {
  104.             Console.Clear();
  105.  
  106.             if (names.Length <= 0)
  107.             {
  108.                 Console.WriteLine("Досье пустое, сначала добавьте персонала в досье.");
  109.             }
  110.             else
  111.             {
  112.                 ShowAllDossiers(names, workPositions);
  113.                 Console.Write("\nВведите номер удаляемого сотрудника: ");
  114.                 int userInput = Convert.ToInt32(Console.ReadLine());
  115.  
  116.                 if (userInput > names.Length && userInput <= 0)
  117.                 {
  118.                     Console.WriteLine("Не корректный ввод номера досье.");
  119.                 }
  120.                 else
  121.                 {
  122.                     DeleteDossierElement(userInput, ref names);
  123.                     DeleteDossierElement(userInput, ref workPositions);
  124.  
  125.                     Console.Clear();
  126.  
  127.                     ShowAllDossiers(names, workPositions);
  128.                     Console.Write("\nДосье сотрудника успешно удалено.\n");
  129.                 }
  130.             }
  131.         }
  132.  
  133.         static void DeleteDossierElement(int number, ref string[] array)
  134.         {
  135.             string[] templateDossier = new string[array.Length - 1];
  136.  
  137.             for (int i = 0; i < number - 1; i++)
  138.             {
  139.                 templateDossier[i] = array[i];
  140.             }
  141.  
  142.             for (int i = number; i < array.Length; i++)
  143.             {
  144.                 templateDossier[i - 1] = array[i];
  145.             }
  146.  
  147.             array = templateDossier;
  148.         }
  149.  
  150.         static void FindDossier(string[] names, string[] workPositions, char separator)
  151.         {
  152.             Console.Clear();
  153.             ShowAllDossiers(names, workPositions);
  154.             Console.Write("\nВведите фамилию сотрудника: ");
  155.             string surname = Console.ReadLine();
  156.  
  157.             bool isFindedSurname = false;
  158.  
  159.             int[] findedDossiers = new int[0];
  160.  
  161.             for (int i = 0; i < names.Length; i++)
  162.             {
  163.                 string[] fullName = names[i].Split(separator);
  164.  
  165.                 if (fullName[0] == surname)
  166.                 {
  167.                     AddFindedNumberDossier(i, ref findedDossiers);
  168.  
  169.                     isFindedSurname = true;
  170.                 }
  171.             }
  172.  
  173.             if (isFindedSurname)
  174.             {
  175.                 Console.WriteLine($"Досье найдено:");
  176.  
  177.                 for (int i = 0; i < findedDossiers.Length; i++)
  178.                     ShowSingleDossier(names, workPositions, findedDossiers[i]);
  179.             }
  180.             else
  181.             {
  182.                 Console.WriteLine($"Досье по фамилии {surname} не найдено.");
  183.             }
  184.         }
  185.  
  186.         static void AddFindedNumberDossier(int number, ref int[] findedDossiers)
  187.         {
  188.             int[] templateNumbers = new int[findedDossiers.Length + 1];
  189.  
  190.             for (int i = 0; i < findedDossiers.Length; i++)
  191.             {
  192.                 templateNumbers[i] = findedDossiers[i];
  193.             }
  194.  
  195.             templateNumbers[templateNumbers.Length - 1] = number;
  196.  
  197.             findedDossiers = templateNumbers;
  198.         }
  199.  
  200.         static void ShowAllDossiers(string[] names, string[] workPositions)
  201.         {
  202.             Console.Clear();
  203.  
  204.             for (int i = 0; i < names.Length; i++)
  205.             {
  206.                 ShowSingleDossier(names, workPositions, i);
  207.             }
  208.         }
  209.  
  210.         static void ShowSingleDossier(string[] names, string[] workPositions, int numberDossier)
  211.         {
  212.             Console.WriteLine($"{numberDossier + 1}. {names[numberDossier]} - {workPositions[numberDossier]}");
  213.         }
  214.     }
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement