Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные. Березин / Курсовая Java. Яковлев.docx
Скачиваний:
0
Добавлен:
01.01.2026
Размер:
251.12 Кб
Скачать

2.2 Описание модели данных

2.2.1 Класс Order

Класс Order представляет собой основную сущность системы – заказ на перевозку груза. Содержит следующие поля:

  1. id – уникальный идентификатор заказа;

  2. clientName – ФИО отправителя;

  3. phone – контактный телефон;

  4. fromCity – город отправления;

  5. toCity – город назначения;

  6. length, width, height – габариты груза;

  7. price – рассчитанная стоимость перевозки;

  8. dateTime – дата и время создания заказа.

Каждому полю соответствуют методы доступа, обеспечивающие инкапсуляцию данных.

2.2.2 Класс Route

Класс Route описывает маршрут между двумя городами с базовой стоимостью перевозки:

  1. fromCity – город отправления;

  2. toCity – город назначения;

  3. basePrice – базовая цена маршрута.

      1. Класс City

Класс City представляет город в системе: name – название города.

2.2.4 Класс OrderService

Центральный сервис, управляющий созданием и хранением заказов:

  1. createOrder() – создаёт новый заказ, используя PriceCalculator для расчёта стоимости;

  2. saveOrder() – сохраняет заказ в текстовый файл orders.txt;

  3. getAllCities() – возвращает список всех доступных городов;

  4. getDestinations() – возвращает города назначения для выбранного города отправления.

2.2.5 Класс PriceCalculator

Реализует бизнес-логику расчёта стоимости перевозки. Загружает данные о маршрутах из файла routes.txt. Рассчитывает итоговую стоимость на основе:

  1. базовой цены маршрута;

  2. объёма груза (длина × ширина × высота);

  3. коэффициентов за превышение габаритов.

2.3 Контроллеры и серверная логика

2.3.1 Класс BaseController

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

  1. настройку CORS для кросс-доменных запросов;

  2. парсинг query-параметров и данных формы;

  3. отправку JSON и HTML-ответов;

  4. обработку и форматирование ошибок.

2.3.2 Класс CitiesController

Контроллер обрабатывает запросы к эндпоинту /api/cities. Выполняет функции:

  1. Возврат списка всех городов (при GET-запросе без параметров).

  2. Обработка CORS preflight-запросов (при OPTIONS-запросе).

Контроллер получает список городов из OrderService, преобразует его в JSON-формат и отправляет клиенту.

2.3.3 Класс DestinationsController

Контроллер обрабатывает запросы к эндпоинту /api/destinations. Выполняет функции:

  1. Возврат городов назначения (при GET-запросе с параметром from).

  2. Валидация входных параметров.

Контроллер извлекает параметр from, передаёт его в OrderService для получения списка доступных направлений и возвращает результат в формате JSON.

2.3.4 Класс OrderController

Контроллер обрабатывает POST-запросы к эндпоинту /api/order. В рамках обработки:

  1. считывает данные формы (ФИО, телефон, маршрут, габариты);

  2. выполняет валидацию (проверка заполненности, уникальности городов);

  3. создаёт объект Order через OrderService;

  4. возвращает JSON с ID заказа и рассчитанной стоимостью.

При успешном создании заказ сохраняется в файловое хранилище, а пользователь получает подтверждение.

2.3.5 StatusController и HomeController

  1. StatusController — предоставляет эндпоинт /api/status для проверки работоспособности сервера.

  2. 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-запросом на сервер.

Соседние файлы в папке Лабораторные. Березин