Файл: Разработка сайта библиотеки MyLibrary.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 265

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Продолжение таблицы 3

Функция для бронирования книги

add.php

Сюда производится редирект со страниц, где есть функция бронирования книги

Входные данные: получение id книги посредством GET-запроса, получение данных, откуда перешли from, посредством GET для дальнейшего редиректа на ту страницу, получение данных сессии (id), апдейт таблицы list (status = ‘Забронирована’, id), добавление записи в readlists (uid, bid, status = ‘Забронирована’, date = date(now())).

Функция для снятия брони

remove.php

Сюда производится редирект со страниц, где есть функция снятия брони с книги

Входные данные: получение id книги посредством GET-запроса, получение данных, откуда перешли from, посредством GET для дальнейшего редиректа на ту страницу, получение данных сессии (id), апдейт таблицы list (status = ‘В наличии’, id), удаление записи в readlists (uid = SESSION[‘id’] AND bid = GET[‘id’]).

Ниже на рисунке 3 представлено дерево функций, доступных неавторизованному пользователю.

Рисунок 3

На рисунке 4 представлено дерево функций, доступных авторизованному пользователю с правами читателя (пользователя).

Рисунок 4

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

Рисунок 5

3. Описание структуры базы данных

Подключение к базе данных осуществляется через включаемый файл connection.php посредством обновленной версии драйвера реляционных баз данных для PHP MySQL – MySQLi. Также для упрощения масштабирования объема сайта и снижения объема написания кода данный включаемый файл содержит функцию начала сессии, а также объявление кодировок. Код, написанный в соответствующем файле, представлен на рисунке 6.

Рисунок 6

Структура разработанной базы данных показана на рисунке 7.

Рисунок 7

В таблице 4 описана таблица ‘users’. Таблица ‘users’ используется для хранения данных о пользователях, вводимых при регистрации и редактировании профиля. Также информация в эту таблицу может быть введена на основании заполнения контактной формы в случае, если до этого такие данные как электронная почта, номер телефона и имя не были заполнены. Поле registered заполняется автоматически при регистрации или добавлении администратором пользователя в соответствии с функцией SQL date(now()). Также при регистрации пользователя через register.php пользователю автоматически даются права читателя (обычного пользователя), чему соответствует значение ‘user’ поля role. При регистрации автоматически заполняется поле edited со значением 0, что означает, что пользователь еще не редактировал профиль.


Таблица 4

Идентифи-катор

Тип, длина

Параметры

Название

id

int(4)

AUTO_INCREMENT

PRIMARY_KEY

NOT_NULL

Идентификационный номер пользователя

login

varchar(20)

INDEX

UNIQUE

NOT_NULL

Уникальное имя пользователя

password

varchar(100)

NOT_NULL

Пароль пользователя

role

set(‘librarian, ‘user’)

NOT_NULL

Роль (права) пользователя

registered

date

NOT_NULL

Дата регистрации

email

varchar(100)

NULL

Электронная почта

number

varchar(12)

NULL

Номер телефона

name

varchar(50)

NULL

ФИО пользователя

birthday

date

NULL

Дата рождения

edited

int(1)

NULL

Внесение изменений в данные пользователя самим пользователем

В таблице 5 описана таблица ‘list’. Таблица ‘list’ используется для хранения данных о книгах, находящихся в распоряжении библиотеки. Таблица заполняется на основе данных, вводимых библиотекарем (администратором), при этом изменения статуса книги могут также редактироваться пользователем (бронирование и снятие брони), что отражается в учете активностей пользователя. Также, помимо редактирования информации в целом, администратор имеет широкий функционал по изменению статуса книги, отражаемого в активностях пользователя, то есть таблице ‘readlists’: выдача, возврат и бронирование книги.

Таблица 5

Идентификатор

Тип, длина

Параметры

Название

id

int(11)

AUTO_INCREMENT

PRIMARY_KEY

NOT_NULL

Идентификационный номер книги

type

set('Художественная литература', 'Документальная проза', 'Мемуары', 'Научная литература', 'Научно-популярная литература', 'Справочная литература', 'Учебная литература', 'Техническая литература', 'Психология и саморазвитие')

NOT_NULL

Жанр книги

title

varchar(100)

NOT_NULL

Название книги

author

varchar(100)

NOT_NULL

Автор книги

lang

varchar(100)

NOT_NULL

Язык книги

edition

varchar(535)

NOT_NULL

Данные об издании

status

set('В наличии', 'Забронирована', 'Выдана', 'Только для чтения в зале')

NOT_NULL

Статус и доступность книги


В таблице 6 описана таблица ‘readlists’. Таблица ‘readlists’ используется для хранения данных об активностях пользователей и выполняет функции читательского билета. Данные таблицы связаны с таблицами users (uid – id пользователя) и list (bid – id книги, а также status, значения которого аналогичны значениям соответствующего поля). Поле date автоматически заполняется при учете активности в соответствии с date(now()).

