Привет, Хабр! Я бы хотел рассказать о том, как я создал программу для составления расписаний для учебных заведений - СуперЗавуч.СуперЗавуч - современная программа для составления расписаний уроков для школ, лицеев и колледжей. Программа позволяет создать расписание за несколько минут и имеет много параметров для конфигураций. Читать далее
Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.4K
Кейс
Привет, Хабр! Я хочу рассказать о том, как я создал программу для составления расписаний учебных заведений — СуперЗавуч.
Введение
Начальный экран проекта, в котором установлены уроки, классы и настройки
СуперЗавуч — современная программа для составления расписаний уроков школ, лицеев и колледжей. Программа позволяет создать расписание за несколько минут и имеет много параметров для конфигураций.
ИдеяИдея состояла в создании приложения, которое берёт на себя всю рутину по составлению расписания занятий — быстро, с минимумом действий со стороны пользователя и с максимально качественным итоговым результатом.
Проблема составления расписанийНесложно понять, что составление расписания школы без ПО довольно долгое и бессмысленное занятие. Главная проблема — составить расписание так, чтобы в каждом классе не было «окон», а также чтобы уроки не повторялись в один день, но также существует много других параметров, не учитывая которые составить расписание не получится: каждый предмет имеет сложность, и эта сложность должна быть равномерно распределена, «окна» у учителей, а также не стоит забывать о профильных классах и кабинетах для проведения уроков.
АналогиСуществует много аналогов, которые также позволяют составить школьное расписание. Но скорее всего они будут платными или очень плохо справляться со своей задачей.

Расписание учителей с помощью 1С
1С Автоматизированное составление расписания: платная лицензия и сложный интерфейс.

Расписание учителей созданное в «Хронограф»
Хронограф: бесплатная версия ограничена по количеству классов и функциям.

Расписание учителей, созданное с помощью ProRector
ProRector: Платное специализированное решение.
Конечно, это не все примеры, но суть вы уловили — программы либо платные, либо с очень урезанным функционалом.
Подробнее о программе СуперЗавучАрхитектураИнтерфейс программы СуперЗавуч написан на Python 3.11, в качестве библиотеки была использована PyQt5. Алгоритм, позволяющий составлять расписание, написан на C++ для достижения большей производительности.
Гайд, как пользоваться программойИнтерфейс разделён на 10 меню: настройки, классы, учителя, кабинеты, ИИ, константы, группы, запуск, просмотр, экспорт. Пользователь проходит по данным вкладкам последовательно, заполняя требуемую информацию.

Меню базовых настроек проекта
В данном меню пользователь вводит базовые настройки (кол‑во рабочих дней, макс. кол‑во уроков, кол‑во параллелей и так далее), для каждого предмета вводится его имя и сложность, а для каждой параллели — кол‑во классов в ней и смена, в которой она учится.

Меню настроек классов
Для каждого класса выставляется количество уроков, которое преподаётся классу в неделю.

Меню кабинетов
Позволяет создавать группы кабинетов, например, группа «Английский язык», в которой будут указаны все кабинеты, в которых он проводится.

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

ИИ‑ассистент
ИИ‑ассистент может объяснить работу программы, изменять и работать с составленным расписанием, а также импортировать расписание из многих форматов.

Меню констант (заморозка уроков)
Позволяет для определённых классов устанавливать определённые уроки в нужное время, которые не будут изменяться алгоритмом.

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

Меню запуска алгоритма
В меню указываются веса алгоритма, определяющие важность каждого значения и, конечно, сам запуск алгоритма.

Меню просмотра
Позволяет просмотреть только что составленное расписание относительно классов и относительно учителей.

Экспорт созданного расписания
В данном меню указываются временные промежутки уроков для отображения их в таблице. Кнопки позволяют экспортировать расписание в Excel относительно учителей и классов.
Я перебрал несколько способов, чтобы создать алгоритм для составления расписаний. В итоге я остановился на температурном отжиге (с использованием графов).
Алгоритм температурного отжига (или алгоритм имитации отжига) — это метод поиска наилучшего решения, основанный на аналогии с отжигом металла. В металлургии металл нагревают, а затем медленно охлаждают, чтобы атомы успели перестроиться и занять наиболее устойчивое положение с минимальной энергией. В оптимизации этот процесс используют для поиска глобального минимума или максимума сложной функции: алгоритм иногда принимает и не самые лучшие решения, чтобы не застрять в локальном оптимуме, а по мере снижения «температуры» всё чаще выбирает только выгодные варианты.
Алгоритм основан на том, чтобы минимизировать «значение» полученного в эту итерацию расписания. «Значение» вычисляется как сумма всех параметров, которые могут быть улучшены, таких как кол‑во «окон» у классов и учителей, равное кол‑во суммарной сложности уроков каждый день, окна в расписаниях профильных классов и так далее
Программа позволяет указать веса каждого из параметров, что позволяет регулировать важность отдельных изменений.
РезультатВ итоге была реализована программа, позволяющая удобно составлять расписания занятий, работать с классами, учителями, кабинетами, профилями, заморозкой уроков. В СуперЗавуч реализован ИИ‑ассистент, помогающий с составлением расписания. А также реализован алгоритм составления расписаний, основанный на температурном отжиге. Программа написана на Python с использованием PyQt5, алгоритм написан на C++.
Программа составила расписания для моей школы за 2 минуты, при этом в школе 80 учителей и 40 классов. Также в расписание около 130 «окон» у учителей, что в среднем 2 «окна» в неделю.

Составленное расписание учителей с помощью СуперЗавуч

Составленное расписание классов с помощью СуперЗавуч

Главная страница сайта
Я создал сайт, где можно скачать программу, а также здесь находится полная документация по использованию программы. Также ссылка на телеграм‑канал и на GitHub‑репозиторий.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Парсер расписаний после хабратестирования: полвторого, RRULE, systemd и производственный календарь | 0 | 9.15 | 01-10-2026 |
| 2 | 🧑💻Первые шаги в мир программирования: юные кодеры в Доме детского ... | 0 | 7.1 | 03-10-2026 |
| 3 | 📄 Воскресенье — удобный день, чтобы собрать задания на неделю ... | 0 | 8.45 | 27-09-2026 |
| 4 | Минпросвещения: у первоклассников расписание построят с учётом трудности учебных предметов | 0 | 9.14 | 01-09-2026 |
| 5 | ИИ в школе: Минпросвещения разработало методические рекомендации для учителей | 0 | 6.37 | 15-09-2026 |
| 6 | Plugins: LessonMark | 0 | 8.16 | 29-09-2026 |
| 7 | DeepSeek и GigaChat вместо учебников: российские учителя массово переходят на нейросети | 0 | 6.6 | 28-09-2026 |
| 8 | DeepSeek и GigaChat вместо учебников: российские учителя массово переходят на нейросети | 0 | 6.6 | 28-09-2026 |
| 9 | Дорогие ученики, в этом посте вы можете найти для себя ... | 0 | 5.32 | 01-10-2026 |
| 10 | Минцифры: «Госуслуги Моя школа» пользуются 16 млн человек | 0 | 11.43 | 02-10-2026 |