Блок задач

2. OOC

Темы
Сложность 3

Задача «Генерация отчётов»

Необходимо реализовать семейство генераторов отчетов. Каждый генератор на вход получает файл из строк key : value (тип key и value — строка) и должен сгенерировать и вывести отчет, основанный на этих записях.

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

Пример входного файла:

reserved_tickets : 500
sold_tickets : 300
...
returned_tickets : 10
best_cashier : Kate

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

Форматированный текст выводится на консоль, в простой текстовый файл и в HTML-файл со сложным форматированием.

Реализация

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

  • Вывод одной записи
  • Вывод разделителя между записями
  • Количество записей на странице
  • Вывода верхнего колонтитула
  • Вывода нижнего колонтитула

Необходимо реализовать три генератора:

  1. Простой генератор

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

    • Вывод одной записи — в файл. key записывать в верхнем регистре, разделитель - на усмотрение студента, value — в нижнем регистре.
    • Вывод разделителя между записями — (на усмотрение студента)
    • Количество записей на странице — (на усмотрение студента)
    • Вывода верхнего колонтитула — номер страницы
    • Вывода нижнего колонтитула — номер страницы
  3. Генератор в файл HTML

    • Реализация всех способов вывода полностью на усмотрение студента, однако необходимо использовать базовые возможности HTML — использование цвета текста, bold, italic, возможно таблицы.

Иерархия классов объектов:

Generator
|- ConsoleGen
|- TextGen
+- HtmlGen

Примечание

Задача должна быть реализована на базе фреймворка OOC.