Temabowl

lab_6

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