Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace lab_10
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<Student> EMA181 = new();
- List<Student> EMA182 = new();
- EMA181.Add(new Student("Алпатов Никита Сергеевич"));
- EMA181.Add(new Student("Бирюкова Алена Сергеевна"));
- EMA181.Add(new Student("Вотинов Алексей Сергеевич"));
- EMA181.Add(new Student("Говорухин Алексей Геннадьевич"));
- EMA181.Add(new Student("Дубовкин Никита Сергеевич"));
- EMA182.Add(new Student("Касов Артем Михайлович"));
- EMA182.Add(new Student("Киселев Александр Денисович"));
- EMA182.Add(new Student("Коваленко Владимир Вячеславович"));
- EMA182.Add(new Student("Колычев Вадим Алексеевич"));
- EMA182.Add(new Student("Кондовин Виктор Ильич"));
- Console.WriteLine("*e* или *E* Добавить студента в группу");
- Console.WriteLine("*с* или *С* Копировать студента в группу");
- Console.WriteLine("*d* или *D* Удалить студента из группы");
- Console.WriteLine("*x* или *X* Перенести студента из группы в другую группу");
- Invoker invoker = new();
- Receiver receiver = new();
- while (true)
- {
- Console.WriteLine("\nЭМА-18-1");
- DrawGroup(EMA181);
- Console.WriteLine("\nЭМА-18-2");
- DrawGroup(EMA182);
- string something = Console.ReadLine().ToLower();
- switch (something)
- {
- case "e":
- Console.WriteLine("В какую группу добавить студента? \n1. ЭМА-18-1\n2. ЭМА-18-2");
- invoker._AddStudent(new ComplexCommand(receiver, EMA181, EMA182, Console.ReadLine()));
- invoker.DoSomething(something);
- break;
- case "c":
- Console.WriteLine("В какую группу будем копировать студента? \n1. ЭМА-18-1\n2. ЭМА-18-2");
- invoker._CopyStudent(new ComplexCommand(receiver, EMA181, EMA182, Console.ReadLine()));
- invoker.DoSomething(something);
- break;
- case "d":
- Console.WriteLine("Из какой группы удалить студента? \n1. ЭМА-18-1 \n2. ЭМА-18-2");
- string group_name = Console.ReadLine();
- if (group_name == "1")
- {
- invoker._RemoveStudent(new SimpleCommand(EMA181));
- invoker.DoSomething(something);
- }
- if (group_name == "2")
- {
- invoker._RemoveStudent(new SimpleCommand(EMA182));
- invoker.DoSomething(something);
- }
- break;
- case "x":
- Console.WriteLine("Из какой группы будем переносить студента? \n1. ЭМА-18-1 \n2. ЭМА-18-2");
- invoker._ShiftStudent(new ComplexCommand(receiver, EMA181, EMA182, Console.ReadLine()));
- invoker.DoSomething(something);
- break;
- }
- }
- void DrawGroup(List<Student> group)
- {
- for (int i = 0; i < group.Count; i++)
- {
- Console.WriteLine(i + ". " + group[i].Name);
- }
- }
- }
- }
- class Invoker // отправитель
- {
- private Command _addStudent;
- private Command _copyStudent;
- private Command _removeStudent;
- private Command _shiftStudent;
- public void _AddStudent(Command command)
- {
- this._addStudent = command;
- }
- public void _CopyStudent(Command command)
- {
- this._copyStudent = command;
- }
- public void _RemoveStudent(Command command)
- {
- this._removeStudent = command;
- }
- public void _ShiftStudent(Command command)
- {
- this._shiftStudent = command;
- }
- public void DoSomething(string something)
- {
- if (something == "e")
- {
- this._addStudent.Excecute(0);
- }
- if (something == "c")
- {
- this._copyStudent.Excecute(1);
- }
- if (something == "d")
- {
- this._removeStudent.Excecute(2);
- }
- if (something == "x")
- {
- this._shiftStudent.Excecute(3);
- }
- }
- }
- public interface Command // абстрактная команда
- {
- void Excecute(int com);
- }
- class SimpleCommand : Command // Простая команда, удалить студента
- {
- private List<Student> _students = new();
- public SimpleCommand(List<Student> students)
- {
- this._students = students;
- }
- public void Excecute(int com)
- {
- for (int i = 0; i < _students.Count; i++)
- {
- Console.WriteLine(i + ". " + _students[i].Name);
- }
- Console.WriteLine("Введите номер студента, которого нужно удалить");
- int temp = Convert.ToInt32(Console.ReadLine());
- _students.RemoveAt(temp);
- }
- }
- class ComplexCommand : Command // Сложная команда
- {
- private Receiver _receiver;
- private List<Student> _group1;
- private List<Student> _group2;
- private string _choise;
- public ComplexCommand(Receiver receiver, List<Student> group1, List<Student> group2, string choise)
- {
- this._receiver = receiver;
- this._group1 = group1;
- this._group2 = group2;
- this._choise = choise;
- }
- public void Excecute(int com)
- {
- if (com == 0)
- {
- this._receiver.AddStudent(this._group1, this._group2, this._choise);
- }
- if (com == 1)
- {
- this._receiver.CopyStudent(this._group1, this._group2, this._choise);
- }
- if (com == 3)
- {
- this._receiver.ShiftStudent(this._group1, this._group2, this._choise);
- }
- }
- }
- class Receiver // Получатель
- {
- public int AddStudent(List<Student> group1, List<Student> group2, string choice)
- {
- Console.WriteLine("Введите ФИО студента (Иванов Иван Иванович)");
- if (choice != "1" && choice != "2")
- {
- Console.WriteLine("Ошибка при добавлении студента!");
- return 1;
- }
- Student student = new Student(Console.ReadLine());
- if (choice == "1")
- {
- group1.Add(student);
- }
- if (choice == "2")
- {
- group2.Add(student);
- }
- return 1;
- }
- public void CopyStudent(List<Student> group1, List<Student> group2, string choice)
- {
- List<Student> students = new();
- students.AddRange(group1);
- students.AddRange(group2);
- for (int i = 0; i < students.Count; i++)
- {
- Console.WriteLine(i + ". " + students[i].Name);
- }
- Console.WriteLine("Кого копировать? Введите номер.");
- if (choice == "1")
- {
- int number = Convert.ToInt32(Console.ReadLine());
- group1.Add(students[number]);
- }
- if (choice == "2")
- {
- int number = Convert.ToInt32(Console.ReadLine());
- group2.Add(students[number]);
- }
- }
- public void ShiftStudent(List<Student> group1, List<Student> group2, string choice)
- {
- Console.WriteLine("Кого перенести в другую группу? Введите номер.");
- string name = "";
- int number = 0;
- if (choice == "1")
- {
- for (int i = 0; i < group1.Count; i++)
- {
- Console.WriteLine(i + ". " + group1[i].Name);
- }
- number = Convert.ToInt32(Console.ReadLine());
- name = group1[number].Name;
- group1.RemoveAt(number);
- group2.Add(new Student(name));
- }
- if (choice == "2")
- {
- for (int i = 0; i < group1.Count; i++)
- {
- Console.WriteLine(i + ". " + group1[i].Name);
- }
- number = Convert.ToInt32(Console.ReadLine());
- name = group2[number].Name;
- group2.RemoveAt(number);
- group1.Add(new Student(name));
- }
- }
- }
- class Student // Студент
- {
- public string Name;
- public Student(string name)
- {
- Name = name;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement