Задание UniversityResidentsManager
📝 Основное задание
(до 6 баллов)
Разработать программу, с помощью которой можно исследовать доходы студентов, преподавателей и технических работников в университете. Программа должна содержать минимум 5 классов, минимум 3 из которых должны быть классами-наследниками (цепочка наследования тоже может быть), и, как минимум, 1 интерфейс.
Исходные данные по студентам и сотрудникам находятся в Excel файлах и распределены по вариантам. Эти данные можно конвертировать в любой формат, но также считывать данные сразу из Excel.
Номер варианта вам назначат отдельно
Необходимо реализовать вывод в консоль доходов студентов и сотрудников за n месяцев одним циклов в формате:
<Имя> <Фамилия> <Статус в университете> <Доход>
Считать, что 1 месяц - это 5 недель, 25 рабочих дней.
Под статусом подразумевается:
- Если это студент, то выводить "Студент".
- Если это преподаватель, то выводить его ученую степень.
- Если это технический работник, то так и выводить - "Технический работник".
Под доходом подразумевается:
- У студентов - стипендия, которая зависит от оценок. Если есть 3 в табеле, то стипендия 0.
- У преподавателей - зарплата, формируемая на основе количества учебных часов. Количество часов может быть плавающим и не должно превышать 40ч в неделю.
- У технического персонала - фиксированная почасовая оплата. Рабочий день всегда по 8ч.
Также необходимо сделать запись данных в файл. Если планируете записывать в текстовый файл, то формат записи примерно такой же как и при выводе в консоль. Но в качестве разделителя используйте табуляцию или ;. Если будете делать сериализацию, то необходимо сохранить список объектов, в которых точно должна быть информация об имени, фамилии, статуса и дохода человека.
Также необходимо реализовать обработку списков:
- Найти человека с максимальным доходом за 6 месяцев.
- Найти студентов отличников.
- Найти работника, у которого самая большая фиксированная ставка.
- Найти средний балл каждого студента.
⭐ Задания со звездочкой
- (0.47 баллов) Информацию о доходах вывести в окно, разработанное с использованием WPF, в виде таблицы.
- (0.47 баллов) Реализовать обновление доходов в окне при смене количества месяцев. Для этого необходимо добавить ещё один элемент управления, куда будет вводиться количество месяцев.
- (0.24 балла) Реализовать добавление нового человека в базу.
- (0.24 балла) Реализовать редактирование данных человека.
- (0.24 балла) Реализовать удаление данных человека из базы.
- (0.24 балла) Реализовать сохранение и загрузку данных из файла в таблицу.
- (0.47 баллов) Реализовать фильтрацию людей по различным доступным свойствам.
- (0.47 баллов) Реализовать группировку людей по их статусам.
- (0.69 баллов) Реализовать все вышеперечисленное с помощью паттерна Model View ViewModel.
- (0.47 баллов) При фильтрации и группировки не изменять основной список.
⭐ Бонусное задание
(до 5 баллов) Придумать самостоятельно, как можно модифицировать программу. Можно не реализовывать кодом, но тогда надо будет рассказать на собеседовании, как можно реализовать ту или иную модификацию.
Оценка
Оценка для текущего задания — 10-бальная система.
Формула оценки:
Полученные баллы это сумма баллов за основные задания и за задания со звездочкой.
Полученные бонусные баллы это сумма бонусных баллов.
Минимальный порог — 4 из 10.