public Collection(int length) { City = new List <Person>(); Department = new List <Person>(); for (int i = 0; i < length; i++) { if (i / 2 == 0) { Schooler child = new Schooler(); City.Add(child); } else { Person p = new Person(); City.Add(p); } if (i / 2 == 0) { ExramuralStudent exSt = new ExramuralStudent(); Department.Add(exSt); } else { Student st = new Student(); Department.Add(st); } } }
}//Печать всей коллекции private static SortedList Clone(SortedList sortedList) { SortedList sortedList2 = new SortedList(); foreach (Person item in sortedList.Values) { ExramuralStudent student = item as ExramuralStudent; if (student is ExramuralStudent) { sortedList2.Add(sortedList.GetKey(sortedList.IndexOfValue(item)), student.Clone()); } } foreach (Person item in sortedList.Values) { Student student = item as Student; if (student is Student && !(student is ExramuralStudent)) { sortedList2.Add(sortedList.GetKey(sortedList.IndexOfValue(item)), student.Clone()); } } foreach (Person item in sortedList.Values) { Schooler schooler = item as Schooler; if (schooler is Schooler) { sortedList2.Add(sortedList.GetKey(sortedList.IndexOfValue(item)), schooler.Clone()); } } return(sortedList2); }// клонирование коллекции
} //границы ввода //______Ручной ввод объекта______// private static ExramuralStudent GetExStudent() { Console.Write("Введите имя: "); string nameToFind = Console.ReadLine(); int course = ReadNumber(0, 5, "Введите курс: "); int age = ReadNumber(0, 100, "Введите возраст: "); int ex1 = ReadNumber(0, 11, "Введите оценку за первый экзамен: "); int ex2 = ReadNumber(0, 11, "Введите оценку за второй экзамен: "); ExramuralStudent st = new ExramuralStudent(nameToFind, age, course, ex1, ex2); return(st); }
private static void Collection1() { Console.WriteLine("Данная программа создаёт и выводит на печать первоначальное количество объектов заданного типа " + "\nи содержит ряд функций для работы с этими объектами"); Console.WriteLine("\nНажмите любую клавишу, чтобы продолжить..."); Console.ReadKey(); Console.Clear(); int numberOfExStudent = ReadNumber(0, 2000, "Введите начальное количество студентов-заочников: "); int numberOfStudent = ReadNumber(0, 2000, "Введите начальное количество студентов: "); int numberOfSchooler = ReadNumber(0, 2000, "Введите начальное количество школьников: "); SortedList sortedList1 = Generator.CreateCollectionFirstTask(numberOfExStudent, numberOfStudent, numberOfSchooler); PrintAllInformation(sortedList1); Console.WriteLine("Нажмите любую клавишу, чтобы продолжить..."); Console.ReadKey(); Console.Clear(); int menuChoise = 1; while (menuChoise != 0) { menuChoise = Task12_menu(); switch (menuChoise) { //_____ДОБАВЛЕНИЕ_____// case 1: switch (ObjectMenu()) { case 1: int keyAddObject = NewKey(sortedList1); ExramuralStudent exSt = new ExramuralStudent(); sortedList1.Add(keyAddObject, exSt); Console.WriteLine($"Элемент: {exSt}, успешно добавлен"); break; case 2: keyAddObject = NewKey(sortedList1); Student st = new Student(); sortedList1.Add(keyAddObject, st); Console.WriteLine($"Элемент: {st}, успешно добавлен"); break; case 3: keyAddObject = NewKey(sortedList1); Schooler sc = new Schooler(); sortedList1.Add(keyAddObject, sc); Console.WriteLine($"Элемент: {sc}, успешно добавлен"); break; } break; //_____УДАЛЕНИЕ_____// case 2: int removeObject = ReadNumber(-1, 100000, "Введите ключ объекта для удаления: "); if (sortedList1.ContainsKey(removeObject)) { Person p = (Person)sortedList1[removeObject]; sortedList1.Remove(removeObject); Console.WriteLine($"Элемент {p} успешно удален"); } else { Console.WriteLine("Элемента с таким ключем не существует"); } break; //_____ПОДСЧЕТ_____// case 3: int count = 0; foreach (Person item in sortedList1.Values) { ExramuralStudent student = item as ExramuralStudent; if (student is ExramuralStudent) { count += 1; } } Console.WriteLine("\nКоличество студентов-заочников: " + count); count = 0; foreach (Person item in sortedList1.Values) { Student student = item as Student; if (student is Student && !(student is ExramuralStudent)) { count += 1; } } Console.WriteLine("\nКоличество студентов: " + count); count = 0; foreach (Person item in sortedList1.Values) { Schooler schooler = item as Schooler; if (schooler is Schooler) { count += 1; } } Console.WriteLine("\nКоличество школьников: " + count); break; //_____ПЕЧАТЬ РАЗНЫХ ТИПОВ КОЛЛЕКЦИИ_____// case 4: bool persons = false; Console.WriteLine("1. Студент-заочник" + "\n2. Студент" + "\n3. Школьник" + "\n4. Печать всей коллекции"); int choice = ReadNumber(0, 5, "Выберите тип объекта: "); switch (choice) { case 1: foreach (Person item in sortedList1.Values) { ExramuralStudent exStudent = item as ExramuralStudent; if (exStudent is ExramuralStudent) { exStudent.Show(); persons = true; } } if (!persons) { Console.WriteLine("Студентов заочников в коллекции нет"); } break; case 2: foreach (Person item in sortedList1.Values) { Student student = item as Student; if (student is Student && !(student is ExramuralStudent)) { student.Show(); persons = true; } } if (!persons) { Console.WriteLine("Студентов в коллекции нет"); } break; case 3: foreach (Person item in sortedList1.Values) { Schooler schooler = item as Schooler; if (schooler is Schooler) { schooler.Show(); persons = true; } } if (!persons) { Console.WriteLine("Школьников в коллекции нет"); } break; case 4: PrintAllInformation(sortedList1); break; } break; //_____ПОДСЧЕТ СРЕДНЕЙ ОЦЕНКИ У СТУДЕНТОВ-ЗАОЧНИКОВ_____// case 5: ArrayList removeKeyList = new ArrayList(); foreach (Person item in sortedList1.Values) { ExramuralStudent student = item as ExramuralStudent; if (student is ExramuralStudent && student.ExamMark1 <= 3 && student.ExamMark2 <= 3) { removeKeyList.Add(item); } } if (removeKeyList.Count == 0) { Console.WriteLine("Никто не отчислен"); } else { for (int i = 0; i < removeKeyList.Count; i++) { sortedList1.Remove(sortedList1.IndexOfValue(removeKeyList[i])); } Console.WriteLine("Студенты отчислены"); } break; //_____ПОИСК_____// case 6: SortedList sortedList2 = Clone(sortedList1); bool itemFinded = false; switch (ObjectMenu()) { case 1: ExramuralStudent st1 = GetExStudent(); if (sortedList2.ContainsValue(st1)) { itemFinded = true; } break; case 2: Student st2 = GetStudent(); if (sortedList2.ContainsValue(st2)) { itemFinded = true; } break; case 3: Schooler st3 = GetSchooler(); if (sortedList2.ContainsValue(st3)) { itemFinded = true; } break; } if (itemFinded == true) { Console.WriteLine("Объект найден"); } else { Console.WriteLine("Объект не найден"); } break; } Console.WriteLine("\nНажмите любую клавишу для продолжения..."); Console.ReadKey(); Console.Clear(); } }