Главная » Просмотр файлов » Пояснительная записка

Пояснительная записка (1231610), страница 6

Файл №1231610 Пояснительная записка (Система для проведения соревнований по программированию с модулем подведения итогов) 6 страницаПояснительная записка (1231610) страница 62020-10-06СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 6)

– массив submit – для хранения списка идентификаторов всех посылок, совершенных командой;

– поле nextSubmit – номер следующей посылки, которую необходимо обработать.

Данный класс содержит следующие методы:

– методы getSolved() и getTime() возвращают в виде текста количество решенных задач и затраченное время соответственно;

– метод getVerdict() собирает информацию о конкретной задаче для отображения в ячейке таблицы с результатами;

– метод getClassVerdict() определяет класс CSS для ячейки таблицы с результатами по конкретной задаче;

– метод getTimeProblem() переводит время из общего формата (количество минут) к привычному (чч:мм) для конкретной задачи;

– методы addSubmit(), addOneSubmit() и addAllSubmit() используются для обработки посылок: первые два метода обрабатывают конкретную посылку, а третий метод обрабатывает все посылки по конкретной задаче;

– метод addProblemSubmit() добавляет информацию о конкретной посылке по какой-нибудь задаче в двумерный массив problemsSubmits;

– метод solvedProblem() отмечает конкретную задачу решенной и вычисляет общее штрафное время;

– метод clearProblemSubmits() отчищает двумерный массив problemSubmits от данных;

– метод createProblems() инициализирует все поля объекта связанные с задачами, то есть, например, problemAllSubmit, problemSubmit, solved и т.д.;

– метод getIdSubmit() возвращает идентификатор следующей посылки, которую необходимо обработать;

– методы getIdPlace(), getIdName(), getIdSolved(), getIdTime() и getIdProblem() используются для генерации идентификатора ячейки таблицы с результатами.

Класс Problem

Класс Problem (приложение А, листинг А.8) используется для хранения информации о задачах и имеет следующие поля:

– поле code – идентификатор задачи;

– поле solved – количество команд, решивших данную задачу;

– поле submit – количество попыток решить данную задачу.

Данный класс содержит следующие методы:

– метод getSolved() собирает информацию по задаче для отображения в ячейке таблицы с результатами;

– метод getClassSolved() определяет класс CSS для ячейки таблицы с результатами по задаче;

– метод addSubmit() обрабатывает конкретную посылку, обновляя данные о количестве посылок по задаче;

– метод getIdStatistic() используется для генерации идентификатора ячейки таблицы с результатами.

Класс Submit

Класс Submit (приложение А, листинг А.9) используется для хранения информации о посылках и имеет следующие поля:

– поле time – время прихода посылки;

– поле teamId – идентификатор команды, которая отправила посылку;

– поле problemCode – идентификатор задачи, по которой совершена посылка;

– поле state – статус посылки, значение «accepted» означает, что задача решена;

– поле test – номер теста, на котором решение выдало неверный ответ;

– поле checked – флаг, отмечающий обработана посылка или нет.

Данный класс содержит только один метод getTime(), который используется для вычисления округлённого времени прихода конкретной посылки в минутах.

3.2.7 Структура таблицы с результатами

Таблица с результатами состоит из следующих элементов:

– заголовок таблицы;

– основная часть таблицы с результатами участников.

Заголовок таблицы содержит три строки:

– строка с названиями столбцов;

– строка со статистикой соревнования;

– разделитель между заголовком и остальной таблицей.

Столбцы таблицы:

– место участника. Стоит отметить, что если два участника решили одинаковое количество задач с одинаковым штрафным временем, то они занимают одно место;

– название команды;

– количество решенных задач;

– штрафное время;

– а так же по столбцу на каждую задачу.

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

Формирование таблицы происходит после загрузки истории посылок (приложение А, листинг А.10) и представляет собой генерацию HTML кода web-страницы. Для того, чтобы данная генерация занимала минимальное время работы, она происходит на стороне клиента посредству JavaScript, а не на стороне сервера.

Для быстрого доступа к конкретным ячейкам таблицы в дальнейшем каждой из них присваивается уникальный идентификатор. Как описано ранее, классы Team и Problem содержат методы для генерации данных идентификаторов. Примеры таких идентификаторов: «ID команды.Name», «ID команды.Place», «ID задачи.statistic» и т.д.

Помимо генерации таблицы в файле createTable.js присутствуют функции для заполнения дополнительных переменных информацией о командах, задачах и посылках. Например, функция createSubmits() использует компаратор compareSortSubmit() для сортировки посылок по времени их отправления участниками.

Определив структуру таблицы с результатами, стоит рассмотреть её дизайн.

3.2.8 Цветовая схема таблицы с результатами

Цветовая схема таблицы – очень важная составляющая общего дизайна модуля подведения итогов, так как от этого зависит понимание пользователем происходящего. Весь дизайн таблицы с результатами задаётся свойствами классов CSS (приложение А, листинг А.3).

Заголовок таблицы имеет черный цвет, за исключением ячеек с количеством посылок по конкретной задаче (рисунок 3.4).

Рисунок 3.4 – Заголовок таблицы результатов

Строки с участниками имеют два оттенка серого цвета (рисунок 3.5). Два участника будут иметь один и тот же цвет, если у них решено одинаковое количество задач. Два участника будут иметь разный цвет, если нет участника, который решил больше задач, чем один, и меньше задач, чем другой, из них.

