Библиотека для распределения студентов ШРИ по командам и менторам
Демо стенд http://lbelzarl.github.io/SHRI.js/
Библиотека SHRI.js предназначена для работы с предметной областью студентов, поступающих в Школу Разработки Интерфейсов Яндекса. В ней реализована работа со студентами, командами, задачами, оценками, менторами, и, самое главное, реализован алгоритм распределение студентов по менторам.
Реализован веб интерфейс на bootstrap + jQuery, в котором реализованы формы для работы с классами. В нём есть кнопка "Загрузить данные", которая случайным образом сгенерирует данные студентов, распределит их по командам, создаст несколько задач, распределит задачи по студентам и командам, выставит случайным образом несколько оценок.
Во вкладке "Менторы и распределение студентов" с помощью jQuery плагина $.line реализованы линии, показывающие выбор менторов и выбор студентов. В библиотеке реализован метод assign, который распределяет студентов по менторам на основе их приоритезированного списка.
Библиотека SHRI.js работает в браузере, создавая объект window.SHRI и на сервере в nodejs, подключаемая с помощью var SHRI = require('./SHRI.js');.
Реализована сериализация и десериализация структуры данных в JSON формат:
node serialize.js
node deserialize.js
Структура библиотеки SHRI.js:
-
Students- класс Студентыadd()- Позволяет добавить нового студентаgetStudent()- Позволяет получить студента по его индесу в массиве студентовgetAll()- Позволяет получить всех студентовgetStudentId- Позволяет получить индекс студентаdelete()- Позволяет удалить все стедентов, либо конкретно заданногоassignMentors()- Каждому студенту случайным образом назначает двух менторовemptyMentors()- Удаляет всех менторов у всех студентовshuffle()- Случайным образом перемещивает массив студентов
-
Student- класс СтудентaddMentor()- Добавляет ментора которого выбрал студентaddTask()- Добавляет студенту задачуassignMark()- Выставляет оценку студенту за задачуgetMentors()- Возвращает всех менторов студентаdeleteMentors()- Удаляет всех менторов студента, либо заданногоserialize()- Сериализует студента в массив
-
Teams- класс Командыfind()- Возвращает команду по ее названию, а при отсутствии nullgetTeam()- Возвращает команду по ее индексу в массиве командcreate()- Создает новую командуgetTeamId()- Возвращает индекс командыgetMemberTeam()- Проверяет находится ли студент уже в какой-нибудь командеdelete()- Удаляет все команды, либо заданнуюgetAll()- Возвращает все командыshuffle()- Случайным образом перемешивает массив команд
-
Team- класс КомандаhasMember()- Проверяет находится ли студент в командеaddMember()- Добавляет студента в командуgetAllMember()- Получает всех студентов командыserialize()- Сериализует команду в массивdelMember()- Удаляет всех студентов из команды, либо заданногоaddTask()- Добавляет задачу командеassignMark()- Выставляет оценку команде за задачу
-
Tasks- класс Задачиcreate()- Создает задачуget()- Возвращает задачуgetId()- Возвращает индекс задачиgetAll()- Возвращает все задачиdelete()- Удаляет все задачи, либо заданную
-
Task- класс Задачаserialize()- Сериализует задачу в массив
-
Mentors- класс Менторыadd()- Добавляет нового ментораgetAll()- Возвращает всех менторовgetMentor()- Возвращает заданного ментораgetId()- Возращает индекс ментораdelete()- Удаляет всех менторов, либо заданногоassignStudents()- Каждому ментору случайным образом назначает двух студентов
-
Mentor- класс МенторaddStudent()- Добавляет студента менторуgetStudents()- Возвращает всех студентов ментораdeleteStudents()- Удаляет всех студентов у ментора, либо заданногоserialize()- Сериализует ментора в массив
-
assign- Распределяет студентов среди менторов в соответствии с приоритизированными списками -
serialize- преобразует структуру объектов SHRI.js в json -
deserialize- преобразует json в стуктуру объектов SHRI.js
