Курсовая работа: Разработка базы данных для системы учета посещаемости

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Гиперссылка - специализированное поле для записи URL адресов. При щелчке на ссылке автоматически запускается браузер и открывается содержащаяся в поле URL-ссылка.

Мастер подстановок - это объект, который автоматически подставляет данные из другого поля другой таблицы и выводит его в виде списка (рис. 1.7).

Рисунок 1.7 - Список мастера подстановок

1.6 Предметная область

Предметная область базы данных - часть реального мира, которая рассматривается в границах выбранного контекста.

Объектное ядро предметной области - это группа объектов рассматриваемого мира, относящиеся к данной предметной области.

Сущность предметной области - совокупность однотипных объектов.

Примеры сущностей (с точки зрения ИС): ученик, группа учеников, класс, время занятий, числа. Быть объектом - это означает быть дискретным и различимым. Невозможно классифицировать как объект предметной области мир, время, смысл.

Ситуации - это взаимосвязи, отражающие отношения объектов друг с другом.

Модель предметной области - это проекция наших знаний о данной предметной области. Они могут быть в виде неформальных знаний в голове эксперта, а также они могут быть выражены формально с помощью каких-либо средств ( текстовые описания, наборы должностных инструкций и т.п.) Текстовый способ малоэффективен. Более информативны и полезны специализированные графические нотации.

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Предметная область

Во многих учебных заведениях еще принято вести учёт посещаемости обучающихся на бумажных носителях. Данный способ имеет как плюсы так и минусы, но в целом является устаревшим и неудобным, поскольку получение статистических данных занимает достаточно большое время. А в случаях, когда число обучающихся слишком велико эта задача становиться практически невыполнимой.

На замену «бумажному» учёту приходит автоматический учёт. Он способен без лишних временных и физиологических затрат отметить посещаемость студента в данный день и с такой же лёгкостью предоставить статистические данные как по всему учебному заведению, так и по конкретной группе обучающихся.

Предметная область данного курсового проекта - это учёт посещаемости.

Ядро этой предметной области составляют обучающиеся, преподаватели и прочие получатели статистической информации, а также технический персонал, способный вводить данные или редактировать их.

Сущностями данной предметной области будут являться: группы, учащиеся, преподаватели, визиты, месяцы обучения, показатели групповой посещаемости за один день.

Ситуациями являются: отношения студентов с содержащими их группами, отношения визитов и студентов, их производящих, а также процента групповой посещаемости с конкретной группой.

2.2 Концептуальное проектирование

При проектировании сложных систем на основе баз данных очень важным элементом является проработка концепции и построение всевозможных текстовых и графических схем. Это необходимо для полного понимания того, над чем предстоит работать в ходе создания базы данных и какие данные будут храниться в базе, а также их структуру и взаимодействия между собой и внешними программами.

Один из первых этапов в проектировании базы данных является создание концептуальной модели, которая должна отображать общую структуру базы данных, то есть показывать основные сущности (таблицы) и взаимосвязи этих сущностей.

Сущностями для проектной базы данных являются: группы, обучающиеся, учителя, месяцы, дневная групповая статистика, выходные, визиты, дисциплины и оценки.

Взаимосвязи сущностей: идентификатор группы содержится в каждой записи студентов (каждый студент имеет свою группу), в каждой записи дневной статистики группы (каждая запись ссылается на конкретную группу), а также в каждой записи дисциплины (каждая дисциплина относится к конкретной группе), каждый визит содержи идентификатор студента, который произвёл этот визит, каждая запись дисциплины помимо «ссылки» на группу имеет «ссылку» на преподавателя, который этим предметом заведует, а также связь имеют сущности оценка, дисциплина и ученик (оценка отсылается на конкретную дисциплину и конкретного ученика).

Более подробно это можно увидеть на концептуальной модели данных (рис. 2.1).

Рисунок 2.1- Концептуальная модель

2.3 Логическое проектирование

При логическом проектировании разрабатывается модель базы данных, основываясь на конкретной системе управления базами данных. Данная модель отражает названия таблиц и столбцов в том виде, в котором они будут находиться в базе данных, также для каждого столбца указывается тип, данных, которые будут в нём храниться и некоторые свойства, например автоинкремент и primary key.

Перед началом проектирования логической модели данных, необходимо определить какая система управления базами данных будет использоваться для создания проекта. При написании этого курсового проекта была выбрана связка MySQL, PhpMyAdmin (для более удобного манипулирования СУБД), php, html, css, JavaScript (в качестве интерфейса для системы). Предполагается, что система будет функционировать на выделенном сервере (локальном или удалённом) и иметь возможность выполнять операции в фоновом режиме, иначе система может работать некорректно.

Логическая модель данных содержит следующие элементы:

groups (содержит поля: id, которое является ключевым, title), students (содержит поля: id (является уникальным и в отличии от всех остальных полей идентификации имеет тип VARCAR, это связано с тем, что идентификатор студента - это идентификатор RFID-метки, которая ему выдаётся), group_id (имеет тип INT), full_name, login (хранит логин ученика), password (хранит хэш-сумму от пароля ученика (функция md5))),

teachers (содержит поля: id, full_name, login, password),

visits (содержит поля: id, student_id (имеет тип VARCHAR, т.к. ссылается на id студента), date (имеет тип VARCHAR длинной 10 символов, т.к. хранит строку, возвращаемую php-функцией date("d/m/Y") (например, «11/11/2021»))),

daily_group_statistics (содержит поля: id, group_id, date, percent (имеет тип INT и содержит процент посещаемости указанной группы в указанные день)), база данный интерфейс автоматический

month (содержит поля: id, month ( хранит строку вида: «/11/2021»)),

weekends (содержит поля: id, date),

disciplines (содержит поля: id, title (содержит название предмета), group_id (идентификатор группы, которой принадлежит этот предмет), teacher_id (преподаватель, заведующий этим предметом)),

scores (содержит поля: id, score (оценка 2-5), discipline_id, student_id, date).

Графический вид логической модели базы данных представлен на рисунке 2.2

Рисунок 2.2 - Логическая модель

2.4 Физическое проектирование

Физическое проектирование заключается в непосредственном создании базы данных на ранее выбранной СУБД. Как ранее уже было сказано, в данном проекте используется MySQL+phpMyAdmin.

После создания базы данных необходимо создать таблицу (рис. 2.3, 2.4). Таким образом были созданы все таблицы, описанные в логической модели (рис. 2.5).

Рисунок 2.3 - Создание таблицы

Рисунок 2.4 - Создание таблицы

Рисунок 2.5 - Таблицы базы данных

Создавать связи между таблицами можно в разделе «Структура» > «Связи». В данном разделе (рис. 2.6) необходимо указать поле, в которое будет производиться подстановка, а также поле из которого будет производиться подстановка. При вставке (рис. 2.7) в поле, куда производиться подстановка появляется выпадающий список, со значениями из подставляемой таблицы.

Рисунок 2.6 - Добавление связей

Рисунок 2.7 - Вставка записей

Таблицы были заполнены данными (рис. 2.8).

Рисунок 2.8 - Заполненные таблицы

2.5 Интерфейс

2.5.1 Структура веб-сайта

Структура веб сайта относительно корня:

css/

style.css

main.css

diary/

student/

index.php

teacher/

discipline/

index.php

index.php

index.php

login.php

forgettable/

getstudentsfromgroup.php

index.php

img/

js/

scripts.js

checkreq.php

footer.php

header.php

index.php

updatedataindb.php

vars.php

Css содержит файлы каскадных таблиц стилей, описывающих визуальную составляющую сайта. Js содержит файл скриптов, благодаря которому на сайте работают интерактивные элементы. Img содержит картинки, которые используются в интерфейсе.

Diary - это директория электронного дневника, переходя в которую пользователя переносит либо на страницу студента (student), либо на страницу преподавателя (teacher). Forgettable содержит интерфейс для добавления студента, который забыл или потерял RFID-метку. index.php - это главная страница сайта.

Файл vars.php содержит переменные, которые используются на большинстве страниц сайта, например, переменная подключения к базе данных, текущий день и выбранные месяц (фильтр). Header.php содержит верхнюю часть сайта, которая не меняется от страницы к странице, а также подключения файлов стилей. Footer.php содержит подключение js-скриптов и закрывающие теги.

