Пояснительная записка (1231610), страница 7
Текст из файла (страница 7)
Запуск и остановка «разморозки» осуществляет нажатием клавиши «вправо» на клавиатуре. В случае, если у пользователя-неудачника нет клавиатуры, то он может запустить «разморозку» нажатием кнопки на web-странице.
В ходе «разморозки» строки в таблице сортируются по убыванию количества решенных задач. Если количество решенных задач одинаково, то строки сортируются по возрастанию штрафного времени.
Штрафное время рассчитывается как сумма по сданным задачам по следующим величинам: время от начала соревнования до первой удачной посылки по задаче, количество неудачных посылок до первой удачной умноженное на двадцать.
В ходе хронологической «разморозки» посылки обрабатываются в том порядке, в котором они были отправлены. Такую «разморозку» можно использовать для визуализации хода соревнования.
В ходе последовательной «разморозки» команды рассматриваются с последних строк таблицы к первым. В случае, если у команды имеются еще посылки – они обрабатываются, и если посылки успешные, то команда поднимается вверх по таблице. Если же посылки у команды закончились, то осуществляется переход к следующей команде. Такая «разморозка» может быть использована для подведения итогов каких-либо соревнований.
В ходе автоматической «разморозки» все действия происходят друг за другом без ожиданий каких-либо действий от пользователя. В случае если пользователь нажмёт на кнопку управления «разморозкой» – она остановится до последующего нажатия на эту же кнопку.
В ходе пошаговой «разморозки» после каждого действия модуль подведения итогов ожидает от пользователя нажатия на управляющую кнопку. Такие паузы в «разморозке» могут быть использованы, например, ведущими для комментирования хода подведения итогов соревнования или для награждения участников, занявших призовые места.
Можно выделить следующие действия, после которых ожидается нажатие на управляющую кнопку:
– подсветка команды, посылки которой рассматриваются (только при последовательной «разморозке»);
– подсветка посылки, которая обрабатывается;
– отображение результата посылки;
– перемещение команды в таблице.
Скорость «разморозки» влияет на величину паузы во время автоматической «разморозки», а так же на скорость анимации перемещения команды в таблице.
Отключение показа времени посылок может быть использовано для приведения таблицы к более компактному и информативному виду.
Дополнительная опция показа посылок заключается в том, будут ли задачи, по которым еще имеются посылки, выделяться в таблице для того, чтобы подготовить пользователя к их обработке.
Включение опции обработки только последний посылки ускорит процесс «разморозки», так как если по задаче было совершено очень много неудачных посылок, то не придётся ждать пока они все обработаются.
Выводы по разделу
Разработанная web-страница с модулем подведения итогов (рисунок 3.9) для своей стабильной работы требует:
– браузеры Google Chrome, Mozila Firefox, Opera или Internet Explorer последних версий;
– 100 мегабайт ОЗУ;
– дополнительное ПО для работы web-страницы не требуется.
Рисунок 3.9 – Таблица с результатами соревнования по программированию
Так как модуль подведения итогов выполнен в виде web-страницы, доступ к нему осуществляется через браузер. Модуль поддерживает работу пользователей, использующих мобильные устройства.
Таким образом, посредством HTML, CSS, JavaScript, PHP, MySQL разработан модуль подведения итогов соревнований по программированию. Помимо этого использованы библиотека jQuery и технология AJAX.
3.3 Технико-экономическое обоснование
Система для проведения соревнований по программированию позволяет автоматизировать организацию и проведение подобных соревнований. Автоматическое тестирование решений задач позволяет ускорить процесс проверки, что позволяет узнавать результаты в течение нескольких минут.
Система Ejudge используется многими высшими учебными заведениями для проведения соревнований. Она позволяет организовывать как очные, так и заочные (онлайн) соревнования. Помимо этого система может быть использована для обучения студентов базовым и продвинутым навыкам программирования.
Для стабильной работы система Ejudge требуется сервер с операционной системой Ubuntu Linux, но пока сложно сделать вывод о том, какие мощности и ресурсы сервера необходимы, так как работоспособность системы проверялась только в тестовом режиме.
Система Ejudge позволяет экспортировать истории посылок соревнований в файлах формата XML, в то время как разработанный модуль подведения итогов принимает на вход файлы такого формата.
Существуют и другие модули подведения итогов, но они не имеют свободного распространения. Более того, так как их, по большей части, используют только организаторы соревнований, они не имеют удобного интерфейса. Зачастую, настройка таких модулей происходит через конфигурационный файл. Кроме того, данные модули способны обрабатывать только истории посылок определённых форматов, отличающихся от привычных для систем проведения соревнований по программированию.
Разработанный модуль подведения итогов лишен подобных минусов, и обладает рядом плюсов:
– обработка историй посылок разных форматов;
– меню с настройками «разморозки», которые можно изменять в любой момент без вреда для работоспособности модуля подведения итогов;
– возможность подключения к модулю подведения итогов с разных платформ, в том числе и мобильных.
При разработке системы для проведения соревнований по программированию с модулем подведения итогов использованы только те средства, которые находятся в способном доступе.
Заключение
В настоящее время командные чемпионаты мира по программированию являются очень востребованными, так как помогают крупным IT организациям находить новых сотрудников. Для проведения подобных чемпионатов используются специальные системы.
В ходе выполнения выпускной квалификационной работы произведён анализ существующих систем для проведения соревнований по программированию и средств для их разработки. На основе анализа спроектирована подобная система, которая обеспечивает решение следующих задач:
– проведение командных соревнований по программированию;
– автоматизация процесса тестирования студентов для сдачи практических зачетов по программированию;
– индивидуальные тренировки по программированию.
Система так же включает в себя программное обеспечение для подведения итогов соревнований по программированию, которое может использоваться вне рамок самой системы.
Система для проведения соревнований по программированию реализована на основе системы Ejudge, модуль подведения итогов разработан в виде web-страницы с использованием таких средств web-разработки, как HTML, CSS, JavaScript, PHP и MySQL, а так же с применением библиотеки jQuery и технологии AJAX.
В текущий момент, модуль подведения итогов полностью функционирует и размещен на хостинге для открытого доступа через Интернет. В то время как система для проведения соревнований по программированию установлена и настроена на тестовой машине, но в дальнейшем планируется её внедрение и использование в процессе подготовки студентов, проходящих обучение на кафедре «Вычислительная техника и компьютерная графика» «Дальневосточного государственного университета путей сообщения».
Список использованных источников
1 Contest List: Main [Электронный ресурс] – Режим доступа: http://clist.by (Дата обращения: 05.05.2016)
2 The ACM-ICPC International Collegiate Programing Contest: [Электронный ресурс] – Режим доступа: https://icpc.baylor.edu/welcome.icpc (Дата обращения: 06.05.2016)
3 VK Cup: [Электронный ресурс] – Режим доступа: http://vk.com/vkcup (Дата обращения: 06.05.2016)
4 Facebook Hacker Cup: [Электронный ресурс] – Режим доступа: https://www.facebook.com/hackercup (Дата обращения: 06.05.2016)
5 Google Code Jam: [Электронный ресурс] – Режим доступа: https://code.google.com/codejam (Дата обращения: 06.05.2016)
6 Russian Code Cup: [Электронный ресурс] – Режим доступа: http://www.russiancodecup.ru/ru/ (Дата обращения: 06.05.2016)
7 Яндекс: Алгоритм 2016: [Электронный ресурс] – Режим доступа: https://contest.yandex.ru/algorithm2016/ (Дата обращения: 06.05.2016)
8 ACM ICPC, NEERC, Southern Subregion: Порядок и правила проведения соревнований: [Электронный ресурс] – Режим доступа: https://contest.sgu.ru/?id=6 (Дата обращения: 07.05.2016)
9 SnarkNews on ACM ICPC Finals: [Электронный ресурс] – Режим доступа: http://finals.snarknews.info/ (Дата обращения: 10.05.2016)
10 Codeforces: [Электронный ресурс] – Режим доступа: http://codeforces.com/ (Дата обращения: 08.05.2016)
11 Polygon: [Электронный ресурс] – Режим доступа: https://polygon.codeforces.com/ (Дата обращения: 08.05.2016)
12 SPb IFMO Training Center: [Электронный ресурс] – Режим доступа: http://neerc.ifmo.ru/trains/information/index.html (Дата обращения: 08.05.2016)
13 Timus Onlune Judge: [Электронный ресурс] – Режим доступа: http://acm.timus.ru/?locale=ru (Дата обращения: 08.05.2016)
14 Ejudge home page: [Электронный ресурс] – Режим доступа: https://ejudge.ru/ (Дата обращения: 08.05.2016)
15 Contester: [Электронный ресурс] – Режим доступа: http://www.contester.ru/ (Дата обращения: 08.05.2016)
16 Ejudge: Общая архитектура системы: [Электронный ресурс] – Режим доступа: https://ejudge.ru/wiki/index.php/Общая_архитектура_системы (Дата обращения: 11.05.2016)
17 Энциклопедия сайтостроения: Статья «Технология CGI»: [Электронный ресурс] – Режим доступа: http://site.nic.ru/content/view/51/29 (Дата обращения: 11.05.2016)
18 Статья «Основы web-дизайна. С чего начать разработку сайта»: [Электронный ресурс] – Режим доступа: http://www.i2r.ru/static/255/out_22129.shtml (Дата обращения: 13.05.2016)
19 Фримен, Э. Изучаем HTML, XHTML и CSS, 1-е издание. / Эрик Фримен, Элизабет Фримен – М.: «Питер», 2010. – 656 с.
20 Лабберс, П. HTML5 для профессионалов: мощные инструменты для разработки современных веб-приложений. / Питер Лабберс, Брайан Олберс, Фрэнк Салим – М.: «Вильямс», 2011. – 272 с.
21 Шафер, С. HTML, XHTML и CSS. Библия пользователя, 5-е издание. / Стивен Шафер – М.: «Диалектика», 2010. – 656 с.
22 Справочник CSS: [Электронный ресурс] – Режим доступа: http://htmlbook.ru/css (Дата обращения 15.05.2016)
23 Weisfeld, М. The Object-Oriented Thought Process. Fourth Edition. / Matt Weisfeld – Addison-Wesley Professional, 2013. – 336 с.
24 Страуструп, Б. Программирование: принципы и практика использования, исправленное издание. / Бьярне Страуструп – М.: Вильямс, 2011. – 1248 с.
25 Самков, Г. jQuery. Сборник рецептов. / Г. Самков – СПб.: БХВ-Петербург, 2010. – 416 с.
26 Фримен, А. jQuery для профессионалов. / Адам Фримен – М.: «Вильямс», 2012. – 960 с.
27 Хольцнер, С. Ajax Библия программиста. / Стивен Хольцнер – М.: Диалектика, 2009. – 553 с.
28 JavaScript: Введение в Ajax: [Электронный ресурс] – Режим доступа: http://javascript.ru/ajax/intro (Дата обращения: 20.05.2016)
29 Кузнецов, М. PHP на примерах. – 2-е изд. перераб. и доп. / Максим Кузнецов, Игонь Симдянов – Спб.: «БХВ-Петербург», 2011. – 400 с.
30 Зандстра, М. PHP: объекты, шаблоны и методики программирования, 3-е издание. / Мэтт Зандстра – М.: «Вильямс», 2010. – 560 с.
31 Васвани, В. MySQL: использование и администрирование. / В. Васвани – М.:«Питер», 2011. – 368 с.
32 Грофф, Д.Р. SQL: полное руководство, 3-е издание. / Джеймс Р. Грофф, Пол Н. Вайнберг, Эндрю Дж. Оппель – М.: «Вильямс», 2014. – 960 с.
33 Учебная лаборатория НГУ: Ejudge testing system: [Электронный ресурс] – Режим доступа: http://swsoft.nsu.ru/~schernenok/ ejudge_testing_system.htm.utf8 (Дата обращения: 25.05.2016)
34 Ejudge: Инсталяция системы: [Электронный ресурс] – Режим доступа: https://ejudge.ru/wiki/index.php/Инсталляция_системы_ejudge (Дата обращения: 26.05.2016)
35 Гопкало, В.Н. Выпускная квалификационная работа. Общие требования и правила оформления: методическое пособие. / В.Н. Гопкало, О.А. Графский – Хабаровск: изд-во ДВГУПС, 2014. – 45 с.: ил.
Приложение А
(обязательное)
Программная реализация модуля подведения итогов
Листинг А.1 – Файл index.php
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<script type = "text/javascript" src = "js/table.js"></script>
<script type = "text/javascript" src = "js/createTable.js"></script>
<script type = "text/javascript" src = "js/updateTable.js"></script>
<script type = "text/javascript" src = "js/class Team.js"></script>
<script type = "text/javascript" src = "js/class Problem.js"></script>
<script type = "text/javascript" src = "js/class Submit.js"></script>
<script type = "text/javascript" src = "js/class StringWithIndex.js"></script>
<script type = "text/javascript" src = "//code.jquery.com/jquery-1.12.0.min.js"></script>