static void ChangeItemCollection(MyNewCollection collect) { Console.Write("Какой элемент нужно изменить? Введите значение:"); int position = CheckInt() - 1; if (position >= collect.Count || position < 0) { Console.WriteLine("Введенный индекс вне границ массива!"); return; } Transport nwEchange = ReferenseItem(position); collect[position] = nwEchange; }
static void PrintMenuPart2() { MyNewCollection <Document> l1 = new MyNewCollection <Document>(); l1.Name = "Name"; Document d = new Document(); Document c = new Document(); Check c1 = new Check(); Journal j1 = new Journal(); Journal j2 = new Journal(); l1.Add(1, d); l1.Add(2, c); l1.RemoveKey(c1); l1.PrintList(); l1.CollectionCountChanged += new CollectionHandler(j1.CollectionCountChange); l1.CollectionReferenceChanged += new CollectionHandler(j2.CollectionReferenceChange); }
static void ChoiseCollectionForAct(AddRemoveShow act, MyNewCollection collect1, MyNewCollection collect2) { Console.WriteLine(CollectionMENU); int numCollect = CheckInt(); if (numCollect < 1 || numCollect > 2) { throw new IndexOutOfRangeException("Выберете коллекцию 1 или 2?"); } else if (numCollect == 1) { act(collect1); } else { act(collect2); } }
static void Main(string[] args) { Random rand = new Random(); int menu = 10; while (menu != 0) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("1. Демонстрация коллекции"); Console.WriteLine("2. Часть №2"); Console.WriteLine("0.Выход"); Console.ResetColor(); menu = InputMenu(2); mc1 = new MyCollection(10); if (menu == 0) { break; } else { int menuNext = 10; switch (menu) { #region task1 case 1: while (menuNext != 0) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("1.Показать коллекцию"); Console.WriteLine("2.Добавить элементы"); Console.WriteLine("3.Удалить элементы"); Console.WriteLine("4.Сортировка"); Console.WriteLine("5.Удалить коллекцию"); Console.WriteLine("6.Длина"); Console.WriteLine("0.Назад"); Console.ResetColor(); menuNext = InputMenu(6); if (menuNext == 0) { break; } else { switch (menuNext) { case 1: mc1.Show(); break; case 2: Add(); Console.WriteLine("Элементы добавлены"); break; case 3: Delete(); Console.WriteLine("Элементы удалены"); break; case 4: mc1.Sort(); mc1.Show(); break; case 5: mc1.Clear(); mc1.Show(); break; case 6: Console.WriteLine($"Количество:{mc1.Count }"); break; } } } break; #endregion task1 #region task2 case 2: MyNewCollection list1 = new MyNewCollection(); MyNewCollection list2 = new MyNewCollection(); list1.Name = "First"; list2.Name = "Second"; Journal jour1 = new Journal(); Journal jour2 = new Journal(); list1.CollectionCountChanged += new CollectionHandler(jour1.CollectionCountChanged); list1.CollectionReferenceChanged += new CollectionHandler(jour1.CollectionReferenceChanged); list2.CollectionCountChanged += new CollectionHandler(jour2.CollectionCountChanged); list2.CollectionReferenceChanged += new CollectionHandler(jour2.CollectionReferenceChanged); list1.AddRandom(); list1.AddRandom(); list1.AddRandom(); list1.AddRandom(); list2.AddRandom(); list2.AddRandom(); list2.AddRandom(); list2.AddRandom(); list1.Remove(1); list2.Remove(2); list1.ChangeValue(2); list2.ChangeValue(1); list1.Add(new Engine("ADD", 1111)); Console.WriteLine("В каждую коллекцию добавлено по 4 элемента"); Console.WriteLine("Из первой удален 1, из второй 2"); Console.WriteLine("В первой изменен 2(3 до удаления), во второй 1"); Console.WriteLine("В первую добавлен элемент ADD"); Console.WriteLine(); list1.Show(); Console.WriteLine(); list2.Show(); Console.WriteLine(); Console.WriteLine("Journal 1:"); Console.WriteLine(); jour1.ToString(); Console.WriteLine(); Console.WriteLine("Journal 2:"); Console.WriteLine(); jour2.ToString(); Console.ReadKey(); break; #endregion task2 } } } }
static void Main(string[] args) { Console.OutputEncoding = Encoding.Default; MyNewCollection OneCollect = new MyNewCollection(); MyNewCollection TwoCollect = new MyNewCollection(); Journal oneJournal = new Journal(); Journal twoJournal = new Journal(); // создаем возможные события для объекта типа MyNewCollection и подписываем на событие объект класса Journal // подписка на события первого журнала: // добавление\удаление и изменение элементов 1 коллекции OneCollect.CollectionCountChanges += new MyCollectionHandler(oneJournal.CollectionCountChanged); OneCollect.CollectionReferenceChanges += new MyCollectionHandler(oneJournal.CollectionReferenceChanged); // подписка на события второго журнала: // изменение элементов 1 и 2 коллекции OneCollect.CollectionReferenceChanges += new MyCollectionHandler(twoJournal.CollectionReferenceChanged); TwoCollect.CollectionReferenceChanges += new MyCollectionHandler(twoJournal.CollectionReferenceChanged); AddRemoveShow act; ShowJournal show; bool flag = false; while (!flag) { try { Console.Clear(); Console.Write(MAINMENU); int choise = CheckInt(); switch (choise) { case 1: act = new AddRemoveShow(AddElemInCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Элементы успешно добавлены"); break; case 2: act = new AddRemoveShow(RemoveInCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Элементы успешно удалены"); break; case 3: act = new AddRemoveShow(ChangeItemCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Элемент успешно изменен"); ENTER(); break; case 4: act = new AddRemoveShow(ShowCollection); ChoiseCollectionForAct(act, OneCollect, TwoCollect); ENTER(); break; case 5: show = new ShowJournal(ShowJ); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Журнал событий: "); Console.ForegroundColor = ConsoleColor.DarkYellow; ActionsJournal(show, oneJournal, twoJournal); Console.ResetColor(); ENTER(); break; case 6: show = new ShowJournal(Clear); ActionsJournal(show, oneJournal, twoJournal); Console.WriteLine("Журнал отчищен!"); ENTER(); break; case 7: act = new AddRemoveShow(x => x.Clear()); ChoiseCollectionForAct(act, OneCollect, TwoCollect); Console.WriteLine("Коллекция отчищена"); break; case 8: flag = !flag; break; default: Console.WriteLine("Неопознанное значение!"); ENTER(); break; } } catch (Exception e) { Console.WriteLine(e.Message); ENTER(); } } }
static void AddElemInCollection(MyNewCollection collect) { bool t = false; while (!t) { Console.Clear(); Console.Write(AddMENU); int choise = CheckInt(); switch (choise) { case 1: List <Transport> list = new List <Transport>(); int size = 0; bool flag = false; while (!flag) { list.Add(AddTypeTransport(ref flag, $"Добавить {size + 1}-й элемент\n" + TypeMENU)); size++; } list.RemoveAt(size - 1); size--; if (size != 0) { Transport[] arr = new Transport[size]; list.CopyTo(arr, 0); collect.Add(arr); } else { Console.WriteLine("Попытка добавления пустого массива!"); } ENTER(); t = true; break; case 2: Transport nwE = AddTypeTransport(ref t, $"Добавить {collect.Count} элемент\n" + TypeMENU); if (nwE != null) { collect.Add(nwE); } else { Console.WriteLine("Попытка добавления пустого элемента!"); } t = true; ENTER(); break; case 3: collect.AddDefault(); ENTER(); t = true; break; case 4: t = true; break; default: Console.WriteLine("Неопознанное значение.."); ENTER(); break; } } }
private static void ShowCollection(MyNewCollection act) { Console.WriteLine(act); }
public MyNewCollection(MyNewCollection collection) { list = collection.list; }