Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.
p0jit0h edited this page Dec 25, 2016 · 7 revisions
Welcome to the dsv2pdf wiki!

Задание предполагает разработку двух НЕЗАВИСИМЫХ модулей.

Первый модуль должен реализовывать функцию чтения и разбора представленного файла, соответстующего структуре файла, предоставленной заказчиком. На входе данный модуль должен получать следующие сведения: тип файла(файл с общими вопросами или файл с вопросами по преподавателям, обязательный параметр), адрес файла (обязательный параметр) и символ-делиметер (необязательный параметр). Если делиметер не указан, то в качестве делиметера используется ';'.

Структура файла с результатами ответов по предподавателям.
file = record *(crlf crlf record)[*crlf]
record = "Семестр" delim "Направление" crlf semestre delim specialization crlf question delim teacher_name delim course crlf answers
answers = (variant *(delim variant) crlf count *(delim count)) / (comment *(crlf comment))

Структура файла с общими вопросами.
file = record *(crlf crlf record)[*crlf]
record = question crlf answers
answers = comment *(crlf comment)

  • crlf - символ новой строки (перевода каретки).
  • В круглых скобках указываются связанные в один блок элементы.
  • В квадратных скобках - необязательные элементы.
  • Звездочка (*) перед элементом очзначает, что элемент может повторяться 0 и более раз.

Примеры файлов в root папке проекта: results.csv и common-results.csv.
Эти файлы имеют расширение csv, но не соответствуют спецификации csv файлов!

В результате работы модуль должен возвращать двумерный массив, содержащий данные из файла в соответствии со структурой csv файла (см. документацию), или значение false, если файл не соответствует требуемой струтуре.

Предлагается использовать следующую структуру для двумерного массива, созданного по файлу с результатами ответов по преподавателям:
Первый элемент списка - заголовки столбцов (семестр, направление, преподаватель, предмет, вопрос(тип вопроса), ответы).
Все последующие элементы списка - значения из записей файла.
Поле "ответы" предлагается формировать следующим образом: последовательно указываются значения ответов. Если это ответы-счетчики - то сначала указывается количество ответов для варианта 1, потом 2 и так далее.
В случае, если файл содержит в себе общие вопросы - то из предложенной стркутуры нужно просто убрать ненужные столбцы.

Второй модуль - функцию создания и сохранения инфографики. При этом модуль должен предоставлять возможность пользователю выбрать, какой тип графиков он хочет получить(круговая диаграмма или гистограмма), стиль их оформления(используемые цвета/цветовые схемы), формат сохранения файлов (адрес, расширение и пр.). Для некоторых вопросов невозможно будет построить графики (произвольные комментарии) - для таких вопрос необходимо будет просто вывести ответы.
На входе данный модуль должен принимать массив значений для построения графика (обязательный параметр) и набор "инструкций"(тип графиков, стиль оформления, адрес сохранения и пр.) (необязательный параметр, если не заданы - создается график (тип и стиль оформления заданные по умолчанию) и сохраняется в pdf-файл со сгенерировнным именем).

После того, как будут разработаны данные модули, необходимо будет разработать скрипт для визуализации результатов опросов.

Срок выполнения задания - 4 ноября 2016 г.

UPD(16.12.2016): Добавление модуля для построение графиков, динамики преподователей по годам. Появилась возможность, строить графики динамики преподователя по годам. Добавились следующие аргументы для этого (можно использовать либо только старые аргументы - для работы с CSV файлами, либо толко новые для построение графиков динамики преподователей из монго):
-it {m,c} - выбор между построениеми графиков из монго (m), и парсом CSV (c)
-bd - название импортируемой базы данных
-col - название коллекции
-sur - имя преподователя
-sub - наименование предмета
-spe - названия специальности
-pt - путь к файлу с результатом (результат - сгенерированный .pdf файл с графиком динамики).
Clone this wiki locally