Comments 17
Помню в лицее директор: "ну вы же программисты олимпиадники, помогите программу для расписания сделайте!". Мы такие: "ну наверное это np-полная задача (модное слово было - типа динамика или поиск по графу не решает)! Очень интересно, а какая метрика что расписание хорошее?". Директор: "ооой.. ну мы сидим и пишем, но каждый учитель ещё попросит что-то подвинуть, и так месяц пишем, всем не нравится, но как убедим".
У меня дипломная работа была - генерация расписаний на основе генетических алгоритмов =)
Там в общем то учитывалось, что кому то неудобно в какое то время и алгоритм через сотни тысяч итераций генерировал приемлемое расписание.
Забавно, тоже когда-то писал точно такой же проект на Delphi для себя и в рамках лабы\конференции. Узнал, что в теории есть куча критериев, по которым в реальности должно составляться расписание для школы. Естественно, при ручном составлении завучу было нереально их все соблюсти. Планировалось внедрение в родную школу, но как-то не дошло до этого, уж очень трудоёмкой оказалась задача для ее реального внедрения.
Ещё бывают т.н. "циклы". Одно и то же занятие повторяется по будням, например, с 8:00 до 14:00, цикл длится от нескольких дней до нескольких недель. Параллельно с циклами вечером могут быть занятия/лекции.
В конечном счёте, для удобства пользователей, пришлось делать view где был сортированный список циклов (студенты хотели видеть в какой части города с какими группами будут учиться вместе) и view с обычными занятиями/парами/лекциями для которых было случайное неповторяющееся расписание по датам.
Неинтуитивно (
cвязать с moodle и другими платформами LMS для синхронизации расписаний не планируете?
Чем ваше приложение принципиально отличается от календарей/планировщиков? Вроде бы там уже всё необходимое есть: настраиваемая периодичность событий (недели над/под и т.п.), автоматические интервалы (уроки/пары), места и участники (корпус/кабинет, препод/группа), кроме того есть синхронизация с другими пользователями и возможность вести и видеть несколько календарей (расписаний), в том числе и от других пользователей.
В статье про это ничего не сказано, но возможно такой функционал есть - выдача заданий студентам с привязкой к уроку когда его нужно сдать? Или например учет пропуска занятий?
Можно выбрать предмет, к которому задание относится и назначить дату/время выполнения. Учет пропуска занятий отсутствует, так же как и оценки.
А что произойдет в ситуации если например - создали расписание, в котором например математика каждый понедельник в 9:00 c 1 сентября по 31 декабря, потом создали задание на 7 сентября (допустим это понедельник), а потом удалили этот предмет из расписания (нет больше математики 7-го сентября) - что будет? Удалится и задание или будет задание без урока?
Не совсем корректное приложение для студентов. Посмотрите приложение для андроида "Расписание для студентов" Безгребельный Горигорий, вот это настящее студенческое расписание, функционал на высоте, можно выбрать четную и нечетную неделю при этом можно выбрать дату и отменить день в календаре занятие, например: лекция по четвергам ч.н кроме 22.09, скопируйте функциона у него. + бывает такое что в четверг может быть 3 занятия, но по расписанию они не совпадают, например: в первый четверг лекция. в другой практика, в третем на 20.09 курсовые занятия
Расписание занятий — не всё так просто