Объектно-ориентированное программирование и обработка данных

Инструментарий для учета студенческих работ

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

Общей частью является формат коллекций mongo, который должен быть согласован между всеми студентами, выполняющими задание.

Первая коллекция хранит информацию о группах студентов, в группе определены подгруппы, в которых есть список студентов. Вторая коллекция для заданий по предмету. Для задания задаются его тип (посещение лекции, лабораторных и пр.), дата сдачи, максимальны балл, наименование, описание и др. В задании имеется массив, в который записываются результаты выполнения задания (идентификатор и ФИО студента, дата сдачи, оценка, примечания). Третья коллекция для рейтингов. Рейтинг (например, рейтинг для 1 контрольной недели) содержит название и формулу для расчета. Формула для расчета содержит веса заданий, входящих в этот рейтинг.

Инструментарий представляет собой набор программ, каждая из которых выполняет несколько задач по работе с коллекциями. Программа выполняется в командной строке, в качестве аргумента передается задача, которую нужно выполнить, и аргументы для этой задачи. Допускает разбить программу на несколько небольших программ с именем выполняемой задачи. В некоторых вариантах должен использоваться интерактивный режим (например, пользователь вводит критерий для поиска задания, программа выводит список заданий, пользователь выбирает задание по номеру, далее пользователь аналогичным образом выбирает студента, после чего выставляет ему оценку за это задание). Для всех программ должен использоваться единый конфигурационный файл, в котором указываются данные для подключения к mongo.

В некоторых программах требуется сформировать результаты в формате html страницы. Для этого рекомендуется использовать библиотеку kotlinx.html.

Для отдельных курсовых работ можно выбирать темы из следующего списка (выбирать тему можно только если кто-то уже выбрал предыдущую тему):

  1. Программа для редактирования списка заданий и выставление оценок. Позволяет добавить задание, вывести список заданий по какому-либо критерию, изменить или удалить задание, выставить оценку студенту, удалить оценку.
  2. Программа для редактирования списка групп и студентов. Позволяет вводить, просматривать и редактировать группы, импортировать из и экспортировать в формат csv. При изменении фамилии студента или его удалении нужно выполнить соответствующую корректировку в коллекции заданий.
  3. Программа формирования документов с результатами. Формирует данные в виде html страниц (в виде удобных для просмотра таблиц): таблица с наивысшими оценками студентов (колонки – задания, строки – студенты), с подсветкой невыполненных заданий; таблица с результатами работы студента, таблица с результатами выполнения задания.
  4. Программа формирования документов с результатами. Формирует данные в виде электронных таблиц: таблица с наивысшими оценками студентов (колонки – задания, строки – студенты), с подсветкой невыполненных заданий; таблица с результатами работы студента, таблица с результатами выполнения задания. Для формирования таблиц можно использовать The Sheets API или Apache POI.
  5. Программа для вычисления рейтинга. Данные для расчета рейтингов хранятся в отдельной коллекции. Позволяет задать формулу для расчета рейтинга (задачи и их веса в рейтинге), просмотреть и изменить формулу, рассчитать текущий рейтинг на основании данных из коллекции заданий, сформировать html страницу с результатами рейтинга.