Разработка небольшого веб-приложения

Бюджет: по договоренности
Необходимо разработать веб-приложение с использованием php+mysql+bootstrap+js (если нужно) для сортировки студентов на группы. 

Суть приложения разбить X студентов на Y группы в случайном порядке, но с учетом их особенностей и с возможность сделать сортировку несколько раз, так что бы каждая сортировка максимально не повторяла прошлые (что бы каждый раз студент попадал в группу с другими студентами) . Внешний вид приложения – обычный bootstrap, дизайн не важен. 

Механика работы: 
1) Вводим список студентов (до 100 человек), для каждого студента должна быть возможность указать характеристику (например через тэги) – Характеристики – обычные текстовое свойство, например "искусствовед", "учитель". При разбивки на группы важно что бы алгоритм учитывал что в каждой группе должно быть максимум представитель по каждой характеристике (т.е. что бы в каждой группе был учитель, искуствовед и тд, а не так что в одной одни учителя, в другой одни искусствоведы). Если характеристик всего две – например пол (м/ж), то тогда следить что бы в каждой группе (по возможности) было равное кол-во м/ж  
2) Вводим кол-во желаемых групп (на сколько делить студентов)
3) Получаем итоговый список в формате (группа 1 / список студентов, группа 2 / список студентов) 
4) Выводим уникальный id данной разбивки, что бы в следующей раз была возможность либо начать все с начала с пункта 1, либо ввести данный id, и список студентов уже подгрузился сам, но и новая разбивка на группы была выполнена с учетом прошлых разбивок. В идеале предусмотреть возможность называть каждую разбивку текстовым именем (например январь, ферваль), и далее иметь возможность просмотреть по id прошлый разбивки. Всего разбивок одной и той же группы студентов может быть до 15 раз. Понятно что очень быстро студенты все равно начнут повторяться, но задача сделать это повторение минимальным. 

Готов ответить на вопросы.
Опубликован 29.01.2015 в 02:33

Выберите способ верификации:

Обновите страницу после прохождения верификации.