- •Курсовая работа по дисциплине
- •Введение
- •Постановка задачи
- •Обоснование выбора технологий
- •Разработка структуры программы
- •1. Основные компоненты программы
- •2. Архитектура взаимодействия компонентов
- •3. Структура базы данных
- •4. Конфигурация проекта Maven
- •Разработка собственных классов
- •5.1. Модель данных (Model)
- •5.1.1. Класс Book
- •1. Поля:
- •2. Методы:
- •5.1.2. Класс User
- •1. Поля:
- •2. Методы:
- •5.1.3. Класс CartItem
- •1. Поля:
- •2. Методы:
- •5.2. Слой доступа к данным (dao)
- •5.2.1. Класс BookDao
- •1. Поля:
- •2. Методы:
- •5.2.2. Класс UserDao
- •1. Поля:
- •2. Методы:
- •5.2.3. Класс CartDao
- •1. Поля:
- •2. Методы:
- •5.2.4. Класс DatabaseConnection
- •1. Поля (константы подключения):
- •2. Методы:
- •5.3. Сервлеты
- •5.3.1. Класс BookServlet
- •1. Поля:
- •2. Методы http обработки:
- •5.3.2. Класс AuthServlet
- •1. Поля:
- •2. Методы http обработки:
- •5.3.3. Класс CartServlet
- •1. Поля:
- •2. Методы http обработки:
- •5.4. Конфигурация проекта Maven
- •5.4.1. Файл pom.Xml
- •Сценарии пользователя
- •Удаление книг из корзины.
- •Оформление заказа.
- •Инструкция пользователю
- •Начало работы с приложением
- •Создание личного кабинета
- •Вход в систему для постоянных клиентов
- •Исследование книжного каталога
- •Фильтрация книг
- •Формирование корзины покупок
- •Управление корзиной
- •Оформление заказа
- •Завершение работы
- •Заключение
- •Список литературы
- •Приложение
2. Методы:
2.1. Конструкторы:
User() – конструктор по умолчанию для создания пустого объекта пользователя,
User(String username, String password, String email) – конструктор для регистрации нового пользователя.
2.2. Геттеры:
int getId() – возвращает идентификатор пользователя,
String getUsername() – возвращает имя пользователя,
String getPassword() – возвращает пароль (в учебных целях — в открытом виде),
String getEmail() – возвращает адрес электронной почты.
2.3. Сеттеры:
void setId(int id) – устанавливает идентификатор пользователя,
void setUsername(String username) – устанавливает имя пользователя с проверкой уникальности на уровне DAO,
void setPassword(String password) – устанавливает пароль пользователя,
void setEmail(String email) – устанавливает email с базовой валидацией формата.
5.1.3. Класс CartItem
Назначение: Класс CartItem представляет элемент корзины покупок, связывающий пользователя с конкретной книгой и указывающий количество выбранных экземпляров. Этот класс содержит как ссылки на связанные сущности, так и полную информацию о книге для удобства отображения.
1. Поля:
private int id – уникальный идентификатор элемента корзины,
private int userId – идентификатор пользователя-владельца корзины,
private int bookId – идентификатор книги в элементе корзины,
private int quantity – количество выбранных экземпляров книги,
private Book book – полный объект книги (загружается через JOIN запрос).
2. Методы:
2.1. Конструкторы:
CartItem() – конструктор по умолчанию,
CartItem(int userId, int bookId, int quantity) – конструктор для создания нового элемента корзины.
2.2. Геттеры:
int getId() – возвращает идентификатор элемента корзины,
int getUserId() – возвращает идентификатор пользователя,
int getBookId() – возвращает идентификатор книги,
int getQuantity() – возвращает количество выбранных экземпляров,
Book getBook() – возвращает полный объект книги.
2.3. Сеттеры:
void setId(int id) – устанавливает идентификатор элемента,
void setUserId(int userId) – устанавливает идентификатор пользователя,
void setBookId(int bookId) – устанавливает идентификатор книги,
void setQuantity(int quantity) – устанавливает количество с проверкой на положительное значение,
void setBook(Book book) – устанавливает объект книги (используется при загрузке из БД).
5.2. Слой доступа к данным (dao)
Этот раздел описывает промежуточный слой между бизнес-логикой и базой данных, реализующий паттерн Data Access Object (DAO).
5.2.1. Класс BookDao
Назначение: Класс BookDao (Data Access Object) отвечает за все операции взаимодействия с таблицей books в базе данных. Этот класс инкапсулирует логику SQL-запросов и предоставляет абстрактный интерфейс для работы с книжными данными.
1. Поля:
private static final String GET_ALL_BOOKS_SQL – SQL запрос для получения всего каталога книг,
private static final String DECREASE_QUANTITY_SQL – SQL запрос для уменьшения количества книг при покупке.
