- •Пояснительная записка к курсовой работе
- •Введение
- •Основная часть
- •2.1 Архитектура и структура программного решения
- •2.2 Описание модели данных
- •2.2.1 Класс Order
- •2.3 Контроллеры и серверная логика
- •2.5 Фронтенд-реализация и стилизация
- •2.5.2 Обработка событий и взаимодействие
- •2.6 Сборка проекта и конфигурация Maven
- •2.7 Процесс взаимодействия пользователя с системой
- •2.8 Тестирование и проверка корректности работы
- •Заключение
- •Список использованных источников
- •Приложение а
- •Приложение в
2.2 Описание модели данных
2.2.1 Класс Order
Класс Order представляет собой основную сущность системы – заказ на перевозку груза. Содержит следующие поля:
id – уникальный идентификатор заказа;
clientName – ФИО отправителя;
phone – контактный телефон;
fromCity – город отправления;
toCity – город назначения;
length, width, height – габариты груза;
price – рассчитанная стоимость перевозки;
dateTime – дата и время создания заказа.
Каждому полю соответствуют методы доступа, обеспечивающие инкапсуляцию данных.
2.2.2 Класс Route
Класс Route описывает маршрут между двумя городами с базовой стоимостью перевозки:
fromCity – город отправления;
toCity – город назначения;
basePrice – базовая цена маршрута.
Класс City
Класс City представляет город в системе: name – название города.
2.2.4 Класс OrderService
Центральный сервис, управляющий созданием и хранением заказов:
createOrder() – создаёт новый заказ, используя PriceCalculator для расчёта стоимости;
saveOrder() – сохраняет заказ в текстовый файл orders.txt;
getAllCities() – возвращает список всех доступных городов;
getDestinations() – возвращает города назначения для выбранного города отправления.
2.2.5 Класс PriceCalculator
Реализует бизнес-логику расчёта стоимости перевозки. Загружает данные о маршрутах из файла routes.txt. Рассчитывает итоговую стоимость на основе:
базовой цены маршрута;
объёма груза (длина × ширина × высота);
коэффициентов за превышение габаритов.
2.3 Контроллеры и серверная логика
2.3.1 Класс BaseController
Базовый класс-контроллер, от которого наследуются все обработчики запросов. Реализует общую функциональность:
настройку CORS для кросс-доменных запросов;
парсинг query-параметров и данных формы;
отправку JSON и HTML-ответов;
обработку и форматирование ошибок.
2.3.2 Класс CitiesController
Контроллер обрабатывает запросы к эндпоинту /api/cities. Выполняет функции:
Возврат списка всех городов (при GET-запросе без параметров).
Обработка CORS preflight-запросов (при OPTIONS-запросе).
Контроллер получает список городов из OrderService, преобразует его в JSON-формат и отправляет клиенту.
2.3.3 Класс DestinationsController
Контроллер обрабатывает запросы к эндпоинту /api/destinations. Выполняет функции:
Возврат городов назначения (при GET-запросе с параметром from).
Валидация входных параметров.
Контроллер извлекает параметр from, передаёт его в OrderService для получения списка доступных направлений и возвращает результат в формате JSON.
2.3.4 Класс OrderController
Контроллер обрабатывает POST-запросы к эндпоинту /api/order. В рамках обработки:
считывает данные формы (ФИО, телефон, маршрут, габариты);
выполняет валидацию (проверка заполненности, уникальности городов);
создаёт объект Order через OrderService;
возвращает JSON с ID заказа и рассчитанной стоимостью.
При успешном создании заказ сохраняется в файловое хранилище, а пользователь получает подтверждение.
2.3.5 StatusController и HomeController
StatusController — предоставляет эндпоинт /api/status для проверки работоспособности сервера.
HomeController — отображает главную страницу сервера с информацией о 2.4 Реализация пользовательского интерфейса.
2.3.6 Класс ServerApp
Серверная часть — работает на порту 8080, реализует REST API для обработки запросов, содержит бизнес-логику и управление данными. Основана на встроенном HTTP-сервере Java.
2.3.7 Класс ClientApp
Клиентская часть — работает на порту 3000, предоставляет веб-интерфейс для пользователей. Генерирует HTML-страницы и обрабатывает взаимодействие с сервером через JavaScript.
2.4.1 Главная страница
Главная страница содержит:
краткое описание назначения системы;
центральный блок с информацией о форме для заказа;
кнопки выбора городов для перевозки, создания заказа.
Элементы оформлены в едином стиле и вынесены в центральную область страницы.
2.4.2 Форма создания заказа
Форма содержит следующие поля ввода:
имя;
номер телефона;
город отправления;
город назначения;
выбор габаритов груза: ширина, высота, длина;
кнопка создания заказа.
Поля проверяются на заполненность. После отправки формы данные передаются POST-запросом на сервер.
