Advertisement
Temabowl

lab_4

Oct 26th, 2021
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.90 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace lab_4
  5. {
  6. class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. List<AbsWorker> workers_list = new List<AbsWorker>();
  11. Console.WriteLine("1. Создание сотрудника\n2. Вывести всех сотрудников\n3. Вывести сотрудника по номеру\n4. Вывести сотрудников по отделам");
  12. while (true)
  13. {
  14. try
  15. {
  16. switch (Console.ReadLine())
  17. {
  18. case "1":
  19. AbsWorker worker = CreateNewWorker();
  20. Console.WriteLine("Введите имя сотрудника");
  21. worker.Name = Console.ReadLine();
  22. Console.WriteLine("Введите дату рождения сотрудника (прим. 01.01.1900)");
  23. worker.Birthdate = Console.ReadLine();
  24. Console.WriteLine("Введите заработную плату сотрудника");
  25. worker.Salary = Convert.ToInt32(Console.ReadLine());
  26. Console.WriteLine(worker.GetType());
  27. workers_list.Add(worker);
  28. Console.WriteLine("Номер сотрудника: " + workers_list.IndexOf(worker));
  29. worker.GetInfo();
  30. break;
  31. case "2":
  32. foreach(AbsWorker item in workers_list)
  33. {
  34. Console.WriteLine("№ " + workers_list.IndexOf(item));
  35. item.GetInfo();
  36. }
  37. break;
  38. case "3":
  39. Console.WriteLine("Введите номер сотрудника");
  40. workers_list[Convert.ToInt32(Console.ReadLine())].GetInfo();
  41. break;
  42. case "4":
  43. Console.WriteLine("Какой отдел?");
  44. Console.WriteLine("1. Отдел кадров\n2. Планово-финансовое управление\n3. Учебнометодическое управление\n4. Международный отдел");
  45. switch (Console.ReadLine())
  46. {
  47. case "1":
  48. foreach(AbsWorker item in workers_list)
  49. {
  50. Console.WriteLine("Список сотрудников:");
  51. if (item.DepTitle == "Отдел кадров")
  52. {
  53. Console.WriteLine("№ " + workers_list.IndexOf(item));
  54. item.GetInfo();
  55. }
  56. }
  57. break;
  58. case "2":
  59. foreach (AbsWorker item in workers_list)
  60. {
  61. Console.WriteLine("Список сотрудников:");
  62. if (item.DepTitle == "Планово-финансовое управление")
  63. {
  64. Console.WriteLine("№ " + workers_list.IndexOf(item));
  65. item.GetInfo();
  66. }
  67. }
  68. break;
  69. case "3":
  70. foreach (AbsWorker item in workers_list)
  71. {
  72. Console.WriteLine("Список сотрудников:");
  73. if (item.DepTitle == "Учебнометодическое управление")
  74. {
  75. Console.WriteLine("№ " + workers_list.IndexOf(item));
  76. item.GetInfo();
  77. }
  78. }
  79. break;
  80. case "4":
  81. foreach (AbsWorker item in workers_list)
  82. {
  83. Console.WriteLine("Список сотрудников:");
  84. if (item.DepTitle == "Международный отдел")
  85. {
  86. Console.WriteLine("№ " + workers_list.IndexOf(item));
  87. item.GetInfo();
  88. }
  89. }
  90. break;
  91. }
  92. break;
  93. default:
  94. Console.WriteLine("Ошибка! Возврат к меню");
  95. break;
  96.  
  97. }
  98.  
  99. }
  100. catch (Exception e)
  101. {
  102. Console.WriteLine("Ошибка!");
  103. Console.WriteLine(e.Message);
  104. }
  105.  
  106. }
  107.  
  108. AbsWorker CreateNewWorker()
  109. {
  110. Console.WriteLine("Где будет находиться новый сотрудник?");
  111. Console.WriteLine("1. Отдел кадров\n2. Планово-финансовое управление\n3. Учебнометодическое управление\n4. Международный отдел");
  112. string temp = Console.ReadLine();
  113. Console.WriteLine(temp);
  114. Console.WriteLine("Должность сотрудника?");
  115. Console.WriteLine("1. Начальник отдела\n2. Заместитель начальника\n3. Служащий\n4. Стажер");
  116. temp += Console.ReadLine();
  117.  
  118. switch (temp)
  119. {
  120. case "11": { HRdep hrdep = new(); AbsWorker worker = hrdep.CreateHeadOfDep(); worker.DepTitle = "Отдел кадров"; return worker; }
  121. case "12": { HRdep hrdep = new(); AbsWorker worker = hrdep.CreateDeputyHeadOfDep(); worker.DepTitle = "Отдел кадров"; return worker; }
  122. case "13": { HRdep hrdep = new(); AbsWorker worker = hrdep.CreateEmployee(); worker.DepTitle = "Отдел кадров"; return worker; }
  123. case "14": { HRdep hrdep = new(); AbsWorker worker = hrdep.CreateIntern(); worker.DepTitle = "Отдел кадров"; return worker; }
  124. case "21": { PSdep psdep = new(); AbsWorker worker = psdep.CreateHeadOfDep(); worker.DepTitle = "Планово-финансовое управление"; return worker; }
  125. case "22": { PSdep psdep = new(); AbsWorker worker = psdep.CreateDeputyHeadOfDep(); worker.DepTitle = "Планово-финансовое управление"; return worker; }
  126. case "23": { PSdep psdep = new(); AbsWorker worker = psdep.CreateEmployee(); worker.DepTitle = "Планово-финансовое управление"; return worker; }
  127. case "24": { PSdep psdep = new(); AbsWorker worker = psdep.CreateIntern(); worker.DepTitle = "Планово-финансовое управление"; return worker; }
  128. case "31": { EMdep emdep = new(); AbsWorker worker = emdep.CreateHeadOfDep(); worker.DepTitle = "Учебно-методическое управление"; return worker; }
  129. case "32": { EMdep emdep = new(); AbsWorker worker = emdep.CreateDeputyHeadOfDep(); worker.DepTitle = "Учебно-методическое управление"; return worker; }
  130. case "33": { EMdep emdep = new(); AbsWorker worker = emdep.CreateEmployee(); worker.DepTitle = "Учебно-методическое управление"; return worker; }
  131. case "34": { EMdep emdep = new(); AbsWorker worker = emdep.CreateIntern(); worker.DepTitle = "Учебно-методическое управление"; return worker; }
  132. case "41": { INdep indep = new(); AbsWorker worker = indep.CreateHeadOfDep(); worker.DepTitle = "Международный отдел"; return worker; }
  133. case "42": { INdep indep = new(); AbsWorker worker = indep.CreateDeputyHeadOfDep(); worker.DepTitle = "Международный отдел"; return worker; }
  134. case "43": { INdep indep = new(); AbsWorker worker = indep.CreateEmployee(); worker.DepTitle = "Международный отдел"; return worker; }
  135. case "44": { INdep indep = new(); AbsWorker worker = indep.CreateIntern(); worker.DepTitle = "Международный отдел"; return worker; }
  136. }
  137. return null;
  138. }
  139.  
  140. }
  141.  
  142.  
  143.  
  144. //Абстрактная фабрика
  145. abstract class AbstractFactory
  146. {
  147. public abstract HeadOfDep CreateHeadOfDep();
  148. public abstract DeputyHeadOfDep CreateDeputyHeadOfDep();
  149. public abstract Employee CreateEmployee();
  150. public abstract Intern CreateIntern();
  151. }
  152.  
  153. //Конкретная фабрика HRdep
  154. class HRdep : AbstractFactory
  155. {
  156. public override HeadOfDep CreateHeadOfDep()
  157. {
  158. return new HRdepHeadOfDep();
  159. }
  160.  
  161. public override DeputyHeadOfDep CreateDeputyHeadOfDep()
  162. {
  163. return new HRdepDeputyHeadOfDep();
  164. }
  165.  
  166. public override Employee CreateEmployee()
  167. {
  168. return new HRdepEmployee();
  169. }
  170.  
  171. public override Intern CreateIntern()
  172. {
  173. return new HRdepIntern();
  174. }
  175. }
  176.  
  177. //Конкретная фабрика PSdep
  178. class PSdep : AbstractFactory
  179. {
  180. public override HeadOfDep CreateHeadOfDep()
  181. {
  182. return new PSdepHeadOfDep();
  183. }
  184.  
  185. public override DeputyHeadOfDep CreateDeputyHeadOfDep()
  186. {
  187. return new PSdepDeputyHeadOfDep();
  188. }
  189. public override Employee CreateEmployee()
  190. {
  191. return new PSdepEmployee();
  192. }
  193. public override Intern CreateIntern()
  194. {
  195. return new PSdepIntern();
  196. }
  197. }
  198.  
  199. //Конкретная фабрика EMped
  200. class EMdep : AbstractFactory
  201. {
  202. public override HeadOfDep CreateHeadOfDep()
  203. {
  204. return new EMdepHeadOfDep();
  205. }
  206.  
  207. public override DeputyHeadOfDep CreateDeputyHeadOfDep()
  208. {
  209. return new EMdepDeputyHeadOfDep();
  210. }
  211. public override Employee CreateEmployee()
  212. {
  213. return new EMdepEmployee();
  214. }
  215. public override Intern CreateIntern()
  216. {
  217. return new EMdepIntern();
  218. }
  219. }
  220.  
  221. //Конкретная фабрика INdep
  222. class INdep : AbstractFactory
  223. {
  224. public override HeadOfDep CreateHeadOfDep()
  225. {
  226. return new INdepHeadOfDep();
  227. }
  228.  
  229. public override DeputyHeadOfDep CreateDeputyHeadOfDep()
  230. {
  231. return new INdepDeputyHeadOfDep();
  232. }
  233. public override Employee CreateEmployee()
  234. {
  235. return new INdepEmployee();
  236. }
  237. public override Intern CreateIntern()
  238. {
  239. return new INdepIntern();
  240. }
  241. }
  242.  
  243. // Супер сотрудник
  244. class AbsWorker
  245. {
  246. private string name;
  247. private string birthdate;
  248. private float salary;
  249. private string deptitle;
  250. public string Name
  251. {
  252. get { return name; }
  253. set { name = value; }
  254. }
  255. public string Birthdate
  256. {
  257. get { return birthdate; }
  258. set { birthdate = value; }
  259. }
  260. public float Salary
  261. {
  262. get { return salary; }
  263. set { salary = value; }
  264. }
  265. public string DepTitle
  266. {
  267. get { return deptitle; }
  268. set { deptitle = value; }
  269. }
  270.  
  271. public void GetInfo()
  272. {
  273. Console.WriteLine($"Имя: {name} \nДата рождения: {birthdate} \nЗарплата: {salary} \nНазвание отдела: {deptitle}");
  274. }
  275. }
  276.  
  277. //Абстрактные сотрудники
  278. abstract class HeadOfDep : AbsWorker
  279. {}
  280. abstract class DeputyHeadOfDep : AbsWorker
  281. { }
  282. abstract class Employee : AbsWorker
  283. { }
  284. abstract class Intern : AbsWorker
  285. { }
  286. //Контректные сотрудники HRdep
  287. class HRdepHeadOfDep : HeadOfDep
  288. { }
  289. class HRdepDeputyHeadOfDep : DeputyHeadOfDep
  290. { }
  291. class HRdepEmployee : Employee
  292. { }
  293. class HRdepIntern : Intern
  294. { }
  295. //Контректные сотрудники PSdep
  296. class PSdepHeadOfDep : HeadOfDep
  297. { }
  298. class PSdepDeputyHeadOfDep : DeputyHeadOfDep
  299. { }
  300. class PSdepEmployee : Employee
  301. { }
  302. class PSdepIntern : Intern
  303. { }
  304. //Контректные сотрудники EMdep
  305. class EMdepHeadOfDep : HeadOfDep
  306. { }
  307. class EMdepDeputyHeadOfDep : DeputyHeadOfDep
  308. { }
  309. class EMdepEmployee : Employee
  310. { }
  311. class EMdepIntern : Intern
  312. { }
  313. //Контректные сотрудники INdep
  314. class INdepHeadOfDep : HeadOfDep
  315. { }
  316. class INdepDeputyHeadOfDep : DeputyHeadOfDep
  317. { }
  318. class INdepEmployee : Employee
  319. { }
  320. class INdepIntern : Intern
  321. { }
  322. }
  323. }
  324.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement