Руководство системного администратора



Введение

Олимпиадное программирование – относительно молодое направление в программировании, сосредоточенное на решении формальных задач с максимальной эффективностью в плане времени исполнения и объёма затрачиваемой памяти. Самым эффективным способом практики этого вида программирования являются соревнования, проводимые, например на сайтах codeforces.com или topcoder.com. Такие соревнования длятся несколько часов и предлагают несколько задач различной сложности. Чем быстрее и больше участник решил — тем больше он молодец.

Каждую неделю в СОГУ проводятся тренировки по программированию. Для отслеживания результатов каждый месяц подводят итоги по количеству решенных задач. Для упрощения этого процесса было принято решение о создании приложение для автоматизации.

Постановка задачи

По опубликованным на сайте Codeforces.com итогам тренировок сформировать статистику решения задач участниками тренировок. Создать таблицу результатов тренировки, состоящую из имени участника, его псевдонима, количества решенных им задач во время тренировки и после нее за каждый отчетный месяц. Представить данные в виде таблицы и диаграммы. Данные о каждом месяце должны сохраняться. Публиковать результаты в группе VK.

 

Глава 1. Теоретическая часть

О сайте Codeforces.com

Codeforces – это удобная платформа для создания, проведения и обсуждения соревнований по программированию. Это больше чем новостной портал. Совершенно независимо от администраторов сайта у пользователей есть возможность самостоятельно подготовить и провести соревнование. Пользователи сами решают, будет оно открыто для всех или будет локальным соревнованием для определенного университета. После соревнования сайт предоставляет возможность посмотреть результаты: место в рейтинге, количество решенных задач, количество штрафов, полученных во время соревнования.

Описание структуры страницы (таблицы) с результатами на сайте Codeforces.com

Таблица с результатами определенной тренировки находятся в теге “table” с атрибутом class="standings".

Типовая таблица результатов соревнования с сайта Codeforces (Таблица 1)

В первом столбце указывается место участника в рейтинге, во втором его псевдоним и в третьей - количество задач, решенные данным участником (остальные столбцы нас не интересуют). Если строка с псевдонимом содержит знак «*», то в данной строке указывается количество задач, решенных после тренировки. Если строка содержит знак «#», то участник является виртуальным (его результат учитывать не надо).

 

Глава 2. Практическая часть [2]

Словесное описание

Для хранения данных об участнике требуется список Person, в котором будут храниться:

1) Псевдоним участника;

2) Количество решенных им задач во время тренировки;

3) Количество решенных им задач после тренировки.

Поскольку количество участников тренировки разное, все данные собираются в список списков.

Программа получает HTML код страницы, ищет тег table с атрибутом class="standings", потому что в нем хранится необходимая нам информация, и сохраняет эту таблицу в список списков, описанный ранее (назовем его таблицей результатов). После этого обрабатывает каждую строку таблицы:

1) определяет Nickname пользователя из второго столбца;

2) если в списке с собранными данными отсутствует данный пользователь, то добавляется новый список Person и указываются данные о решенных задачах этого пользователя;

3) если Nickname уже был в списке, то приплюсовывается количество решенных им задач в этой таблице (в этой тренировке) с количеством решенных задач в предыдущих тренировках;

4) таблица сохраняется в HTML файл.


Сводная таблица результатов соревнования, разработанная в проекте (Таблица 2)

 

Пример кода страницы с Таблицей 1 (с сайта Codeforces.com)

Пример кода страницы с таблицей 2

Блок-схема

                         

Глава 3. Документация

Руководство пользователя

Данное приложение состоит из окна браузера, кнопок навигации (находятся в верхней части приложения, см. Рис. 1) и функциональных кнопок (находятся в нижней части приложения, см. Рис. 2)


Рис. 1

 

Рис. 2

При запуске приложения браузер загружает страницу для авторизации на сайте Codeforces.com. Для того чтобы создать таблицу результатов нужно добавить в приложение необходимую информацию. Для этого требуется перейти на страницы содержащие таблицы с результатами тренировок (см. Пример таблицы 1) и каждую добавить нажатием на соответствующую кнопку (Добавить). Для сохранения требуется нажать на кнопку «Сохранить» и выбрать путь сохранения.

Руководство системного администратора

Данное приложение предназначено для автоматизации подведения итогов по тренировкам на сайте Codeforces.com. Для запуска приложения требуется файл “ParseCF.exe” и в одной папке с ним следующий перечень файлов (которые являются компонентами библиотек “ Awesomium” и “HtmlAgilityPack”):

· avcodec-53.dll

· avformat-53.dll

· avutil-51.dll

· Awesomium.Core.dll

· Awesomium.Core.xml

· awesomium.dll

· Awesomium.Windows.Forms.dll

· Awesomium.Windows.Forms.xml

· awesomium_process

· codeforces.ico

· debug.log

· diagram37.ico

· favicons.png

· HtmlAgilityPack.dll

· HtmlAgilityPack.pdb

· HtmlAgilityPack.xml

· icudt.dll

· inspector.pak

· libEGL.dll

· libGLESv2.dll

· ParseCF.exe.config

· ParseCF.pdb

· xinput9_1_0.dll

Руководство программиста

Цикл работы программы

Цикл работы программы можно разделить на следующие этапы:

1. Добавление таблиц в память. За это отвечают функции AddPage_Click() и AddFile_Click(), с окна браузера и через файл соответственно.

2. Сохранение таблицы. Функция Save_Click() циклом обрабатывает каждую таблицу, находящуюся в памяти (переменная Pages), сохраняет данные. Функция CreateTable() формирует HTML документ – таблицу результатов и файл *.bm (специальные формат для повторного использования результатов).

Структура *.bm файлов

В начале файла находятся HTML код таблиц результатов соревнований с сайта Codeforces.com
(см. Таблица 1), далее символ с кодом 4045 в кодировке Юникод, названия тренировок в порядке, соответствующем порядку таблицы в этом файле, каждое через символ с кодом 4044 в кодировке Юникод. После названий тренировок символ с кодом 4043 и аналогично названиям вводятся ссылки на таблицу с тренировками (см. Таблица 1).


Дата добавления: 2019-08-31; просмотров: 163; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!