Таблица 6

Идентификатор

Тип, длина

Параметры

Название

id

int(11)

AUTO_INCREMENT

PRIMARY_KEY

NOT_NULL

Идентификационный номер активности

uid

int(11)

NOT_NULL

ID пользователя

bid

int(11)

NOT_NULL

ID книги

status

set(‘Забронирована’, ‘Возвращена’, ‘Взята’)

NOT_NULL

Статус книги

date

date

NOT_NULL

Дата активности

В таблице 7 описана таблица ‘requests’. Таблица ‘requests’ используется для хранения обращений через контактную форму гостей и пользователей сайта. В случае, если пользователь авторизован, таблица взаимодействует с таблицей ‘users’, беря оттуда в соответствии с login = $_SESSION[‘login’] значения полей name, email и number. В случае, если эти поля не заполнялись при регистрации, но заполнялись при обращении, данные в таблице с данными пользователей автоматически заполняются. Также, в случае, если пользователь авторизован и взаимодействует с формой обращения и если у него заполнены все данные в таблице ‘users’, поля для заполнения контактных данных не выводятся и отправляются автоматически.

Таблица 7

Идентифи-катор

Тип, длина

Параметры

Название

id

int(10)

AUTO_INCREMENT

PRIMARY_KEY

NOT_NULL

Идентификационный номер обращения

login

varchar(100)

INDEX

NULL

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

name

varchar(535)

NOT_NULL

Имя обращающегося

email

varchar(65)

NOT_NULL

Электронная почта

number

varchar(12)

NOT_NULL

Номер телефона

title

varchar(535)

NOT_NULL

Тема обращения

request

text

NOT_NULL

Текст обращения

date

date

NOT_NULL

Дата обращения

status

set('Отправлено', 'Рассматривается', 'Закрыто', 'На регистрацию'

NOT_NULL

Статус обращения


В таблице 8 описана таблица ‘events’. Данные таблицы полностью заполняются вручную библиотекарем (за исключением id) через соответствующую форму в панели администратора. На главной странице сайта список новостей ранжируется по дате, делясь на три смысловых блока: сегодняшние новости или события, будущие и прошедшие. Прошедших событий (новостей) при этом выводится только пять. На основной же странице новостей выводится полный список, отсортированный по дате.

Таблица 8

Идентификатор

Тип, длина

Параметры

Название

id

int(11)

AUTO_INCREMENT

PRIMARY_KEY

NOT_NULL

Идентификационный номер новости/события

date

date

NOT_NULL

Дата новости/события

title

varchar(535)

NOT_NULL

Заголовок новости/события

info

varchar(535)

NULL

Информация о событии (текст новости)

more

varchar(150)

NULL

Ссылка на более подробное описание при наличии

Пример запроса к базе данных с сортировкой через GET-запрос представлен ниже на рисунке 8.

Рисунок 8

Пример запроса к базе данных с отправкой данных через POST представлен ниже на рисунке 9.

Рисунок 9

4. Описание структуры клиентской части

4.1. Описание интерфейса пользователя

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

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


Форма входа на сайт представлена на рисунке 11. Форма регистрации – на рисунке 12. После регистрации пользователю даются права читателя. По завершении регистрации, пользователь перенаправляется на главную страницу. После авторизации в системе, содержимое блока приветствия (вызываемый файл welcome.php) меняется, а также убирается блок с информацией о том, как получить читательский билет (рисунок 13). С этого момента пользователь может бронировать книги.

Рисунок 10

Рисунок 11

Рисунок 12

Рисунок 13

На рисунке 14 представлена страница новостей и событий библиотеки.

Рисунок 14

На рисунке 15 представлена страница со списком книг. Формы выбора жанра и статуса книг предоставляют пользователю сортировку и отбор данных (реализовано методом GET) Для неавторизованного пользователя кнопка «забронировать», отображаемая в случае, если книга в наличии, отсутствует. После бронирования книга отображается у пользователя в профиле в блоке пользовательских активностей (читательский билет), а также появляется кнопка «снять бронь». Профиль пользователя представлен на рисунке 16. Если пользователь снимает бронь, запись полностью удаляется из списка пользовательских активностей, а в таблице со списком книг статус «Забронирована» меняется на изначальный – «В наличии».

Рисунок 15

Рисунок 16

На рисунке 17 представлена имеющаяся в профиле функция изменения данных учетной записи.

Рисунок 17

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

Рисунок 18

Рисунок 19

При выходе из учетной записи, данные о сессии стираются. Код функции, выполняющей удаление данных о сессии, представлен ниже на рисунке 20.

Рисунок 20