Advertisement
Temabowl

lab_9

Feb 15th, 2022
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.32 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace lab_9
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10.  
  11. List<Leaf> employees = new List<Leaf>();
  12.  
  13. Composite universities = new Composite("Университет");
  14. Composite UMU = new Composite("УМУ");
  15. Composite PFU = new Composite("ПФУ");
  16. Composite OK = new Composite("ОК");
  17. Composite Dep_training = new Composite("Учебный отдел");
  18. Composite Dep_OP = new Composite("Отдел по работе с ОП");
  19. Composite Dep_Accounting = new Composite("Бухгалтерия");
  20. for (int i = 1; i < 13; i++)
  21. {
  22. Leaf leaf = new Leaf();
  23. leaf.Name = "Сотрудник " + i;
  24. employees.Add(leaf);
  25. }
  26.  
  27. universities.Add(UMU);
  28. universities.Add(PFU);
  29. universities.Add(OK);
  30.  
  31. UMU.Add(Dep_training);
  32. Dep_training.Add(employees[0]);
  33. Dep_training.Add(employees[1]);
  34. Dep_training.Add(employees[2]);
  35. UMU.Add(Dep_OP);
  36. Dep_OP.Add(employees[3]);
  37. Dep_OP.Add(employees[4]);
  38.  
  39. PFU.Add(employees[5]);
  40. PFU.Add(employees[6]);
  41. PFU.Add(Dep_Accounting);
  42. Dep_Accounting.Add(employees[7]);
  43. Dep_Accounting.Add(employees[8]);
  44.  
  45. OK.Add(employees[9]);
  46. OK.Add(employees[10]);
  47. OK.Add(employees[11]);
  48.  
  49.  
  50.  
  51. Draw_Tree();
  52.  
  53. Console.WriteLine("1. Изменить фамилию сотрудника \n2. Изменить размер з/п одного сотрудника \n3. Повысить(понизить) з/п всем сотрудникам \n4. Вывести дынные пофамильно всех сотрудников и общую сумму затрат \n5. Вывести дерево");
  54. while (true)
  55. {
  56. switch (Console.ReadLine())
  57. {
  58. case "1":
  59. for (int i = 0; i < employees.Count; i++)
  60. {
  61. Console.WriteLine(i + 1 + ". " + employees[i].Name);
  62. }
  63. Console.WriteLine("Введите номер сотрудника");
  64. int name = Convert.ToInt32(Console.ReadLine());
  65. employees[name-1].ChangeName();
  66. break;
  67. case "2":
  68. for (int i = 0; i < employees.Count; i++)
  69. {
  70. Console.WriteLine(i + 1 + ". " + employees[i].Name + ". Зарплата: " + employees[i].salary);
  71. }
  72. Console.WriteLine("Введите номер сотрудника");
  73. int salary = Convert.ToInt32(Console.ReadLine());
  74. employees[salary - 1].ChangeSalary();
  75.  
  76. break;
  77. case "3":
  78. for (int i = 0; i < employees.Count; i++)
  79. {
  80. Console.WriteLine(i + 1 + ". " + employees[i].Name + ". Зарплата: " + employees[i].salary);
  81. }
  82. Console.WriteLine("Введите на сколько повысить/понизить зп всем сотрудникам (чтобы понизить - нужно добавить минус в начало строки)");
  83. int salary_all = Convert.ToInt32(Console.ReadLine());
  84. for (int i = 0; i < employees.Count; i++)
  85. {
  86. employees[i].salary += salary_all;
  87. }
  88. Console.WriteLine("Зарплата для всех сотрудников изменена!");
  89.  
  90. break;
  91. case "4":
  92. int sum = 0;
  93. for (int i = 0; i < employees.Count; i++)
  94. {
  95. sum += employees[i].salary;
  96. Console.WriteLine(i + 1 + ". " + employees[i].Name + ". Зарплата: " + employees[i].salary);
  97. }
  98.  
  99. Console.WriteLine("Общая сумма затрат: " + sum);
  100.  
  101. break;
  102. case "5":
  103. Draw_Tree();
  104. break;
  105. }
  106. }
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113. void Draw_Tree()
  114. {
  115. char space =' ';
  116. Console.WriteLine(universities.Name);
  117. Console.WriteLine(" " + UMU.Name);
  118. Console.WriteLine(" " + Dep_training.Name);
  119. Console.WriteLine(" " + employees[0].Name);
  120. Console.WriteLine(" " + employees[1].Name);
  121. Console.WriteLine(" " + employees[2].Name);
  122. Console.WriteLine(" " + Dep_OP.Name);
  123. Console.WriteLine(" " + employees[3].Name);
  124. Console.WriteLine(" " + employees[4].Name);
  125. Console.WriteLine(" " + PFU.Name);
  126. Console.WriteLine(" " + employees[5].Name);
  127. Console.WriteLine(" " + employees[6].Name);
  128. Console.WriteLine(" " + Dep_Accounting.Name);
  129. Console.WriteLine(" " + employees[7].Name);
  130. Console.WriteLine(" " + employees[8].Name);
  131. Console.WriteLine(" " + OK.Name);
  132. Console.WriteLine(" " + employees[9].Name);
  133. Console.WriteLine(" " + employees[10].Name);
  134. Console.WriteLine(" " + employees[11].Name);
  135. }
  136.  
  137. }
  138. }
  139.  
  140. abstract class Component
  141. {
  142. public string Name { get; set; }
  143. public abstract string Operation();
  144. public virtual void Add(Component component)
  145. {
  146. throw new NotImplementedException();
  147. }
  148. public virtual void Remove(Component component)
  149. {
  150. throw new NotImplementedException();
  151. }
  152. }
  153.  
  154. class Leaf : Component
  155. {
  156. public int salary;
  157.  
  158. public void ChangeSalary()
  159. {
  160. Console.WriteLine("Текущая зарплата: " + salary);
  161. Console.WriteLine("Введите зарплату: ");
  162. salary = Convert.ToInt32(Console.ReadLine());
  163. Console.WriteLine("Текущая зарплата: " + salary);
  164. }
  165.  
  166. public void ChangeName()
  167. {
  168. Console.WriteLine("Текущая фамилия: " + Name);
  169. Console.WriteLine("Введите Фамилию: ");
  170. Name = Console.ReadLine();
  171. Console.WriteLine("Текущая фамилия: " + Name);
  172. }
  173.  
  174. public override string Operation()
  175. {
  176. return Name;
  177. }
  178. }
  179.  
  180. class Composite : Component
  181. {
  182.  
  183. public Composite(string name)
  184. {
  185. this.Name = name;
  186. }
  187.  
  188. protected List<Component> _children = new List<Component>();
  189. public override void Add(Component component)
  190. {
  191. this._children.Add(component);
  192. }
  193.  
  194. public override void Remove(Component component)
  195. {
  196. this._children.Remove(component);
  197. }
  198. public override string Operation()
  199. {
  200. int i = 0;
  201. string result = "Branch(";
  202.  
  203. foreach (Component component in this._children)
  204. {
  205. result += component.Operation();
  206. if (i != this._children.Count - 1)
  207. {
  208. result += "+";
  209. }
  210. i++;
  211. }
  212.  
  213. return result + ")";
  214. }
  215.  
  216. public int CountChildren()
  217. {
  218. int i = 0;
  219. foreach(Component component in this._children)
  220. {
  221. i++;
  222. }
  223. return i;
  224. }
  225. }
  226. }
  227.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement