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

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

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

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

Добавлен: 28.03.2023

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

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

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

Введение

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

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

Для выполнения поставленных задач необходимо:

  • Разработать и прописать структуру страниц с использованием HTML;
  • Разработать и создать базу данных;
  • Разработать и написать необходимые для взаимодействия клиента с базой данных функции на PHP, а также функции для разграничения прав и соответствующего доступа к информации пользователей;
  • Разработать и написать каскадные таблицы стилей CSS для комфортного взаимодействия пользователя с разрабатываемым веб-ресурсом.

1. Техническое задание

Разрабатываемый для библиотеки веб-ресурс должен, прежде всего, отвечать следующим требованиям:

  1. Общее количество разделов сайта не менее шести: то есть главная страница, страница новостей, раздел со списком книг, контактная информация, личный кабинет пользователя и панель администратора.
  2. Все страницы сайта должны быть наполнены несущим смысловую нагрузку контентом и спроектированы таким образом, чтоб облегчить восприятие информации для пользователя.
  3. Верстка с использованием связки HTML (HyperText Markup Language) и CSS (Cascading Style Sheets). Серверный код на PHP: Hypertext Preprocessor. Используемая система управления базами данных и соответственно сервер баз данных – MySQL.
  4. Весь функционал сайта должен выполняться безошибочно.
  5. Сайт должен правильно отображаться во всех основных браузерах: Internet Explorer, Google Chrome, Mozilla Firefox, Opera, Safari.
  6. Кодировка веб-страниц – UTF-8.
  7. Пользователи должны разделяться по правам на библиотекарей и читателей. Читатели не должны иметь доступ к панели библиотекаря (админ-панели). Неавторизованные пользователи не должны иметь функционал читателей.

Сайт должен выполнять следующие задачи:

  1. Выводить информацию о библиотеке;
  2. Упрощать возможность контактировать с организацией;
  3. Дать возможность пользователю дистанционно оформить читательский билет;
  4. Содержать информацию об имеющихся в распоряжении библиотеки книгах;
  5. Дать возможность пользователям бронировать книги.

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

  1. HTML5 – последняя версия выбрана для улучшения стабильности отображения сайта на различных платформах, а также для упрощения дальнейшего улучшения и разработки адаптивного дизайна (для мобильных устройств);
  2. CSS3 – каскадные таблицы стилей последнего, на данный момент, поколения;
  3. PHP 7.2.25 – обеспечивает высокую производительность сравнительно предыдущих версий;
  4. MySQL 8.0.18 – обеспечивает возможность большей рабочей нагрузки, а также улучшен в плане управления рабочими нагрузками сравнительно предыдущих версий.
  5. Используемый серверный движок – Apache 2.4.41.

2. Описание модулей серверной части программы и их взаимодействие

Веб-ресурс разрабатывался в MS Visual Studio с подсветкой синтаксиса PHP, SQL, CSS и HTML, поскольку данная среда разработки обладает обширным количеством настроек, удобной навигацией, а также широкой кастомизацией. Интерфейс выбранной среды разработки представлен на рисунке 1.

Рисунок 1

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

Рисунок 2

Подробное описание компонентов общего модуля описано в таблице 1.

Таблица 1

Модуль

Компонент

Назначение компонента

Входные и выходные данные

Регистрация

register.php

Оформление читательского билета, добавление нового пользователя в систему

Входные данные:

users (login, password, role = ‘librarian’, registered (date(now())), email, number, name, birthday, edited=0 (был ли отредактирован профиль)).

Авторизация

login.php

Аутентификация и авторизация пользователя

Входные данные: users (login, password). Выходные данные: users (login, id, role, name), записываются в сессию.


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

Общий модуль, главная страница

index.php

Домашняя страница, ознакомление пользователя с ресурсом

Входные данные: данные сессии (login, name). Выходные данные: модуль новостей events (date, title, info, more), для неавторизованных пользователей справка о портале.

Общий модуль, новости

news.php

Новости и события библиотеки

Входные данные: данные сессии (role). Выходные данные: новости events (id, date, title, info, more).

Общий модуль, список книг

books.php

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

Входные данные: данные сессии (login, role). Выходные данные: список книг с их описанием и доступностью list (id, type, title, author, lang, edition, status).

Общий модуль, контактная информация

contacts.php

Контактная информация, контактная форма обращения в библиотеку.

Входные данные: данные сессии (login, role), данные пользователя users (name, email, number), отправка запроса администратору requests (login, name, email, number, title, request, date, status = ’Отправлено’).

Общий модуль, личный кабинет (профиль) пользователя

user.php

Профиль пользователя и его список активностей (читательский билет)

Входные данные: GET[‘id’] (при наличии) ИЛИ данные сессии (login, name), внесение информации в users (name, birthday, email, number). Выходные данные: данные пользователя users (id, name, birthday, role, email, number, edited). Если edited = 1, то берется SESSION[‘role’]; данные читательского билета readlists (bid, status, date), list (title, author, type, lang, edition).

Данные профиля пользователя могут редактироваться самим пользователем только один раз, что определяет параметр edited. В случае, если edited=1, пользователю не выводится форма редактирования профиля. При этом, если роль в сессии обозначена как библиотекарь, то библиотекарь может редактировать данные пользователя при любом значении edited.

Также профиль пользователя выводится на основании наличия данных, отправленных методом GET. В случае, если GET-запрос пустой, пользователю выводится его читательский билет. В случае, если при этом если данные о сессии отсутствуют, пользователь перенаправляется на страницу авторизации.

Сортировка данных в списке активностей пользователя может быть реализована тремя способами (два – по дате, один – по статусу) и выполняется посредством отправки GET-запроса.

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


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

Подробное описание компонентов модуля администратора описано в таблице 2. Для данного модуля используются не включаемые отдельно компоненты, а функции, запуск которых производится посредством GET-запросов, отправляемых из формы выбора checkbox, в соответствии с необходимым в момент времени функционалом.

Таблица 2

Модуль

Компонент

Назначение компонента

Входные и выходные данные

Модуль администратора

librarian.php

Панель администратора, включающая в себя выбор необходимого функционала

Входные данные: проверка прав пользователя SESSION (role), запрос полного адреса $_SERVER[‘REQUEST_URI’], данные, передаваемые GET. Выходные данные: в соответствии с данными, переданными GET-запросом.

Форма добавления новости “addnews”

Добавление новостей и событий в БД

Входные данные: GET-запрос, запись в таблицу events (date, title, info, more).

Форма удаления новости “removenews”

Удаление записи из таблицы с новостями

Входные данные: GET-запрос, удаление записи из таблицы через получение events (id).

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

Форма добавления книг “addbook”

Добавление книги в БД

Входные данные: GET-запрос, данные о книге list (type, title, author, lang, edition, status =`В наличии’ или status = ‘Только для чтения в зале’.

Форма редактирования информации о книге “editbook”

Внесение изменений в список с перечнем и описанием книг

Входные данные: GET-запрос, list (id, type, title, author, lang, edition, status). Данные вносятся только там, где поля заполнены, таким образом исключается замена существующих данных пустыми.

Форма возврата книги “getbook”

Внесение изменений статуса в список книг, изменение записи в таблице активностей пользователей

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

Форма удаления книги из списка “removebook”

Удаление записи книги из БД из таблицы list и, в случае наличия записей в readlists, удаляет оттуда записи

Входные данные: GET-запрос, данные о книги для list (id) и данные для readlists (bid).

Форма добавления пользователя “adduser”

Добавление пользователя с правами или читателя, или библиотекаря в БД

Входные данные: GET-запрос, данные о пользователе users (login, password, email, number, name, birthday, edited=0, role, registered = date(now())).

Форма удаления пользователя “removeuser”

Удаление всех записей о пользователе из БД (из таблиц users и readlists)

Входные данные: GET-запрос, данные о пользователе для users (id) и для readlists (uid).

Вывод подробного списка книг “booklist”

Вывод подробного списка книг, а также информация о том, кто забронировал или взял книгу, а также кнопка бронирования для книг с параметром status='В наличии'

Входные данные: GET-запрос, в том числе данные GET-запроса для сортировки выводимых результатов по жанрам и по статусу; в зависимости от состава GET-запроса могут добавляться данные для list (type, status). Выходные данные: list (id, type, title, author, lang, edition, status). В случае, если status = ’Выдана’ ИЛИ ‘Забронирована’ также выводятся readlists (uid, date, login, name).


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

Вывод списка пользователей “userlist”

Выводит список пользователей с возможностью быстрого перехода на их профили

Входные данные: GET-запрос, данные о пользователях users (id, login, password, role, name, birthday, email, number, registered).

Список обращений “requests”

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

Входные данные: GET-запрос, requests (id, status). Выходные данные: данные об обращении requests (id, login, name, email, number, title, request, date, status = ‘Отправлено’ ИЛИ ‘Рассматривается`).

Список закрытых обращений “oldrequests”

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

Входные данные: GET-запрос, requests (id, status). Выходные данные: данные об обращении requests (id, login, name, email, number, title, request, date, status = ‘Закрыто’).

Подробная информация о перемещении книг

bookinfo.php

Выводит подробную информацию из readlists как всех книг, так и каких-либо конкретных через GET-запрос

Входные данные: GET-запрос id книги, проверка прав SESSION [‘role’] = ‘librarian’. Выходные данные: readlists (id, bid, uid, status), users (id=uid, login, name), list (id=bid, title, author).

Все данные из вышеперечисленных форм передаются методом POST с дальнейшим редиректом на ту же самую страницу для очистки форм с получением полного предшествующего URL посредством $_SERVER[‘REQUEST_URI’]. Сортировка данных для списка книг также, как и в общих модулях, выполнена с помощью GET-запросов.

Все включаемые модули и отдельно прописанные компоненты описаны ниже в таблице 3.

Таблица 3

Модуль

Компонент

Назначение компонента

Входные и выходные данные

Старт сессии, подключение к БД

connection.php

Файл включается во все страницы, содержит в себе объявление старта сессии, объявление кодировки для сервера и БД, параметры подключения и выбора БД

-

Выводит блок с приветствием или ссылкой на аутентификацию

welcome.php

Включается во все страницы, кроме админ-панели

Входные данные: данные о наличии сессии SESSION[‘role’], SESSION['login'], SESSION['name']. Выходные данные: блок с данными, если нет сессии, вход/регистрация на сайт, если есть сессия – приветствие и кнопка выхода, если права библиотекаря – кнопка входа в панель библиотекаря.

Выход

logout.php

Удаляет данные о сессии, перенаправляет на главную страницу

-

Общие заголовочные данные

head.html

Включается во все страницы. Содержит повторяющиеся заголовочные данные

Входные данные: кодировка, основная таблица стилей, иконка сайта.

«Шапка»

header.html

Включается во все страницы, кроме login.php, register.php и bookinfo.php. Содержит «шапку» сайта и строку навигации

Выходные данные: логотип, название сайта, основные контакты, ссылки на основные страницы.

«Подвал»

footer.html

Включается во все страницы. Содержит «подвал» сайта

Выходные данные: сокращенная (основная) навигация, копирайт.