Логика для субъекта рутинного производителя (PHP)

Я занимаюсь разработкой php-приложения для управления рутиной по предметам и временем преподавания в моем колледже. Однако я не могу понять идею (The Logic) за правильным управлением временем.

Занятия продолжительностью от 50 до 100 минут и с 7 до 14:30.

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

У меня есть базовая настройка таблицы для моего приложения на данный момент, как

Таблица администраторов для входа администратора:

1) идентификатор 2) имя пользователя 3) пароль

Таблица предметов

1) идентификатор 2) имя 3) год 4) семестр 5) теория_марки 6) практика

Стол для учителя

1) id 2) имя 3) должность 4)subject_id 5)teacher_time 6) год (какой год является 1-м, 2-м или 3-м) 7) днем ​​(воскресенье, понедельник и т. Д.)

Моя первая идея была очень простой, чтобы назначить другую таблицу только для дня, которая будет включать столбец в качестве названия дня, а также флаг и идентификатор субъекта, чтобы узнать, является ли день для этого субъекта активным или неактивным. и Время в другой таблице в качестве имени столбца, например, 7:00, 7:30 и т. д., однако это также не разрешает логику флага назначения, поскольку некоторые объекты будут иметь длину 100 минут, а некоторые - только 50 минут.

Как я могу сделать это? Прямо сейчас я невежествен за логикой о том, как управлять временем для предметов и учителей. Пожалуйста, любая помощь будет отличной.

1 ответ

Решение

Все занятия проходят с 7 до 14:30, мы говорим о 7,5 часах. которые 450 минут. Теперь отсутствует ввод: класс может быть запланирован в любое время между 7-2:30? или только в определенные часы, скажем: 7:00, 8:00, ..., 13:00?

Для простоты (а также потому, что это имеет смысл) я предполагаю, что занятия могут проводиться только в определенные часы.

Итак, теперь, когда вы хотите запланировать новый класс, вам нужно будет вызвать функцию PHP, которая будет выглядеть примерно так:

function schedule_class($teacher_id, $subject_id, $day, $hour, $length){
    ...
}

Этот класс будет первым SELECT из БД все занятия, которые этот учитель проводит в этот день, в течение следующего периода:
[$hour - $length, $hour + $length]

Только если вы получили пустой resultset - вы можете пойти дальше и следовать с INSERT,
В противном случае вы должны вывести на экран что-то вроде:

"Class <$subject_name> cannot be scheduled at <$day>/<$hour> 
 since it overlaps with <$subject_name of the conflict-class>"

Кроме того, я бы взял предложение @Havelock и отделить subjects а также teachers,
Кроме того, я бы добавил к subjects поля таблицы start_time а также end_time так что вам будет проще проверить, есть ли конфликт между двумя классами.

Другие вопросы по тегам