Skip to main content

Задание UniversityResidentsManager


📝 Основное задание

(до 6 баллов)

Разработать программу, с помощью которой можно исследовать доходы студентов, преподавателей и технических работников в университете. Программа должна содержать минимум 5 классов, минимум 3 из которых должны быть классами-наследниками (цепочка наследования тоже может быть), и, как минимум, 1 интерфейс.

Исходные данные по студентам и сотрудникам находятся в Excel файлах и распределены по вариантам. Эти данные можно конвертировать в любой формат, но также считывать данные сразу из Excel.

Номер варианта вам назначат отдельно

Необходимо реализовать вывод в консоль доходов студентов и сотрудников за n месяцев одним циклов в формате:

<Имя> <Фамилия> <Статус в университете> <Доход>

Считать, что 1 месяц - это 5 недель, 25 рабочих дней.

Под статусом подразумевается:

  1. Если это студент, то выводить "Студент".
  2. Если это преподаватель, то выводить его ученую степень.
  3. Если это технический работник, то так и выводить - "Технический работник".

Под доходом подразумевается:

  1. У студентов - стипендия, которая зависит от оценок. Если есть 3 в табеле, то стипендия 0.
  2. У преподавателей - зарплата, формируемая на основе количества учебных часов. Количество часов может быть плавающим и не должно превышать 40ч в неделю.
  3. У технического персонала - фиксированная почасовая оплата. Рабочий день всегда по 8ч.

Также необходимо сделать запись данных в файл. Если планируете записывать в текстовый файл, то формат записи примерно такой же как и при выводе в консоль. Но в качестве разделителя используйте табуляцию или ;. Если будете делать сериализацию, то необходимо сохранить список объектов, в которых точно должна быть информация об имени, фамилии, статуса и дохода человека.

Также необходимо реализовать обработку списков:

  1. Найти человека с максимальным доходом за 6 месяцев.
  2. Найти студентов отличников.
  3. Найти работника, у которого самая большая фиксированная ставка.
  4. Найти средний балл каждого студента.

⭐ Задания со звездочкой

  1. (0.47 баллов) Информацию о доходах вывести в окно, разработанное с использованием WPF, в виде таблицы.
  2. (0.47 баллов) Реализовать обновление доходов в окне при смене количества месяцев. Для этого необходимо добавить ещё один элемент управления, куда будет вводиться количество месяцев.
  3. (0.24 балла) Реализовать добавление нового человека в базу.
  4. (0.24 балла) Реализовать редактирование данных человека.
  5. (0.24 балла) Реализовать удаление данных человека из базы.
  6. (0.24 балла) Реализовать сохранение и загрузку данных из файла в таблицу.
  7. (0.47 баллов) Реализовать фильтрацию людей по различным доступным свойствам.
  8. (0.47 баллов) Реализовать группировку людей по их статусам.
  9. (0.69 баллов) Реализовать все вышеперечисленное с помощью паттерна Model View ViewModel.
  10. (0.47 баллов) При фильтрации и группировки не изменять основной список.

Бонусное задание

(до 5 баллов) Придумать самостоятельно, как можно модифицировать программу. Можно не реализовывать кодом, но тогда надо будет рассказать на собеседовании, как можно реализовать ту или иную модификацию.


Оценка

Оценка для текущего задания — 10-бальная система.

Формула оценки:

image.png

Полученные баллы это сумма баллов за основные задания и за задания со звездочкой.

Полученные бонусные баллы это сумма бонусных баллов.

Минимальный порог — 4 из 10.


Исходные данные