Логика для субъекта рутинного производителя (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
так что вам будет проще проверить, есть ли конфликт между двумя классами.