2.5.2 Главная

Главная страница (рис. 2.9) состоит из статичной шапки (не меняется для любой страницы сайта) и основного блока с контентом, который содержит интерактивный график посещаемости всего учебного заведения и селектор с выбором месяца, данные которого будут отображаться на графике.

График посещаемости строиться благодаря js-библиотеке charts.js. Для этого на странице расположен блок «<canvas id="grafica"></canvas>» в который помещается график, а также блок со скриптом (рис. 2.10). В этом скрипте создаётся два массива: с датами и процентами посещаемости.

Рисунок 2.9 - Главная страница

Рисунок 2.10 - Скрипт генерации графика

2.5.3 Дневник

Переходя по ссылке на страницу дневника пользователь попадает в index.php, где с помощью этого кода (рис. 2.11) проверяется авторизован ли пользователь.

Если у пользователя открыта сессия под названием autorization, то значит пользователь авторизован и его следует перебросить в соответствии с типом его ученой записи на страницу студента или страницу преподавателя.

Если у пользователя не открыта эта сессия, значит он не авторизован и его следует перебросить на страницу авторизации (login.php).

На странице авторизации повторно проверяется наличие сессии. При ее отсутствии на страницу выводиться форма авторизации (рис. 2.12). После ввода данных они попадают в этот же скрипт, где пароля хэшируется (md5($password)) и сначала данные ищутся в таблице со студентами, а затем в таблице с преподавателями (рис. 2.13).

Рисунок 2.11- Проверка авторизации

Рисунок 2.12 - Форма авторизации

Рисунок 2.13 - Аворизация

2.5.4 Студент

Страница студента (рис. 2.14) состоит из графика посещаемости группы, в которой он состоит и таблицы с оценками, в корой ячейки с датами имеют разные цвета (если пользователь в этот день присутствовал (отмечен в визитах), то ячейка имеет фиолетовый цвет).

Рисунок 2.14 - Страница студента

2.5.5 Преподаватель

На странице преподавателя выводятся предметы, которыми заведует этот преподаватель.

На странице предмета (рис. 2.15) расположен график посещаемости группы и таблица управления оценками, в которой ячейки окрашиваются в разные цвета, в зависимости от того, был ли этот ученик в этот день.

Рисунок 2.15 - Страница предмета

2.5.6 Проверка визита

Запись визитов производиться специальным устройством, которое считывает UID метки, который является id студента, имеющего эту метку. Далее это устройство посылает этот UID файлу checkreq.php, который ищет студента с таким id и если находит, то записывает его в таблицу визитов, отравляя устройству ответ «Ok!», тем самым давая понять, что это этот человек «свой» и его можно пропустить (открыть турникет) (это необязательная, но возможная функция).

Если checkreq.php не нашёл данного студента с таблице, то оно сообщает об этом в виде текста «error».

2.5.7 Запись визита

Если учащийся забыл свою метку-пропуск, то есть возможность ввода данных в ручную. Это может делать сторож вахтёр. Для этого существует страница forgettable (рис. 2.16), здесь можно выбрать группу и с помощью AJAX-запроса студенты из этой группы автоматически подгрузятся в элемент <select>. И с помощью той же технологии AJAX идентификатор студента отправляется checkreq.php, аналогично, как это делает специальное устройство.

Рисунок 2.16 - Отметить студента

2.5.8 Автоматическое обновление данных в базе

В базе данных имеется таблица daily_group_statistics, на основе этой таблицы строиться вся логика работы с датами. Если в этой таблице не будет отмечена посещаемость хотя бы одной группы в определённый день, то этот день будет считаться выходным и будет исключён из общей выборки для графиков, а как следствие для таблиц с оценками, т.к. они строятся на датах, полученных при генерации графика. Поэтому очень важно ежедневно добавлять в таблицу ежедневной посещаемости групп новые данные. Этим занимается скрипт updatedataindb.php, который выполняется ежедневно в 23.00 (или другое удобное время) через задачи cron.

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

Источник: https://otherreferats.allbest.ru/download/1325560/