Рисунок 3.5 – Цветовое выделение участников

Таким образом, участники делятся на блоки, объединённые одним цветом.

Цвета для центральной части таблицы представлены на рисунке 3.6.

Рисунок 3.6 – Цвета центральной части таблицы

Каждый из этих цветов используется для своей цели:

– зелёный, если участник решил задача;

– тёмно-зелёный, если участник первым решил задачу;

– красный, если участник сделал неудачные посылки по задаче;

– синий, если участник сделал посылки, результат которых еще не отображен в таблице. Например, если он делал их в период «заморозки» таблицы результатов;

– мигающий сине-оранжевый для выделения посылки, которая подвергнется «разморозке»;

– бледно серый, если участник не делал посылок по задаче.

Стоит отметить, что при последовательной «разморозке» участник, посылки которого рассматриваются, так же выделяется оранжевым цветом (рисунок 3.7), для того чтобы сфокусировать внимание пользователя.

Рисунок 3.7 – Выделение участника при последовательной «разморозке»

Некоторые из цветов, представленных на рисунке 3.6, используются в заголовке таблицы результатов. Зелёный цвет используется для задач, по которым есть хотя бы одна удачная посылка, в то время как красный цвет для задач, по которым есть хотя бы одна неудачная посылка (рисунок 3.8).

Рисунок 3.8 – Часть заголовка таблицы результатов с информацией по задачам

Для задач, по которым нет посылок, цвет остаётся черным.

3.2.9 Обновление таблицы с результатами

Для обновления таблицы с результатами во время «разморозил» используется множество функций (приложение А, листинг А.11). Основные из них:

– функция updateTable() полностью обновляет таблицу с результатами;

– функция sortTr() перемещает определённую строку таблицы на определённую позицию;

– функция sortTable() перемещает все строки таблицы по местам, на которых они должны находиться в текущий момент;

– функция sortTrSubmit() запускает анимацию плавного перемещения строки в таблице;

– функции sortTrNextSubmit() и sortTrNextTeamSubmit() определяют положение команды в таблице и запускают анимацию сортировки таблицы;

– функция updateTableClass() обновляет классы CSS для всех ячеек таблицы;

– функция updateTrClass() обновляет классы CSS для всех ячеек одной строки;

– функции updateTdPlaceClass(), updateTdNameClass(), updateSolvedClass() и updateTdTimeClass() отвечают за обновление классов CSS ячеек с местом, названием команды, количеством решенных задач и штрафным временем соответственно;

– функции updateTrPlace() и updateTdPlace() отвечают за обновление мест для всех строк таблицы и обновления места для одной строки соответственно;

– функция updateTrSolvedAnsTime() обновляет количество решенных задач и штрафное время для всех команд;

– функции onTdNextSubmit(), ontTdNextTeamSubmit(), offTdNextSubmit() и offTdNextTeamSubmit() определяют команду и задачу по обрабатываемой в текущий момент посылке;

– функции onTdSubmit() и offTdSubmit() отвечают за включение и выключение анимации подсветки ячейки таблицы;

– функции onTdTeam() и offTdTeam() отвечают за включение и отключение подсветки названия команды при последовательной «разморозке»;

– функции updateTrStatistic() и updateTdStatisticProblem() отвечают за обновление всей строки статистики и одной ячейки в строке статистики в заголовке таблицы;

– функция updateTdTotal() обновляет ячейку с общим количество удачных и неудачных посылок;

– функция getTotal() генерирует HTML код с информацией об общем количестве удачных и неудачных посылок для отображения в соответствующей ячейке таблицы с результатами;

– функции updateTdSolvedAndTime(), updateTdSolved() и updateTdTime() отвечают за обновление количества решенных задач и обновление штрафного времени для конкретной команды;

– функция updateTableProblem() обновляет ту часть таблицы, которая связана с посылками команд по задачам;

– функция updateTdProblem() обновляет одну ячейку, которая связана с посылкой конкретной команды по конкретной задаче.

Стоит отметить, что для обновления некоторой информации в ячейках таблицы с результатами, функции используют методы классов Team и Problem, отвечающие за генерацию соответствующей информации. В частности, используются функции для генерации идентификаторов ячеек таблицы.

3.2.10 Реализация «разморозки» таблицы с результатами

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

Меню (рисунок 3.1) предоставляет пользователю следующие настройки «разморозки»:

– выбор времени для «заморозки», переход на момент «заморозки» и обнуление таблицы с результатами;

– выбор скорости «разморозки»;

– последовательная и хронологическая «разморозки»;

– пошаговая и автоматическая «разморозка»;

– дополнительные настройки: показ времени посылок, показ посылок совершенных в «заморозку», обработка только последней посылки.

В любой момент времени пользователь может изменять настройки «разморозки», и это никак не повлияет на работоспособность модуля подведения итогов.

Основной функцией, отвечающей за «разморозку», является getNextFunction(), которая, в зависимости от последнего действия и от настроек «разморозки», определяет, что делать дальше (приложение А, листинг А.12).

После выбора времени «заморозки», которое по умолчанию равно 4-м часам от начала соревнования, пользователь может сразу перейти к этому моменту или же запустить «разморозку» с «пустой» таблицы.

Характеристики

Список файлов ВКР

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6531
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее