static void Main(string[] args) { string answer; Console.WriteLine("Доброго времени суток. Добро пожаловать на домашнюю работу студанта А.Малова к уроку №6 курса Основы языка C#."); do { Console.Write("Выберите интересующее вас задание:\n1|2.Работы с функциями через делегаты \n3.'Доработаный' пример использования коллекций \nДля выхода введите 0\nИтак, ваш выбор=> "); answer = Console.ReadLine(); if (answer == "1" || answer == "2") { Task1_2.RunTask1_2(); } else if (answer == "3") { MyStudent.RunTask3(); } else if (answer == "0") { Console.WriteLine("Good bye! Thanks for your time!)"); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Введён не корректный номер задания. Повторите ввод"); Task1_2.Pause(); } } while (answer != "0"); Task1_2.PauseAndClear(); }
/// <summary> /// Запуск поиска числа студентов по пункту, выбранному пользователем /// </summary> /// <param name="delegatcount">массив методов поиска</param> /// <param name="students">Список студентов</param> public static void RunGetCountProgram(GetCountDelOut[] delegatcount, List <MyStudent> students) { int answer, count; do { Console.Write("Можно подсчитать количество студентов по следующим параметрам:\n1.По Фамилии\n2.По Имени\n3.По Университету\n4.По Факультету\n5.По кафедре\n6.По Курсу\n7.По возрасту\n8.По номеру группы\n9.По Городу\nДля выхода введите 0\nВаш выбор=> "); if (int.TryParse(Console.ReadLine(), out answer) && answer > 0 && answer <= delegatcount.Length) { count = delegatcount[answer - 1](students, out List <MyStudent> tempstudents); Console.WriteLine($"Количество студентов по заданному параметру = {count}\nИ вот эти студенты:"); PrintMyListStudent(tempstudents); Console.Write("Продолжить поиск с получившимся списком или вернёмся к дефолтному?\nДля продолжения с действующм списком введите 1, для выхода - что угодно только не 1=> "); if ((int.TryParse(Console.ReadLine(), out answer)) && answer == 1) { RunGetCountProgram(delegatcount, tempstudents); } else { answer = 0; } } else if (answer != 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("не валидный номер задачи. Повторите ввод!"); Task1_2.PauseAndClear(); } } while (answer != 0); }
/// <summary> /// Метод получения числа студентов из заданной группы, возвращающий лист с этими студентами /// </summary> /// <param name="students">лист студентов</param> /// <param name="group">группа</param> /// <param name="tempstudents">лист студентов из заданной группы</param> /// <returns></returns> public static int GetCountGroup(List <MyStudent> students, out List <MyStudent> tempstudents) { tempstudents = new List <MyStudent>(); do { Console.WriteLine("Введите номер группы по которой необходимо найти студентов:"); if (int.TryParse(Console.ReadLine(), out int group)) { foreach (MyStudent el in students) { if (el.course == group) { tempstudents.Add(el); } } break; } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Вы ввели не корректные данные. Повторите ввод!"); Task1_2.Pause(); } } while (true); CheckCount(tempstudents); return(tempstudents.Count); }
/// <summary> /// Метод проверки были ли совпадения в резултате поиска /// </summary> /// <param name="students"></param> public static void CheckCount(List <MyStudent> students) { if (students.Count == 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Совпадений не найдено!"); Task1_2.Pause(); } }
/// <summary> /// Метод запуска 3-го задания /// </summary> public static void RunTask3() { int answer, count; GetCountDelOut[] delegatcount = { GetCountLName, GetCountFName, GetCountUniver, GetCountFaculty, GetCountDepartament, GetCountCourse, GetCountAge, GetCountGroup, GetCountCity }; GetCountDel2Out[] delegatcount2 = { GetCountRangeCourse, GetCountRangeAge, GetCountRangeGroup }; string fileName = AppDomain.CurrentDomain.BaseDirectory + "BaseOfStudents.csv"; List <MyStudent> students = GetBaseSTudent(fileName); Console.WriteLine("Задание 3 к уроку 6. Работа с коллекциями."); do { Console.WriteLine("Дан список студентов:"); PrintMyListStudent(students); Console.Write("Выберете что хотите сделать со списком:\n1) Подсчитать количество студентов учащихся на 5 и 6 курсах \n2) подсчитать сколько студентов в возрасте от 18 до 20 лет на каком курсе учатся\n3) отсортировать список по возрасту студента\n4)отсортировать список по курсу и возрасту студента\n5) разработать единый метод подсчета количества студентов по различным параметрам выбора с помощью делегата и методов предикатов.\nДля выхода введите 0\nВаш выбор=> "); if (int.TryParse(Console.ReadLine(), out answer) && answer != 0) { Console.ForegroundColor = ConsoleColor.Yellow; switch (answer) { case 1: Console.Write("Количество студентов учащихся на 5 и 6 курсах = "); count = GetRangeCount(GetCountRangeCourse, students, 5, 6, out List <MyStudent> activestudents); break; case 2: Console.Write("Количество студентов в возрасте от 18 до 20 лет = "); count = GetRangeCount(GetCountRangeAge, students, 18, 20, out List <MyStudent> activestudents1); break; case 3: students = SortMyListAge(students); PrintMyListStudent(students); break; case 4: students = SortMyListCourseAndAge(students); PrintMyListStudent(students); break; case 5: RunGetCountProgram(delegatcount, students); break; } Task1_2.PauseAndClear(); } else if (answer != 0) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("не валидный номер задачи. Повторите ввод!"); Task1_2.PauseAndClear(); } }while (answer != 0); }
/// <summary> /// Метод вывода на экран списка студентов /// </summary> /// <param name="tempst"></param> public static void PrintMyListStudent(List <MyStudent> tempst) { Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("--------------------------------------------"); foreach (MyStudent el in tempst) { Console.WriteLine(el.ToString()); } Console.WriteLine("--------------------------------------------"); Task1_2.Pause(); }