Advertisement
Temabowl

lab_10

Feb 18th, 2022
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.06 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace lab_10
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. List<Student> EMA181 = new();
  12. List<Student> EMA182 = new();
  13.  
  14. EMA181.Add(new Student("Алпатов Никита Сергеевич"));
  15. EMA181.Add(new Student("Бирюкова Алена Сергеевна"));
  16. EMA181.Add(new Student("Вотинов Алексей Сергеевич"));
  17. EMA181.Add(new Student("Говорухин Алексей Геннадьевич"));
  18. EMA181.Add(new Student("Дубовкин Никита Сергеевич"));
  19.  
  20. EMA182.Add(new Student("Касов Артем Михайлович"));
  21. EMA182.Add(new Student("Киселев Александр Денисович"));
  22. EMA182.Add(new Student("Коваленко Владимир Вячеславович"));
  23. EMA182.Add(new Student("Колычев Вадим Алексеевич"));
  24. EMA182.Add(new Student("Кондовин Виктор Ильич"));
  25.  
  26.  
  27.  
  28.  
  29. Console.WriteLine("*e* или *E* Добавить студента в группу");
  30. Console.WriteLine("*с* или *С* Копировать студента в группу");
  31. Console.WriteLine("*d* или *D* Удалить студента из группы");
  32. Console.WriteLine("*x* или *X* Перенести студента из группы в другую группу");
  33.  
  34. Invoker invoker = new();
  35. Receiver receiver = new();
  36.  
  37. while (true)
  38. {
  39.  
  40. Console.WriteLine("\nЭМА-18-1");
  41. DrawGroup(EMA181);
  42. Console.WriteLine("\nЭМА-18-2");
  43. DrawGroup(EMA182);
  44.  
  45. string something = Console.ReadLine().ToLower();
  46.  
  47. switch (something)
  48. {
  49. case "e":
  50. Console.WriteLine("В какую группу добавить студента? \n1. ЭМА-18-1\n2. ЭМА-18-2");
  51. invoker._AddStudent(new ComplexCommand(receiver, EMA181, EMA182, Console.ReadLine()));
  52. invoker.DoSomething(something);
  53. break;
  54. case "c":
  55. Console.WriteLine("В какую группу будем копировать студента? \n1. ЭМА-18-1\n2. ЭМА-18-2");
  56. invoker._CopyStudent(new ComplexCommand(receiver, EMA181, EMA182, Console.ReadLine()));
  57. invoker.DoSomething(something);
  58. break;
  59. case "d":
  60. Console.WriteLine("Из какой группы удалить студента? \n1. ЭМА-18-1 \n2. ЭМА-18-2");
  61. string group_name = Console.ReadLine();
  62. if (group_name == "1")
  63. {
  64. invoker._RemoveStudent(new SimpleCommand(EMA181));
  65. invoker.DoSomething(something);
  66. }
  67. if (group_name == "2")
  68. {
  69. invoker._RemoveStudent(new SimpleCommand(EMA182));
  70. invoker.DoSomething(something);
  71. }
  72. break;
  73. case "x":
  74. Console.WriteLine("Из какой группы будем переносить студента? \n1. ЭМА-18-1 \n2. ЭМА-18-2");
  75. invoker._ShiftStudent(new ComplexCommand(receiver, EMA181, EMA182, Console.ReadLine()));
  76. invoker.DoSomething(something);
  77. break;
  78.  
  79.  
  80. }
  81. }
  82.  
  83.  
  84. void DrawGroup(List<Student> group)
  85. {
  86. for (int i = 0; i < group.Count; i++)
  87. {
  88. Console.WriteLine(i + ". " + group[i].Name);
  89. }
  90. }
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97. }
  98. }
  99. class Invoker // отправитель
  100. {
  101. private Command _addStudent;
  102. private Command _copyStudent;
  103. private Command _removeStudent;
  104. private Command _shiftStudent;
  105.  
  106. public void _AddStudent(Command command)
  107. {
  108. this._addStudent = command;
  109. }
  110. public void _CopyStudent(Command command)
  111. {
  112. this._copyStudent = command;
  113. }
  114. public void _RemoveStudent(Command command)
  115. {
  116. this._removeStudent = command;
  117. }
  118. public void _ShiftStudent(Command command)
  119. {
  120. this._shiftStudent = command;
  121. }
  122.  
  123.  
  124. public void DoSomething(string something)
  125. {
  126. if (something == "e")
  127. {
  128. this._addStudent.Excecute(0);
  129. }
  130.  
  131. if (something == "c")
  132. {
  133. this._copyStudent.Excecute(1);
  134. }
  135.  
  136. if (something == "d")
  137. {
  138. this._removeStudent.Excecute(2);
  139. }
  140.  
  141. if (something == "x")
  142. {
  143. this._shiftStudent.Excecute(3);
  144. }
  145.  
  146. }
  147.  
  148. }
  149.  
  150. public interface Command // абстрактная команда
  151. {
  152. void Excecute(int com);
  153. }
  154.  
  155. class SimpleCommand : Command // Простая команда, удалить студента
  156. {
  157. private List<Student> _students = new();
  158. public SimpleCommand(List<Student> students)
  159. {
  160. this._students = students;
  161. }
  162.  
  163. public void Excecute(int com)
  164. {
  165.  
  166. for (int i = 0; i < _students.Count; i++)
  167. {
  168. Console.WriteLine(i + ". " + _students[i].Name);
  169. }
  170.  
  171. Console.WriteLine("Введите номер студента, которого нужно удалить");
  172. int temp = Convert.ToInt32(Console.ReadLine());
  173. _students.RemoveAt(temp);
  174. }
  175. }
  176.  
  177. class ComplexCommand : Command // Сложная команда
  178. {
  179.  
  180. private Receiver _receiver;
  181. private List<Student> _group1;
  182. private List<Student> _group2;
  183. private string _choise;
  184.  
  185. public ComplexCommand(Receiver receiver, List<Student> group1, List<Student> group2, string choise)
  186. {
  187. this._receiver = receiver;
  188. this._group1 = group1;
  189. this._group2 = group2;
  190. this._choise = choise;
  191. }
  192.  
  193. public void Excecute(int com)
  194. {
  195. if (com == 0)
  196. {
  197. this._receiver.AddStudent(this._group1, this._group2, this._choise);
  198. }
  199. if (com == 1)
  200. {
  201. this._receiver.CopyStudent(this._group1, this._group2, this._choise);
  202. }
  203. if (com == 3)
  204. {
  205. this._receiver.ShiftStudent(this._group1, this._group2, this._choise);
  206. }
  207. }
  208. }
  209.  
  210. class Receiver // Получатель
  211. {
  212. public int AddStudent(List<Student> group1, List<Student> group2, string choice)
  213. {
  214. Console.WriteLine("Введите ФИО студента (Иванов Иван Иванович)");
  215.  
  216. if (choice != "1" && choice != "2")
  217. {
  218. Console.WriteLine("Ошибка при добавлении студента!");
  219. return 1;
  220. }
  221.  
  222. Student student = new Student(Console.ReadLine());
  223. if (choice == "1")
  224. {
  225. group1.Add(student);
  226. }
  227. if (choice == "2")
  228. {
  229. group2.Add(student);
  230. }
  231. return 1;
  232. }
  233.  
  234. public void CopyStudent(List<Student> group1, List<Student> group2, string choice)
  235. {
  236. List<Student> students = new();
  237. students.AddRange(group1);
  238. students.AddRange(group2);
  239. for (int i = 0; i < students.Count; i++)
  240. {
  241. Console.WriteLine(i + ". " + students[i].Name);
  242. }
  243.  
  244. Console.WriteLine("Кого копировать? Введите номер.");
  245. if (choice == "1")
  246. {
  247. int number = Convert.ToInt32(Console.ReadLine());
  248. group1.Add(students[number]);
  249. }
  250. if (choice == "2")
  251. {
  252. int number = Convert.ToInt32(Console.ReadLine());
  253. group2.Add(students[number]);
  254. }
  255. }
  256. public void ShiftStudent(List<Student> group1, List<Student> group2, string choice)
  257. {
  258. Console.WriteLine("Кого перенести в другую группу? Введите номер.");
  259. string name = "";
  260. int number = 0;
  261.  
  262. if (choice == "1")
  263. {
  264. for (int i = 0; i < group1.Count; i++)
  265. {
  266. Console.WriteLine(i + ". " + group1[i].Name);
  267. }
  268. number = Convert.ToInt32(Console.ReadLine());
  269. name = group1[number].Name;
  270. group1.RemoveAt(number);
  271. group2.Add(new Student(name));
  272. }
  273. if (choice == "2")
  274. {
  275. for (int i = 0; i < group1.Count; i++)
  276. {
  277. Console.WriteLine(i + ". " + group1[i].Name);
  278. }
  279. number = Convert.ToInt32(Console.ReadLine());
  280. name = group2[number].Name;
  281. group2.RemoveAt(number);
  282. group1.Add(new Student(name));
  283. }
  284. }
  285. }
  286.  
  287. class Student // Студент
  288. {
  289. public string Name;
  290. public Student(string name)
  291. {
  292. Name = name;
  293. }
  294.  
  295. }
  296. }
  297.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement