Advertisement
MrVeiran

Buh Ychet

Mar 13th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 19.32 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 ConsoleApp40
  8. {
  9.     class Program
  10.     {
  11.         // Описать функцию заполнения массивов досье,
  12.         //функцию форматированного вывода и функцию удаления досье.
  13.         //(+6 баллов за систему поиска по !фамилии!)
  14.         ////Функция расширяет уже имеющийся массив на
  15.         //1 и дописывает туда новое значение.
  16.         //Будет 2 массива: 1) фио 2) должность.
  17.         //Программа должна быть с меню, которое содержит пункты:
  18.         //1) добавить досье.
  19.         //2) вывести все досье(в одну строку через “-”
  20.         //фио и должность с порядковым номером в начале)
  21.         //3) удалить досье
  22.         //4) выход
  23.         static void Main(string[] args)
  24.         {
  25.             int s4et = 0;
  26.             string[] FiO = new string[0];
  27.             int na4FiO = 0;
  28.             int na4Pos = 0;
  29.             string[] Pos = new string[0];
  30.             Console.CursorVisible = false;
  31.             int End = 0; // убийство цикла через ескейп
  32.             int width = Console.WindowWidth;
  33.             HelloScreen();
  34.             Console.ReadLine();
  35.             int height = Console.WindowHeight;
  36.             while (true)
  37.             {
  38.                 WriteFirstScreen();
  39.                 ConsoleKeyInfo charKey = Console.ReadKey();
  40.                 switch (charKey.Key)
  41.                 {
  42.                     case ConsoleKey.Escape:
  43.                         End = 5;
  44.                         Console.SetCursorPosition(0, height - 2);
  45.                         Console.WriteLine();
  46.                         break;
  47.  
  48.                     case ConsoleKey.A:   //Добавить профиль
  49.                         AddProfile(ref FiO, na4FiO, na4Pos, ref Pos);
  50.                         na4FiO += 3; // разделение массива по 3 (Фамилия Имя Отчество)
  51.                         na4Pos++;
  52.  
  53.  
  54.  
  55.                         int len = FiO.Length;
  56.                         for (int i = 0; i < FiO.Length; i++)
  57.                         {
  58.                             Console.WriteLine(FiO[i]);
  59.  
  60.                         }
  61.  
  62.  
  63.  
  64.                         Console.ReadLine();
  65.                         break;
  66.                     case ConsoleKey.Delete: //удалить
  67.                         if (FiO.Length == 0)
  68.                         {
  69.                             Console.Clear();
  70.                             Console.SetCursorPosition(width / 2 - 24, 9);
  71.                             Console.WriteLine("В базе отсуствуют профили");
  72.                             Console.SetCursorPosition(width / 2 - 24, 11);
  73.                             Console.WriteLine("Нажмите любую кнопку чтобы продолжить");
  74.                             Console.ReadLine();
  75.                             break;
  76.                         }
  77.                         DeleteProfile(ref FiO, na4FiO, na4Pos, ref Pos);
  78.                         na4FiO -= 3; // разделение массива по 3 (Фамилия Имя Отчество)
  79.                         na4Pos--;
  80.                         break;
  81.                     case ConsoleKey.W: //
  82.                         if (FiO.Length == 0)
  83.                         {
  84.                             Console.Clear();
  85.                             Console.SetCursorPosition(width / 2 - 24, 9);
  86.                             Console.WriteLine("В базе отсуствуют профили");
  87.                             Console.SetCursorPosition(width / 2 - 24, 11);
  88.                             Console.WriteLine("Нажмите любую кнопку чтобы продолжить");
  89.                             Console.ReadLine();
  90.                             break;
  91.                         }
  92.                         WriteName(ref FiO, na4FiO, na4Pos, ref Pos);
  93.                         break;
  94.                     //case ConsoleKey.F: // поиск по имени
  95.                     //    if (FiO.Length == 0)
  96.                     //    {
  97.                     //        Console.Clear();
  98.                     //        Console.SetCursorPosition(width / 2 - 24, 9);
  99.                     //        Console.WriteLine("В базе отсуствуют профили");
  100.                     //        Console.SetCursorPosition(width / 2 - 24, 11);
  101.                     //        Console.WriteLine("Нажмите любую кнопку чтобы продолжить");
  102.                     //        Console.ReadLine();
  103.                     //        break;
  104.                     //    }
  105.                     //    FindFam(ref FiO, na4FiO, na4Pos, ref Pos);
  106.  
  107.                     //    break;
  108.  
  109.                 }
  110.  
  111.  
  112.                 if (End == 5) // сломать цикл программы
  113.                     break;
  114.             }
  115.             int ver = 0;
  116.             for (int i = 0; i < FiO.Length - 2; i += 3)
  117.             {
  118.                 Console.Write(FiO[i] + " ");
  119.                 Console.Write(FiO[i + 1] + " ");
  120.                 Console.Write(FiO[i + 2] + " ");
  121.                 Console.Write(Pos[ver]);
  122.                 ver++;
  123.                 Console.WriteLine();
  124.             }
  125.  
  126.  
  127.         }
  128.  
  129.  
  130.         static void AddProfile(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
  131.                                                                                            //не создается в функции, а main дает ссылку на массив.
  132.         {
  133.  
  134.             Console.Clear();
  135.             string[] tempFiO = new string[FiO.Length + 3];
  136.             string[] tempPos = new string[Pos.Length + 1];
  137.             for (int i = 0; i < FiO.Length; i++)
  138.             {
  139.                 tempFiO[i] = FiO[i];
  140.             }
  141.  
  142.             Console.WriteLine("Введите фамилию имя и отчество через пробелы");
  143.             string line = Console.ReadLine();
  144.  
  145.             String[] words = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
  146.             tempFiO[na4FiO] = words[0];
  147.             tempFiO[na4FiO + 1] = words[1];
  148.             tempFiO[na4FiO + 2] = words[2];
  149.             FiO = tempFiO;
  150.             for (int i = 0; i < Pos.Length; i++)
  151.             {
  152.                 tempPos[i] = Pos[i];
  153.             }
  154.             Console.WriteLine("Введите должность");
  155.             tempPos[na4Pos] = Console.ReadLine();
  156.             Pos = tempPos;
  157.  
  158.  
  159.  
  160.  
  161.  
  162.         }
  163.         static void HelloScreen()
  164.         {
  165.             int width = Console.WindowWidth;
  166.             int height = Console.WindowHeight;
  167.             Console.SetCursorPosition(width / 2 - 24, 7);
  168.             Console.Write("Добро пожаловать в программу кадрового учёта");
  169.             Console.SetCursorPosition(width / 2 - 24, 9);
  170.             Console.Write("Вам доступны клавиши для работы *ESC* *A* *W* *DEL* *F*");
  171.             Console.SetCursorPosition(width / 2 - 24, 11);
  172.             Console.Write("Если хотите добавить профиль, нажмите *A*");
  173.             Console.SetCursorPosition(width / 2 - 24, 13);
  174.             Console.Write("Для вывода списка базы данных нажмите W");
  175.             Console.SetCursorPosition(width / 2 - 24, 14);
  176.             Console.Write("При выводе списка можно осуществить поиск по клавише F");
  177.             Console.SetCursorPosition(width / 2 - 24, 16);
  178.             Console.Write("Delete позволяет зайти в меню удаления профиля");
  179.             Console.SetCursorPosition(width / 2 - 24, 17);
  180.             Console.Write("Внимание! при удалении профиля порядковый номер сдвигается на 1");
  181.             Console.SetCursorPosition(width / 2 - 24, 18);
  182.             Console.Write("Чтобы узнать его воспользуйтесь выводом W");
  183.             Console.SetCursorPosition(width / 2 - 24, 20);
  184.             Console.Write("Escape чтобы выйти из программы.");
  185.             Console.SetCursorPosition(width / 2 - 24, 21);
  186.             Console.Write("Если зашли в меню то позволяет выйти в главное меню");
  187.             Console.SetCursorPosition(width / 2 - 24, 23);
  188.             Console.Write("Для продолжения нажмите любую кнопку");
  189.             Console.ReadLine();
  190.             Console.Clear();
  191.             Console.SetCursorPosition(width / 2 - 24, 7);
  192.             Console.Write("На этом введение наше закончилось");
  193.             Console.SetCursorPosition(width / 2 - 24, 9);
  194.             Console.Write("Для продолжения нажмите любую кнопку");
  195.  
  196.         }
  197.  
  198.         static void WriteFirstScreen()
  199.         {
  200.             int width = Console.WindowWidth;
  201.             int height = Console.WindowHeight;
  202.             Console.Clear();
  203.             Console.BackgroundColor = ConsoleColor.White;
  204.             Console.ForegroundColor = ConsoleColor.Black;
  205.             for (int i = 0; i < width; i++)
  206.             {
  207.                 for (int j = 0; j < height + 7; j++)
  208.                     Console.Write(' ');
  209.             }
  210.             Console.SetCursorPosition(0, 0);//сдвиг консоли убирает
  211.             Console.WriteLine();
  212.  
  213.  
  214.             for (int i = 0; i < width; i++)
  215.             {
  216.                 Console.SetCursorPosition(i, 0);
  217.                 Console.Write("#");
  218.                 Console.SetCursorPosition(i, 2);
  219.                 Console.Write("#");
  220.             }
  221.             Console.SetCursorPosition(width / 2 - 25, 1);
  222.             Console.Write("Кадровый учёт Урюпинского межбаллистического завода №46");
  223.  
  224.             Console.SetCursorPosition(width / 2 - 24, 9);
  225.             Console.Write("Вам доступны клавиши для работы *ESC* *A* *W* *DEL* *F*");
  226.             Console.SetCursorPosition(width / 2 - 24, 11);
  227.             Console.Write("Если хотите добавить профиль, нажмите *A*");
  228.             Console.SetCursorPosition(width / 2 - 24, 13);
  229.             Console.Write("Для вывода списка базы данных нажмите W");
  230.             Console.SetCursorPosition(width / 2 - 24, 14);
  231.             Console.Write("При выводе списка можно осуществить поиск по клавише F");
  232.             Console.SetCursorPosition(width / 2 - 24, 16);
  233.             Console.Write("Delete позволяет зайти в меню удаления профиля");
  234.             Console.SetCursorPosition(0, 0);//сдвиг консоли убирает
  235.             Console.WriteLine();
  236.  
  237.  
  238.         }
  239.  
  240.  
  241.         //
  242.         static void WriteName(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
  243.                                                                                           //не создается в функции, а main дает ссылку на массив.
  244.         {
  245.             int epic = 0;
  246.  
  247.             Console.Clear();
  248.  
  249.  
  250.             while (epic < 2&& FiO.Length != 0)
  251.             {
  252.                 Console.Clear();
  253.                 int s4et = 0;
  254.                 int ii = 0;
  255.                 for (int i = 0; i < FiO.Length - 2; i += 3)
  256.                 {
  257.                     Console.WriteLine(FiO[i] + ' ' + FiO[i + 1] + ' ' + FiO[i + 2] + ", должность- " + Pos[s4et] + ", а порядковый номер" + (s4et + 1));
  258.                     s4et++;
  259.                 }
  260.                 s4et = 0;
  261.                 Console.WriteLine("Для поиска нажмите F или Escape чтобы выйти");
  262.                 ConsoleKeyInfo charKey = Console.ReadKey();
  263.                 switch (charKey.Key)
  264.                 {
  265.                     case ConsoleKey.F:
  266.  
  267.  
  268.                         Console.Clear();
  269.                         Console.WriteLine("Введите фамилию для поиска");
  270.                         string name = Console.ReadLine();
  271.                         for (int i = 0; i < FiO.Length - 2; i += 3)
  272.                         {
  273.                             s4et++;
  274.                             ii = i;
  275.                             if (name.ToLower() == FiO[i].ToLower())
  276.                             {
  277.  
  278.  
  279.  
  280.                                 break;
  281.                             }
  282.  
  283.                         }
  284.                         Console.WriteLine(FiO[ii] + ' ' + FiO[ii + 1] + ' ' + FiO[ii + 2] + ", должность- " + Pos[s4et - 1] + ", а порядковый номер" + (s4et));
  285.                         Console.WriteLine("нажмите любую клавишу чтобы продолжить");
  286.  
  287.                         Console.ReadLine();
  288.                         break;
  289.                     case ConsoleKey.Escape:
  290.                         epic = 5;
  291.                         break;
  292.                 }
  293.                 s4et = 0;
  294.                 ii = 0;
  295.  
  296.             }
  297.  
  298.         }
  299.         //
  300.         static void FindFam(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
  301.                                                                                         //не создается в функции, а main дает ссылку на массив.
  302.         {
  303.             int end = 0;
  304.             while (end < 2)
  305.             {
  306.                 Console.Clear();
  307.  
  308.                 int s4et = 0;
  309.                 int ii = 0;
  310.                 int ver = 0;
  311.                 bool r = false;
  312.                 Console.WriteLine("Введите фамилию для поиска");
  313.                 string name = Console.ReadLine();
  314.                 for (int i = 0; i < FiO.Length - 2; i += 3)
  315.                 {
  316.                     s4et++;
  317.                     ii = i;
  318.                     if (name.ToLower() == FiO[i].ToLower())
  319.                     {
  320.                         ver = 1;
  321.                         Console.WriteLine(FiO[ii] + ' ' + FiO[ii + 1] + ' ' + FiO[ii + 2] + ", должность- " + Pos[s4et - 1] + ", а порядковый номер" + (s4et));
  322.  
  323.                         break;
  324.                     }
  325.  
  326.                 }
  327.                 if (ver == 0)
  328.                     Console.WriteLine("Нет такой фамилии. Для продолжения нажмите\nлюбую клавишу или Escape чтобы выйти ");
  329.  
  330.                 ConsoleKeyInfo charKey = Console.ReadKey();
  331.                 switch (charKey.Key)
  332.                 {
  333.                     case ConsoleKey.Escape:
  334.                         end = 5;
  335.                         break;
  336.  
  337.                 }
  338.  
  339.  
  340.  
  341.             }
  342.         }
  343.  
  344.         static void WriteProfile()
  345.         {
  346.  
  347.         }
  348.         static void DeleteProfile(ref string[] FiO, int na4FiO, int na4Pos, ref string[] Pos) // после задания кручу верчу я понял, что можно было использовать void потому что массив
  349.                                                                                               //не создается в функции, а main дает ссылку на массив.
  350.         {
  351.             int end = 0;
  352.            
  353.                 while (end < 2&& FiO.Length!=0)
  354.             {
  355.                 Console.Clear();
  356.  
  357.                 string[] tempFiO = new string[FiO.Length - 3];
  358.                 string[] tempPos = new string[Pos.Length - 1];
  359.                 int s4et = 0;
  360.                 int ver = 0;
  361.                 bool r = false;
  362.                 Console.WriteLine("Введите фамилию для поиска на удаление");
  363.                 string name = Console.ReadLine();
  364.                 for (int i = 0; i < FiO.Length - 2; i += 3)
  365.                 {
  366.                     if (name.ToLower() == FiO[i].ToLower())
  367.                     {
  368.                         for (int j = i; j < FiO.Length - 3; j++)
  369.                         {
  370.                             FiO[j] = FiO[j + 3];
  371.                         }
  372.                         r = true;
  373.                         ver = 1;
  374.                         break;
  375.                     }
  376.                     s4et++;
  377.  
  378.                 }
  379.                 if (r == true)
  380.  
  381.                     for (int i = s4et; i < Pos.Length - 1; i++)
  382.                     {
  383.                         Pos[i] = Pos[i + 1];
  384.                     }
  385.  
  386.                 for (int i = 0; i < tempFiO.Length; i++)
  387.                 {
  388.                     tempFiO[i] = FiO[i];
  389.                 }
  390.                 for (int i = 0; i < tempPos.Length; i++)
  391.                 {
  392.                     tempPos[i] = Pos[i];
  393.                 }
  394.                 if (ver == 1)
  395.                 {
  396.                     Pos = tempPos;
  397.                     FiO = tempFiO;
  398.                     Console.WriteLine("Удаление прошло успешно. Нажмите любую клавишу чтобы продолжить.Escape чтобы выйти ");
  399.                 }
  400.                 if (ver == 0)
  401.                     Console.WriteLine("Нет такой фамилии. Для продолжения нажмите\nлюбую клавишу или Escape чтобы выйти ");
  402.                 s4et = 0;
  403.                 ConsoleKeyInfo charKey = Console.ReadKey();
  404.                 switch (charKey.Key)
  405.                 {
  406.                     case ConsoleKey.Escape:
  407.                         end = 5;
  408.                         break;
  409.                 }
  410.             }
  411.  
  412.  
  413.  
  414.  
  415.         }
  416.  
  417.  
  418.  
  419.  
  420.         //string[] tempFiO = new string[FiO.Length + 3]; //Делаем массив про разбиваем так  0 элемент Фамилия, 1 Имя 2 Отчество 3 Фамилия... Чтобы мы могли реализовать поиск по фамилии
  421.         //string[] tempPos = new string[Pos.Length + 1];
  422.         //for (int i = na4FiO; i < na4FiO + 1; i++)
  423.         //{
  424.         //    Console.WriteLine("Фамилию имя и отчество через пробелы");
  425.         //    string line = Console.ReadLine();
  426.         //    String[] words = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
  427.         //    tempFiO[i] = words[0];
  428.         //    tempFiO[i + 1] = words[1];
  429.         //    tempFiO[i + 2] = words[2];
  430.         //}
  431.         //FiO = tempFiO;
  432.         //for (int i = na4Pos; i < na4Pos + 1; i++)
  433.         //{
  434.         //    Console.WriteLine("Введите Должность");
  435.         //    tempPos[i] = Console.ReadLine();
  436.  
  437.  
  438.         //}
  439.     }
  440. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement