Документация

Задача

Реализуйте классы предметной логики и модульные тесты для решения следующей задачи.

Требуется написать приложение, позволяющее обрабатывать список школьников города. Инициализация данных происходит из файла, включающего следующие поля:

  • Фамилия
  • Имя
  • Отчество
  • Дата рождения в формате YYYY-MM-DD
  • Пол мужской/женский
  • Номер класса с буквой, гарантируется наличие буквы у всех классов (10 б, 10 а, 11 в)
  • Наименование учебного заведения с номером (Гимназия 1, Школа 22, Лицей Волжский)

При запуске приложение должно выводить пользователю меню со следующими пунктами:

  1. Сформировать общий список студентов.
  2. Сформировать список типов учебных учреждений.
  3. Сформировать статистику по классам для выбранной школы.
  4. Сформировать статистику по всем классам выбранной параллели.
  5. Завершить работу.

Если пользователь выбрал пункт № 1, то приложение должно сформировать новый список студентов. В данном списке нужно вывести всех учеников, упорядоченных по школе, классу и дате рождения.

Если пользователь выбрал пункт № 2, то приложение должно сформировать список типов учебных учреждений. Под типом подразумевается первое слово в названии учебного учреждения.

Если пользователь выбрал пункт № 3, то приложение должно запросить у пользователя тип учебного заведения (Школа, Лицей или Гимназия) и его номер. Если выбранного учебного заведения с введённым номером не существует, вывести соответствующее сообщение и вернуться к меню. Для корректно указанного учебного заведения сформировать следующие данные:

  1. Для каждой параллели вывести номер класса с наибольшим количеством учеников.
  2. Для всех параллелей определить наиболее часто используемую букву класса.

Если пользователь выбрал пункт № 4, то приложение должно запросить номер параллели. Для выбранной параллели приложение должно вывести следующую информацию:

  1. Общее количество учеников среди всех школ для данной параллели.
  2. Соотношение между девушками и юношами для данной параллели.
  3. Список месяцев года, упорядоченный по количеству учеников, которые родились в данном месяце. Если в одном месяце родилось одинаковое количество учеников, то сортировать месяцы согласно их порядковому номеру.

Общие требования к реализации приложения:

  • Любой запрос на ввод должен сопровождаться текстовым пояснением, какие именно данные и в каком формате ожидаются.
  • После формирования требующихся файлов приложение должно сообщить пользователю, сколько файлов оно сформировало или перезаписало, и отобразить меню.
  • Приложение должно обрабатывать данные за разумное время и завершать работу только в случае, когда пользователь выбрал пункт меню № 3.