Лабораторная работа № 2

Лабораторная работа № 2 #

Проверяемые знания #

  • Знание основ языка HTML.
  • Умение структурировать HTML-документы.
  • Знание основ языка CSS.
  • Умение применять классы CSS к HTML-элементам.
  • Умение подключать внешние CSS-файлы к HTML-документу.
  • Умение использовать CSS-стили фреймворка Foundation.
  • Знание основ маршрутизации HTTP-запросов с помощью библиотеки http4k.
  • Умение обрабатывать GET и POST-запросы с помощью библиотеки http4k.
  • Умение формировать динамические HTML-страницы с помощью шаблонов Pebble.
  • Умение корректно обрабатывать параметры, приходящие от пользователя:
    • Через маршруты к документам.
    • Через параметры маршрута.
    • Через поля интерактивных HTML-форм.
  • Умение применять средства статического анализа кода Kotlin: ktlint и detekt.
  • Умение сохранять данные в постоянном объектном хранилище. Данные в хранилище должны сохраняться между перезапусками приложения.
  • Умение извлекать данные из постоянного объектного хранилища.
  • Умение оперировать связями между объектами из разных списков объектного хранилища.

Требования к лабораторной работе #

  • Результат работы — исходные коды приложения без артефактов сборки приложения (без каталогов build и .gradle).
  • Приложение должно быть разработано с использованием языка программирования Kotlin.
  • Приложение должно использовать актуальную версию библиотеки http4k.
  • Просмотр документов должен осуществляться через обработку и отправку GET-запросов.
  • Операции по редактированию данных, в том числе по добавлению, должны осуществляться с помощью POST-запросов.
  • Операции по фильтрации данных, включая постраничный вывод, должны осуществляться с помощью GET-запросов.
  • Для стилизации элементов на странице необходимо использовать классы CSS-фреймворков, следует избегать ручного указания CSS-свойств внутри HTML-документов. Вместо этого необходимо описывать собственные CSS-классы.
  • Для формирования динамических HTML-документов необходимо использовать шаблонизатор Pebble.
  • Приложение должно корректно обрабатывать неправильные данные от пользователя:
    • Всегда должны формироваться HTML-документы с корректным содержимым.
    • Приложение не должно показывать исключительные ситуации, стеки вызова и прочее пользователю.
    • В случае отсутствия искомого документа должна отображаться соответствующая страница.
  • Для проверки параметров от пользователя рекомендуется использовать механизм линз библиотеки http4k. Также допускается ручная проверка параметров или привлечение других библиотек.
  • Страницы со списками данных должны корректно обрабатывать ситуацию отсутствия данных. Вместо пустой страницы должно присутствовать информационное сообщение о том, что соответствующих данных нет.
  • Для хранения данных необходимо использовать подход с выделением слоя хранения данных.
  • Для уникальной идентификации объекта в хранилище рекомендуется использовать UUID.

Задача #

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

  1. Отображать стартовую страницу с описанием предметной области.
  2. Обеспечить управление несколькими (2 и более) связными списками данных. Для каждого отдельного списка необходимо:
    1. Отображать список на отдельной странице.
      • Список должен быть отсортирован по дате добавления элемента, если не указано иначе.
      • Элементы списка на данной странице должны показывать минимальный объём информации.
    2. На странице со списком реализовать постраничный вывод информации.
    3. На странице со списком обеспечить фильтрацию данных минимум по двум параметрам.
    4. Реализовать переход к странице с детальной информацией об элементе.
  3. На странице с детальной информацией об элементе необходимо.
    1. Отображать все поля элемента в удобном для восприятия виде.
    2. Реализовать переход к странице информации о связном элементе или списке элементов.
  4. Приложение должно позволять добавлять новые элементы в каждый отображаемый список. Необходимо обеспечить:
    1. Проверку данных во всех полях ввода.
    2. Указание связных объектов необходимо обеспечить с помощью выбора из выпадающего списка.
  5. Приложение должно предоставлять страницу со статистической информацией, подсчитанной относительно двух списков.
  6. На всех страницах должен присутствовать блок навигации, позволяющий переходить между стартовой страницей и страницами списков.

Распределение задач #

Описание задач можно найти в разделе «Лабораторные работы» → «Задачи».

ИВТ-21БО #

Студент Задача
Бердар Александр Иванович Зоопарк
Варданян Армен Авагович Приют для животных
Васильев Иван Игоревич Поиск специалиста
Гиршон Марат Игоревич Кулинарная книга
Григорьева Ольга Леонидовна Театральная касса
Данишевский Данил Александрович Форум
Дрожженикова Алина Сергеевна Совместное финансирование
Казанов Иван Алексеевич Зоопарк
Карелина Ксения Викторовна Продуктовый магазин
Катков Андрей Сергеевич Театральная касса
Корегина Ангелина Алексеевна Поиск специалиста
Королёва Екатерина Сергеевна Приют для животных
Кузнецов Александр Васильевич Продуктовый магазин
Лопаткин Андрей Александрович Поиск специалиста
Лыкова Дарья Олеговна Самиздат
Маркина Екатерина Романовна Ветеринарная клиника
Нелеп Виктория Валентиновна Поиск специалиста
Парамонов Егор Сергеевич Форум
Попов Сергей Михайлович Ветеринарная клиника
Рыбакова Полина Александровна Самиздат
Сироджов Мехрофарид Ибодуллоевич Зоопарк
Тюменцев Дмитрий Евгеньевич Совместное финансирование
Фукин Иван Дмитриевич Ветеринарная клиника
Цыкарев Григорий Алексеевич Продуктовый магазин
Чайковский Сергей Станиславович Самиздат
Шихова Анна Павловна Форум

ИВТ-22БО #

Студент Задача
Бородин Илья Владимирович Поиск специалиста
Бурлова Виктория Александровна Совместное финансирование
Воронин Дмитрий Александрович Ветеринарная клиника
Голубков Кирилл Алексеевич Кулинарная книга
Докшин Захарий Евгеньевич Совместное финансирование
Еров Илья Алексеевич Самиздат
Жигалов Павел Алексеевич Форум
Карпунин Александр Олегович Зоопарк
Киселев Артём Александрович Приют для животных
Кочкин Владимир Александрович Продуктовый магазин
Курепнев Даниил Евгеньевич Самиздат
Лукьянов Александр Сергеевич Театральная касса
Мартынова Алена Олеговна Продуктовый магазин
Митраков Артем Юрьевич Театральная касса
Михайлов Вячеслав Андреевич Кулинарная книга
Михальченков Иван Сергеевич Самиздат
Назаров Данил Олегович Кулинарная книга
Орешников Евгений Дмитриевич Приют для животных
Пестряков Николай Юрьевич Форум
Печенкин Степан Дмитриевич Кулинарная книга
Пискунов Владимир Сергеевич Театральная касса
Роганин Егор Ильич Приют для животных
Тимофеева Александра Максимовна Совместное финансирование
Феклистов Андрей Дмитриевич Зоопарк
Фирсова Анастасия Сергеевна Ветеринарная клиника

© A. M. Васильев, 2022, CC BY-SA 4.0, andrey@crafted.su