Advertisement
Guest User

C# Work with classes,Employee

a guest
Sep 23rd, 2021
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 25.70 KB | None | 0 0
  1. /* Задание:
  2. Определить класс Employee (сотрудник), содержащий поля:
  3. Ф.И.О. сотрудника, должность, дата рождения, оклад, отдел, стаж, статус.
  4. Создать методы, позволяющие:
  5. А) переводить сотрудника на новую должность;
  6. Б) переводить сотрудника в другой отдел;
  7. В) менять стаж;
  8. Г) менять оклад;
  9. Д) увольнять сотрудника, отправлять в командировку, в отпуск, на
  10. больничный, выводить с больничного, меняя при этом статус сотрудника. По
  11. умолчанию статус имеет значение «Работает»;
  12. Е) выводить информацию о конкретном сотруднике
  13.  
  14. По собственной инициативе я сделал больше чем описано в задании, уверен что за этим последовало множество ошибок и нелогичностей
  15. но сам я еще не в силах это понять.
  16. Программа не проверяет правильность ввода поскольку я еще не освоил это знание.
  17. Вопросы
  18. 55-95 - Нормально ли реализованый функции? Возможно можно это сделать красивее и правильнее с помощью наследования?
  19. 136-454 - Насколько идея двухуровневого меню реализованного с помощью вложенных switch жизнеспособна, и как это можно изменить?
  20. Как правильно делать меню такого формата?
  21. 136,150,164... e.t.c - Насколько тупо заводить такие переменные в каждом кейсе? И как это исправить?
  22. 431 - Правильный ли офоромлен выход из программы?
  23.  */
  24. using System;
  25.  
  26. namespace F1
  27. {
  28.     class Employee
  29.     {
  30.         private string Birthdate { get; set; }   //Дата рождения
  31.         private string Fullname { get; set; }    //ФИО
  32.         private string Department { get; set; }  //Отдел
  33.         private string Position { get; set; }    // Должность
  34.         private int Salary { get; set; }         //Зарплата
  35.         private int Expirience { get; set; }     //Стаж
  36.         private string Status { get; set; }      //Состояние
  37.  
  38.         private readonly string[] StatusStorage = new string[5] //Массив доступных для изменения статусов
  39.         {
  40.           "Работает",
  41.           "В отпуске",
  42.           "В командировке",
  43.           "На больничном",
  44.           "Уволен"
  45.         };
  46.        
  47.         //Конструктор
  48.         public Employee(string fullname, string department, int salary, int expirience, string pos, string birthdate)
  49.         {
  50.             this.Fullname = fullname;
  51.             this.Department = department;
  52.             this.Salary = salary;
  53.             this.Expirience = expirience;
  54.             this.Position = pos;
  55.             this.Birthdate = birthdate;
  56.             this.Status = StatusStorage[0];
  57.         }
  58.         public Employee()
  59.         {
  60.             this.Fullname = "0";
  61.             this.Department = "0";
  62.             this.Salary = 0;
  63.             this.Expirience = 0;
  64.             this.Position = "0";
  65.             this.Birthdate = "0";
  66.         }
  67.         //Напечатать ФИО
  68.         public void PrintName()
  69.         {
  70.             Console.WriteLine(Fullname);
  71.         }
  72.         //Напечатать полную информацию
  73.         public void PrintInfo()
  74.         {
  75.             Console.WriteLine($"ФИО: {Fullname}\nДата рождения: {Birthdate}\nДолножсть: {Position}\nОтдел: {Department}\nЗарплата: {Salary}\nСтаж: {Expirience}\nСтатус: {Status}");
  76.         }
  77.         //Поменять должность
  78.         public void SetNewPos()
  79.         {
  80.             Console.Write($"Введите должность для {Fullname}\nТекущая: {Position}\nНовая: ");
  81.             this.Position = Console.ReadLine();
  82.         }
  83.         //Поменять отдел
  84.         public void SetNewDep()
  85.         {
  86.             Console.Write($"Введите новый отдел для {Fullname}\nТекущий: {Department}\nНовый: "); ;
  87.             this.Department = Console.ReadLine();
  88.         }
  89.         //Поменять стаж
  90.         public void SetNewExp()
  91.         {
  92.             Console.Write($"Введите новый стаж для {Fullname}\nТекущий: {Expirience}\nНовый: ");
  93.             this.Expirience = int.Parse(Console.ReadLine());
  94.         }
  95.         //Поменять зарплату
  96.         public void SetNewSalary()
  97.         {
  98.             Console.Write($"Введите новую зарплату для {Fullname}\nТекущая: {Salary}\nНовая: ");
  99.             this.Salary = int.Parse(Console.ReadLine());
  100.         }
  101.         //Поменять статус
  102.         public void SetNewStatus()
  103.         {
  104.             Console.WriteLine("Доступные статусы:");
  105.             Console.WriteLine($"1 {StatusStorage[0]}\n2 {StatusStorage[1]}\n3 {StatusStorage[2]}\n4 {StatusStorage[3]}\n5 {StatusStorage[4]}");
  106.             Console.Write($"Выберите новый статус для {Fullname}\nТекущий: {Status}\nНовый: ");
  107.             this.Status = StatusStorage[int.Parse(Console.ReadLine()) - 1];
  108.         }
  109.     }
  110.     class Program
  111.     {
  112.         static void Main(string[] args)
  113.         {
  114.             //Объявляем массив экземпляров класса и инициализируем его
  115.             var Employers = new[] {
  116.                 new Employee("Михаил Евгеньевич Артеменко","IT",50000,5,"Специалист","14.11.2002"),
  117.                 new Employee("Александр Владимирович Семиренко","IT",90000,7,"Старший Специалист","14.05.1972"),
  118.                 new Employee("Николай Артемович Васнецов","IT",40000,5,"Младший Специалист","24.07.1992"),
  119.                 new Employee("Сергей Артурович Михайлюк","IT",1500000,5,"Lead","09.01.1982"),
  120.                 new Employee(),
  121.             };
  122.             //Бесконечный цикл для работы меню
  123.             for (; ; )
  124.             {
  125.                 Console.Clear();     //Очищает консоль после отработки функции
  126.                 int input;
  127.                 Console.WriteLine("Выберите функцию");
  128.                 Console.WriteLine("1 Получить информацию");
  129.                 Console.WriteLine("2 Изменить должность");
  130.                 Console.WriteLine("3 Измеить отдел");
  131.                 Console.WriteLine("4 Изменить стаж");
  132.                 Console.WriteLine("5 Изменить зарплату");
  133.                 Console.WriteLine("6 Изменить статус");
  134.                 Console.WriteLine("0 Выход");
  135.                 //Двух уровневое меню реализованное c помощью вложенных switch
  136.                 input = Convert.ToInt32(Console.ReadLine());
  137.                 switch (input)
  138.                 {
  139.                     case 1:
  140.                         int c1input;
  141.                         Console.WriteLine("Выберите количество \n1 Все \n2 Один \n3 Несколько");
  142.                         c1input = Convert.ToInt32(Console.ReadLine());
  143.                         switch (c1input)
  144.                         {
  145.                             case 1:
  146.                                 for (int i = 0; i < Employers.Length; i++)
  147.                                 {
  148.                                     Employers[i].PrintInfo();
  149.                                     Console.WriteLine("___________________________");
  150.                                 }
  151.                                 Console.ReadKey();  //Костыль который не позволяет моментально очистить вывод
  152.                                 break;
  153.                             case 2:
  154.                                 int c12input;
  155.                                 //Вывод имен сотрудников для выбора
  156.                                 for (int i = 0; i < Employers.Length; i++)
  157.                                 {
  158.                                     Console.Write(i + 1 + " ");
  159.                                     Employers[i].PrintName();
  160.                                 }
  161.                                 Console.WriteLine("Выберите сотрудника");
  162.                                 c12input = Convert.ToInt32(Console.ReadLine());
  163.                                 Employers[c12input - 1].PrintInfo();
  164.                                 Console.WriteLine("___________________________");
  165.                                 Console.ReadKey();  //Костыль который не позволяет моментально очистить вывод
  166.                                 break;
  167.                             case 3:
  168.                                 int c13input;
  169.                                 Console.WriteLine("Выберите сотрудника");
  170.                                 Console.WriteLine("0 для возврата в предыдущее меню\n-------");
  171.                                 //Вывод имен сотрудников для выбора
  172.                                 for (int i = 0; i < Employers.Length; i++)
  173.                                 {
  174.                                     Console.Write(i + 1 + " ");
  175.                                     Employers[i].PrintName();
  176.                                 }
  177.                                 Console.WriteLine("___________________________");
  178.                                 bool flag = true;
  179.                                 while (flag) //пока не введен 0, можно вводить индексы сотрудников
  180.                                 {
  181.                                     c13input = Convert.ToInt32(Console.ReadLine());
  182.                                     if (c13input != 0)
  183.                                     {
  184.                                         Employers[c13input - 1].PrintInfo();
  185.                                         Console.WriteLine("___________________________");
  186.                                     }
  187.                                     else
  188.                                         flag = false;
  189.                                 }
  190.                                 break;
  191.                         }
  192.                         break;
  193.                     case 2:
  194.                         int c2input;
  195.                         Console.WriteLine("Выберите количество \n1 Все \n2 Один \n3 Несколько");
  196.                         c2input = Convert.ToInt32(Console.ReadLine());
  197.                         switch (c2input)
  198.                         {
  199.                             case 1:
  200.                                 //Вывод имен сотрудников для выбора
  201.                                 for (int i = 0; i < Employers.Length; i++)
  202.                                 {
  203.                                     Employers[i].SetNewPos();
  204.                                     Console.WriteLine("\n___________________________");
  205.                                 }
  206.                                 break;
  207.                             case 2:
  208.                                 int c22input;
  209.                                 //Вывод имен сотрудников для выбора
  210.                                 for (int i = 0; i < Employers.Length; i++)
  211.                                 {
  212.                                     Console.Write(i + 1 + " ");
  213.                                     Employers[i].PrintName();
  214.                                 }
  215.                                 Console.WriteLine("Выберите сотрудника");
  216.                                 c22input = Convert.ToInt32(Console.ReadLine());
  217.                                 Employers[c22input - 1].SetNewPos();
  218.                                 Console.WriteLine("___________________________");
  219.                                 break;
  220.                             case 3:
  221.                                 int c23input;
  222.  
  223.                                 Console.WriteLine("Выберите сотрудника");
  224.                                 Console.WriteLine("0 для возврата в предыдущее меню\n-------");
  225.                                 //Вывод имен сотрудников для выбора
  226.                                 for (int i = 0; i < Employers.Length; i++)
  227.                                 {
  228.                                     Console.Write(i + 1 + " ");
  229.                                     Employers[i].PrintName();
  230.                                 }
  231.                                 bool flag = true;
  232.                                 while (flag) //пока не введен 0, можно вводить индексы сотрудников
  233.                                 {
  234.  
  235.                                     c23input = Convert.ToInt32(Console.ReadLine());
  236.                                     if (c23input != 0)
  237.                                     {
  238.                                         Employers[c23input - 1].SetNewPos();
  239.                                         Console.WriteLine("___________________________");
  240.                                     }
  241.                                     else
  242.                                         flag = false;
  243.                                 }
  244.                                 break;
  245.                         }
  246.                         break;
  247.                     case 3:
  248.                         int c3input;
  249.                         Console.WriteLine("Выберите количество \n1 Все \n2 Один \n3 Несколько");
  250.                         c3input = Convert.ToInt32(Console.ReadLine());
  251.                         switch (c3input)
  252.                         {
  253.                             case 1:
  254.                                 for (int i = 0; i < Employers.Length; i++)
  255.                                 {
  256.                                     Employers[i].SetNewDep();
  257.                                     Console.WriteLine("\n___________________________");
  258.                                 }
  259.                                 break;
  260.                             case 2:
  261.                                 int c32input;
  262.                                 for (int i = 0; i < Employers.Length; i++)
  263.                                 {
  264.                                     Console.Write(i + 1 + " ");
  265.                                     Employers[i].PrintName();
  266.                                 }
  267.                                 Console.Write("Выберите сотрудника: ");
  268.                                 c32input = Convert.ToInt32(Console.ReadLine());
  269.                                 Employers[c32input - 1].SetNewDep();
  270.                                 Console.WriteLine("___________________________");
  271.                                 break;
  272.                             case 3:
  273.                                 int c33input;
  274.  
  275.                                 Console.WriteLine("Выберите сотрудника");
  276.                                 Console.WriteLine("0 для возврата в предыдущее меню\n-------");
  277.                                 for (int i = 0; i < Employers.Length; i++) //выводит ФИО сотрудника
  278.                                 {
  279.                                     Console.Write(i + 1 + " ");
  280.                                     Employers[i].PrintName();
  281.                                 }
  282.                                 bool flag = true;
  283.                                 while (flag) //пока не введен 0, можно вводить индексы сотрудников
  284.                                 {
  285.  
  286.                                     c33input = Convert.ToInt32(Console.ReadLine());
  287.                                     if (c33input != 0)
  288.                                     {
  289.                                         Employers[c33input - 1].SetNewDep();
  290.                                         Console.WriteLine("___________________________");
  291.                                     }
  292.                                     else
  293.                                         flag = false;
  294.                                 }
  295.                                 break;
  296.                         }
  297.                         break;
  298.                     case 4:
  299.                         int c4input;
  300.                         Console.WriteLine("Выберите количество \n1 Все \n2 Один \n3 Несколько");
  301.                         c4input = Convert.ToInt32(Console.ReadLine());
  302.                         switch (c4input)
  303.                         {
  304.                             case 1:
  305.                                 for (int i = 0; i < Employers.Length; i++)
  306.                                 {
  307.                                     Employers[i].SetNewExp();
  308.                                     Console.WriteLine("\n___________________________");
  309.                                 }
  310.                                 break;
  311.                             case 2:
  312.                                 int c42input;
  313.                                 for (int i = 0; i < Employers.Length; i++)
  314.                                 {
  315.                                     Console.Write(i + 1 + " ");
  316.                                     Employers[i].PrintName();
  317.                                 }
  318.                                 Console.WriteLine("Выберите сотрудника");
  319.                                 c42input = Convert.ToInt32(Console.ReadLine());
  320.                                 Employers[c42input - 1].SetNewExp();
  321.                                 Console.WriteLine("___________________________");
  322.                                 break;
  323.                             case 3:
  324.                                 int c43input;
  325.  
  326.                                 Console.WriteLine("Выберите сотрудника");
  327.                                 Console.WriteLine("0 для возврата в предыдущее меню\n-------");
  328.                                 for (int i = 0; i < Employers.Length; i++) //выводит ФИО сотрудника
  329.                                 {
  330.                                     Console.Write(i + 1 + " ");
  331.                                     Employers[i].PrintName();
  332.                                 }
  333.                                 bool flag = true;
  334.                                 while (flag) //пока не введен 0, можно вводить индексы сотрудников
  335.                                 {
  336.  
  337.                                     c43input = Convert.ToInt32(Console.ReadLine());
  338.                                     if (c43input != 0)
  339.                                     {
  340.                                         Employers[c43input - 1].SetNewExp();
  341.                                         Console.WriteLine("___________________________");
  342.                                     }
  343.                                     else
  344.                                         flag = false;
  345.                                 }
  346.                                 break;
  347.                         }
  348.                         break;
  349.                     case 5:
  350.                         int c5input;
  351.                         Console.WriteLine("Выберите количество \n1 Все \n2 Один \n3 Несколько");
  352.                         c5input = Convert.ToInt32(Console.ReadLine());
  353.                         switch (c5input)
  354.                         {
  355.                             case 1:
  356.                                 for (int i = 0; i < Employers.Length; i++)
  357.                                 {
  358.                                     Employers[i].SetNewSalary();
  359.                                     Console.WriteLine("\n___________________________");
  360.                                 }
  361.                                 break;
  362.                             case 2:
  363.                                 int c52input;
  364.                                 for (int i = 0; i < Employers.Length; i++)
  365.                                 {
  366.                                     Console.Write(i + 1 + " ");
  367.                                     Employers[i].PrintName();
  368.                                 }
  369.                                 Console.WriteLine("Выберите сотрудника");
  370.                                 c52input = Convert.ToInt32(Console.ReadLine());
  371.                                 Employers[c52input - 1].SetNewSalary();
  372.                                 Console.WriteLine("___________________________");
  373.                                 break;
  374.                             case 3:
  375.                                 int c53input;
  376.                                
  377.                                 Console.WriteLine("Выберите сотрудника");
  378.                                 Console.WriteLine("0 для возврата в предыдущее меню\n-------");
  379.                                 for (int i = 0; i < Employers.Length; i++) //выводит ФИО сотрудника
  380.                                 {
  381.                                     Console.Write(i + 1 + " ");
  382.                                     Employers[i].PrintName();
  383.                                 }
  384.                                 bool flag = true;
  385.                                 while (flag) //пока не введен 0, можно вводить индексы сотрудников
  386.                                 {
  387.  
  388.                                     c53input = Convert.ToInt32(Console.ReadLine());
  389.                                     if (c53input != 0)
  390.                                     {
  391.                                         Employers[c53input - 1].SetNewSalary();
  392.                                         Console.WriteLine("___________________________");
  393.                                     }
  394.                                     else
  395.                                         flag = false;
  396.                                 }
  397.                                 break;
  398.                         }
  399.                         break;
  400.                     case 6:
  401.                         int c6input;
  402.                         Console.WriteLine("Выберите количество \n1 Все \n2 Один \n3 Несколько");
  403.                         c6input = Convert.ToInt32(Console.ReadLine());
  404.                         switch (c6input)
  405.                         {
  406.                             case 1:
  407.                                 for (int i = 0; i < Employers.Length; i++)
  408.                                 {
  409.                                     Employers[i].SetNewStatus();
  410.                                     Console.WriteLine("\n___________________________\n");
  411.                                 }
  412.                                 break;
  413.                             case 2:
  414.                                 int c62input;
  415.                                 for (int i = 0; i < Employers.Length; i++)
  416.                                 {
  417.                                     Console.Write(i + 1 + " ");
  418.                                     Employers[i].PrintName();
  419.                                 }
  420.                                 Console.WriteLine("Выберите сотрудника");
  421.                                 c62input = Convert.ToInt32(Console.ReadLine());
  422.                                 Employers[c62input - 1].SetNewStatus();
  423.                                 Console.WriteLine("___________________________");
  424.                                 break;
  425.                             case 3:
  426.                                 int c63input;
  427.                                
  428.                                 Console.WriteLine("Выберите сотрудника");
  429.                                 Console.WriteLine("0 для возврата в предыдущее меню\n-------");
  430.                                 for (int i = 0; i < Employers.Length; i++) //выводит ФИО сотрудника
  431.                                 {
  432.                                     Console.Write(i + 1 + " ");
  433.                                     Employers[i].PrintName();
  434.                                 }
  435.                                 bool flag = true;
  436.                                 while (flag) //пока не введен 0, можно вводить индексы сотрудников
  437.                                 {
  438.  
  439.                                     c63input = Convert.ToInt32(Console.ReadLine());
  440.                                     if (c63input != 0)
  441.                                     {
  442.                                         Employers[c63input - 1].SetNewStatus();
  443.                                         Console.WriteLine("___________________________");
  444.                                     }
  445.                                     else
  446.                                         flag = false;
  447.                                 }
  448.                                 break;
  449.                         }
  450.                         break;
  451.                     case 0:
  452.                         Environment.Exit(0);
  453.                         break;
  454.                 }
  455.             }
  456.         }
  457.     }
  458. }
  459.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement