Разработка модуля для проверки задач по программированию в электронной обучающей системе 'Moodle'

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    429,69 Кб
  • Опубликовано:
    2016-11-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка модуля для проверки задач по программированию в электронной обучающей системе 'Moodle'

Содержание

Введение

1. Аналитический обзор

1.1 Общее представление о системе Moodle

1.2 Общее представление о дистанционном практикуме по программированию АВТ

1.3 Обоснование необходимости интеграции данных систем

1.4 Анализ сходных решений

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

2. Проектирование ПП

2.1 Определение функциональности ПП

2.2 Выбор и обоснование средств разработки

2.3 Разработка структур данных и алгоритмов

3. Реализация ПП

3.1 Реализация алгоритмов

3.2 Особенности реализации пользовательского интерфейса

4. Тестирование ПП

4.1 Методика тестирования работы ПП

4.2 Результаты тестирования

5. Разработка документации

5.2 Инструкции пользователя

5.2 Инструкции для администратора

Заключение

Список использованных источников

Приложения

Введение


В большинстве современных систем для построения сайтов имеется возможность расширения изначального функционала системы путём установки различных дополнительных модулей. Система дистанционного обучения Moodle - не исключение.

На данный момент уже существует несколько сотен модулей для Moodle, которые можно найти и бесплатно скачать на официальном сайте системы. Каждый модуль добавляет какую-то свою новую функцию. Функции, которые добавляют модули бывают самые разные: от простого календаря в боковом меню сайта, до полноценного форума с возможностью добавить разделы, модераторов и т.д.

Список модулей постоянно пополняется и расширяется, так как разработчикам постоянно требуется добавить в систему всё новые и новые функции, которые до этого не были предусмотрены.

Одному из таких модулей и посвящена эта работа. Появилась необходимость разработать модуль для системы Moodle, который позволит отправлять задачу по программированию на проверку в автоматическую проверяющую систему кафедры АВТ ВоГУ напрямую из системы Moodle. Так же нужно, чтобы разрабатываемый модуль получал результат проверки, выставлял оценку и вёл статистику отправленных решений для каждого пользователя. Это позволит систематизировать и хранить в одном месте все данные учётных записей студентов и все данные статистики.

1. Аналитический обзор


1.1 Общее представление о системе Moodle


Moodle - это аббревиатура от Modular Object Oriented Dynamic Learning Environment, что расшифровывается как модульная объектно-ориентированная динамическая среда обучения [1].относится к классу LMS (Learning Management System) - систем управления обучением. В России такие программы обычно называют системами дистанционного обучения (СДО), т.к. дистанционное обучение во многих вузах страны устроено с помощью подобных систем.

Разработка системы дистанционного обучения Moodle продолжается начиная с 1999 года (с 2001 года в текущей архитектуре). Текущая версия системы дистанционного обучения Moodle - 2.0. Версия 2.0 системы дистанционного обучения Moodle выпущена в ноябре 2010 года. Интерфейс системы дистанционного обучения Moodle переведен на 82 языка и используется почти в 50 тысячах организаций из более чем 200 стран мира. В Российской федерации зарегистрировано более 600 инсталляций. Количество пользователей Moodle в некоторых инсталляциях достигает 500 тысяч человек. На сегодняшний день система дистанционного обучения Moodle является самой распространенной системой дистанционного обучения с самым большим количеством пользователей и разработчиков.

Наиболее значимые улучшения в системе дистанционного обучения Moodle были сделаны в версии 1.5 [2].

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

электронная обучающая система программирование

Источником финансирования проекта Moodle является сеть партнеров, которые оказывают услуги по установке, технической поддержке, хостингу и т.д. Партнеры Moodle выплачивают членские взносы и процент с продаж в пользу MOODLE PTY LTD AS TRUSTEE FOR THE MOODLE TRUST.позволяет организовать обучающие курсы в различных формах - преподаватель может выдавать задания в виде текстов, презентаций, файлов, опросников и др. Для использования системы Moodle достаточно иметь любой web-браузер, что удобно как для преподавателей, так и для учащихся.надёжен и ему доверяют по всему миру - на данный момент по всему миру используется более десяти тысяч копий системы Moodle. Систему Moodle используют институты и другие учебные заведения - маленькие и большие, включая школу экономики в Лондоне, Нью-Йоркский государственный университет, фирмы Microsoft и Open University. На данный момент число пользователей системы Moodle - более 79 миллионов это делает её самой используемой обучающей платформой!спроектирован, так чтобы помогать учить и обучаться - спустя более десяти лет разработки с помощью социальной педагогики, Moodle предоставляет мощный инструмент для обучения и глобальную среду обучения, которая помогает как учиться, так и обучать.легко использовать - простой интерфейс, возможности "drag-and-drop", и подробно задокументированные возможности на ряду с постоянно улучшающимся юзабилити сделали Moodle очень простым и удобным в использовании.всегда актуален - открытый код данной системы означает то, что система постоянно дорабатывается, расширяется и улучшается в зависимости от потребностей пользователей.

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

Moodle - это обучающая платформа "всё в одном".

Moodle предоставляет очень гибкий набор инструментов, позволяющий реализовать как смешанное обучение, так и обучение на 100% в режиме онлайн. Настройка Moodle производится включением или отключением основных функций, а так же вы можете легко добавить любые необходимые возможности с помощью подключаемых модулей, например форум, wiki, чат, блог и т.д.

Высокая гибкость и возможность настройки - благодаря открытому исходному коду, Moodle может быть настроен под любые нужны. Moodle собран из модулей, что позволяет разработчикам создавать плагины и внедрять любые внешние приложения, чтобы добавить необходимый функционал. Возможности разработки плагинов для системы Moodle просто безграничны!

Расширяемый до любого размера - от нескольких студентов до миллиона пользователей, Moodle может быть настроен, так чтобы отвечать нуждам как небольших учебных классов, так и крупных организаций. За счёт своей гибкости и возможности расширятся Moodle был адаптирован для использования в сфере обучения, бизнеса, правительства и др.

Крепкий, надёжный и конфиденциальный - чтобы защитить ценные данные и учётные записи пользователей, защитные механизмы постоянно добавляются и улучшаются. Moodle защищён от несанкционированного доступа к данным, а так же от кражи и потери данных. Moodle легко может быть установлен на приватное защищённое облако или сервер, для 100% гарантии безопасности данных.

Используется в любое время, любом месте и на любом устройстве - Moodle это система основанная на web-технологиях и таким образом может быть использована пользователями со всего мира. По умолчанию Moodle имеет мобильный интерфейс и кроссбраузерный дизайн, контент на платформе Moodle легкодоступен и удобен для восприятия на различных устройствах и браузерах.

Доступно огромное количество материалов - постоянно расширяемая документация, а так же пользовательские форумы доступны на всех языках мира, огромное количество бесплатных разработок и настроек предоставленных пользователями системы Moodle находятся в открытом доступе [4].

Поддержка большого сообщества - проект Moodle активно поддерживается мульти язычным сообществом, а так же командой разработчиков системы. За счёт этого система все найденные баги очень быстро исправляются и каждые несколько месяцев выходят новые улучшенные версии системы.

Система Moodle бесплатна, имеет открытый исходный код и распространяется по свободной лицензии GLP, что позволяет вносить в систему любые изменения необходимые учебному учреждению [3].

Может быть установлена на Windows, Mac и Linux серверах с поддержкой PHP.

Так же функционал системы Moodle может быть расширен за счёт установки различных модулей. Каждый отдельный модуль решает какую-то конкретную задачу и может быть установлен в любой момент времени на уже работающую систему Moodle. Возможности модулей очень обширны и позволяют реализовать практически любой функционал. На данный момент существуют сотни модулей для системы Moodle и их список постоянно растёт.

Основным средством обучения, используемым в системе дистанционного обучения Moodle, являются дистанционные курсы. Система дистанционного обучения Moodle предоставляет инструменты для разработки дистанционных курсов. Также могут использоваться дистанционные курсы, разработанные в соответствии со стандартом дистанционного обучения SCORM.

1.2 Общее представление о дистанционном практикуме по программированию АВТ


Дистанционный практикум по программированию АВТ находится по адресу #"897353.files/image001.jpg">

Рисунок 1 - Пример оформления текста задачи

Как видно с рисунка 1, для задачи имеется пример входных и выходных данных, а так же указаны ограничения по времени и памяти.

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

Рисунок 2 - Пример оформления формы отправки задачи

Так же, с рисунка 2 видно, что имеется ещё и таблица со статистикой отправленных решений, содержащая ID задачи, имя участника, название задачи, дату отправки решения, язык программирования на котором было отправлено решений и статус проверки задачи.

К сожалению, код данного модуля находится в закрытом доступе, поэтому использовать его не получится.

Так же разработка подобного модуля уже велась одним из предыдущих выпускников кафедры. Была реализована возможность перехода из раздела курса Moodle на конкретную задачу в автоматической проверяющей системе, соответствующую изучаемому разделу. Однако, возможность отправлять решение на проверку прямо из Moodle в настоящий момент отсутствует, то есть полная интеграция не была достигнута.

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


Необходимо достичь высокой степени интеграции дистанционного практикума по программированию АВТ в систему Moodle и согласованности интерфейсов. Наиболее оптимальным решением в данном случае будет разработка модуля для Moodle.

Модуль может быть установлен на уже работающую систему Moodle, что как раз необходимо в данном случае.

2. Проектирование ПП


2.1 Определение функциональности ПП


Модуль автоматической проверки задач по программированию для Moodle будет содержать следующие функции:

а) Возможность добавления задачи в систему Moodle, по ID задачи в автоматической проверяющей системы кафедры АВТ, а так же возможность добавления текста и названия задачи в ручную при необходимости.

б) Выбор компилятора и отправка кода решения задачи в автоматическую проверяющую систему кафедры АВТ, непосредственно из среды Moodle.

в) Вывод на экран результата проверки задачи.

г) Автоматическое выставление оценки студенту, на основе результата проверки отправленного им решения.

д) Ведение статистики по отправленным решениям, включающей в себя: ID задачи, имя и фамилию студента отправившего задачу, время отправки решения, а так же результат проверки.

е) Вывод на экран таблицы содержащей статистику десяти последних отправленных решений.

Подробный алгоритм работы модуля с описанием используемых функций описан ниже:

)        После установки модуля в систему Moodle появится новый юнит, который отображается при добавлении заданий в курсы - 'autochecker'.

2)      Выбрав данный юнит вам предложит ввести ID задачи (ID можно узнать из URL или названия задачи на сайте автоматической проверяющей системы кафедры АВТ).

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

)        Модуль создаст новую задачу в курсе. На странице задачи будет указано её название, текст задачи и форма в которой будет содержаться поле для кода решения задачи, а так же эемент select для выбора компилятора и кнопка отправки задачи на проверку.

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

)        С помощью сохранённых переменных, будет сгенерирован POST запрос и отправлен на сервер автоматической проверяющей системы кафедры АВТ.

)        После выполнения POST запроса, на сайте автоматической проверяющей системы кафедры АВТ будет выведен результат проверки решения задачи (всего может быть 11 различных результатов).

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

)        Так же на основании результата проверки решения студенту автоматически будет выставлена оценка.

)        В самом конце работы модуль занесёт необходимую информацию в таблицу статистики отправленных решений.

2.2 Выбор и обоснование средств разработки


Так как разработка модуля ведётся для уже готовой системы - Moodle, то средства разработки выбираются на основании совместимости с данной системой. Конкретно, для разработки будут использованы:

Язык php - на данном языке будут реализована вся работа основных функций модуля.

Язык mysql - модуль требует использования базы данных для работы. Так как система Moodle использует базу данных mysql, то и база данных модуля будет использовать mysql.

Язык xml - будет использован для автоматического создания таблиц используемых модулем в базе данных системы Moodle.

Так же будут использованы различные возможности API Moodle:API - используется для построения и отправки любых запросов к базе данных системы Moodle.API - используется для работы с оценками в системе Moodle. С помощью Grade API разрабатываемый модуль будет создавать grade_item (необходимый для выставления оценки), а затем выставлять оценку в автоматическом режиме.

2.3 Разработка структур данных и алгоритмов


Структурная схема разрабатываемого модуля показана на рисунке 3:

Рисунок 3 - Структурная схема модуля

Пользователь будет взаимодействовать только с интерфейсом самого модуля, который будет интегрирован в систему Moodle. После того, как пользователь отправит решение, оно будет перенаправлено на автоматическую проверяющую систему кафедры АВТ. Там оно будет обработано и проверено в штатном режиме, после чего на сайте автоматической проверяющей системы кафдры АВТ будет выведен результат проверки задачи. Результат проверки будет обработан разрабатываемым модулем - модуль получит результат проверки и выведет его на экран, а так же выставит оценку соответствующую результату проверки. Так же в автоматическом режиме в таблицу статистики будет добавлена вся необходимая информация: ID задачи, имя и фамилия студента отправившего задачу, время отправки решения и результат проверки задачи.

3. Реализация ПП


3.1 Реализация алгоритмов


На данный момент официальный сайт системы Moodle предоставляет готовый каркас для простейшего модуля, который не выполняет несколько самых основных функций может служить основой для дальнейшей разработки практически любого модуля. Для разработки своего модуля я так же использовал данный каркас. Скачать каркас модуля Moodle можно по следующей ссылке - https: // docs. moodle.org/dev/NEWMODULE_Documentation#Getting_started <https://docs.moodle.org/dev/NEWMODULE_Documentation>.

В данном каркасе находятся все необходимые файлы для наботы модуля. Сам скачаный модуль изначально может выполнять только одну функцию - добавление материала в курс (у материала есть название и описание).

Для разработки собственного модуля необходимо модифицировать файлы каркаса и добавлять туда необходимые функции. При разработки модуля автоматической проверки задач по программированию были модифицированы следующие файлы каркаса: mod_form. php, version. php, view. php, /db/install. xml, /lang/en/autochecker. php а так же был был добавлен один дополнительный файл - check. php, для удобства разработки.

Каждый из указанных файлов отвечает за какие-то функции/части модуля:

version. php - содержит информацию о версии модуля.

В данном файле необходимо указать версию модуля, а так же версию Moodle, на которой данный модуль будет работать.

Код выглядит следующим образом:

$plugin->version = 2015111600; // версия модуля $plugin->release = 'v1.0'; // релиз $plugin->requires = 2014051200; // какая версия Moodle нужна для работы

mod_form. php - содержит в себе функции и интерфейс формы добавления материалов модуля.

Изначально в данном файле содержится:

-       Поле для имени материала (обязательное поле).

-       Поле описания материала (необязательное).

-       Выбор оценки материала (автоматически заполнено, можно менять).

Так же в данный файл можно добавить любое количество требуемых дополнительных полей информацию из которых можно отправить непосредственно в базу данных Moodle или же использовать другим способом.

Для разрабатываемого мной модуля, мне потребовалось добавить поле ID задачи. В которое необходимо вписать порядковый номер задачи с сайта автоматической проверяющей кафедры АВТ. Поле обязательное.

Код выглядит следующим образом:

// добавляем поле с инеднефикатором ProgID. Данные из данного поля отправляются в таблицу mdl_autochecker и строку с названием progid.

$mform->addElement ('text', 'progid', get_string ('ProgID', 'autochecker'));

// добавляем правило, что поле обязательно к заполнению $mform->addRule ('progid', null, 'required', null, 'client');

view. php - данный файл, содержит функции и интерфейс материала модуля. Информация выводимая данным файлом, это то, что пользователь будет видеть на странице материала.

Изначально данный файл просто выводит описание материала. В данном файле содержится большая часть функций разрабатываемого модуля.

Весь исходный код файла view. php предоставлен в Приложении 1.

Основные функции выполняемые данным файлом описаны ниже:

// подключаем переменную, которая нужна чтобы работало выставление оценок$CFG;

// подключаем библиотеку для выставления оценок_once ($CFG->libdir. '/gradelib. php');

// получаем локальный id задачи в нашем модуле, через глобальный id задачи в системе

$courseid = $DB->get_records_sql ('SELECT * FROM {course_modules} WHERE id =? ', array ($id));

// получаем массив с данными текущей задачи модуля

$arr = $DB->get_records_sql ('SELECT * FROM {autochecker} WHERE id =? ', array ($courseid [$id] - >instance));

// получаем id задачи в проверяющей системе

$progid = $arr [$courseid [$id] - >instance] - >progid;

// получаем имя + фамилию пользователя и записываем в переменную

$username = $USER->lastname;

$username. = ' ';

$username. = $USER->firstname;

// получаем текущую системную дату + время и записываем в переменную

$date_today = date ("d. m. y");

$date_today. = ' ';

$date_today. = date ("H: i: s");

// открываем соединение с сайтом кафедры и переходим на страницу задачи

$curlT = curl_init ("#"897353.files/image004.jpg">

Рисунок 4 - Переход в режим редактирования

После перехода в режим редактирования вы сможете добавлять новые материалы в курс. Нажмите на кнопку "Добавить элемент или ресурс", как показано на рисунке 5:

Рисунок 5 - Добавление материала

В открывшемся окне выберите элемент "autochecker" и нажмите кнопку "Добавить", как показано на рисунке 6:

Рисунок 6 - Добавление материала модуля "autochecker"

После этого перед вами появится форма добавления нового материала.

При добавлении нового материала необходимо заполнить как минимум два поля - "Название задачи” и "ID задачи”. Пример заполнения полей материала показан на рисунке 7:

Рисунок 7 - Заполнение основных полей нового материала

"Название задачи” - произвольно название, оно будет отображаться на странице задачи, а так же на странице курса в Moodle.задачи - порядковый номер задачи на сайте автоматической проверяющей системы. Данный номер обычно указан на станице задачи перед её названием. Например, если название задачи: "695. I - близкие задачи”, то в данном случае ID будет 695. Это число необходимо вписать в поле ID задачи.

Так же ID задачи может быть найден в URL страницы, на которой находится текст задачи. Например: "#"897353.files/image008.gif">

Рисунок 8 - Сохранение нового материала модуля

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

Рисунок 9 - Пример текста задачи, полученного модулем

Так же ниже будет указан пример входных и выходных данных и различные пояснения к условию задачи, как это показано на рисунке 10:

Рисунок 10 - Пример входных и выходных данных задачи

После текста и пояснения к задаче расположена форма для отправки решения задачи. Как выглядит данная форма показано на рисунке 11:

Рисунок 11 - Интерфейс формы отправки задачи

При работе с материалами данного модуля пользователю необходимо выбрать компилятор из выпадающего списка. Записать в специальное поле код своей программы и нажать кнопку "Отправить”.

После этого пользователь увидит на экране результат проверки решения как это показано на рисунке 12, а так же информацию об ошибки в случае, если отправленное решение не верно.

Рисунок 12 - Пример текста описания ошибки

Всё остальное (выставление оценки, сбор статистики) модуль сделает сам. Так же в самом конце страницы материала выводится статистика десяти последних отправленных решений, как это показано на рисунке 13:

Рисунок 13 - Таблица статистики отправленных решений

Решения для каждой задачи можно отправлять неограниченное количество раз.

5.2 Инструкции для администратора


Модуль состоит из одной папки, которая называется Autochecker. Перед установкой модуля зайдите в эту папку и убедитесь, что там содержаться все необходимые для его работы файл. Набор файлов, необходимых для работы показан на рисунке 14.

Рисунок 14 - Необходимый набор файлов модуля

Если все необходимые файлы имеются, то можно приступать к настройке модуля. Необходимо указать имя и пароль пользователя от которого будут отправляться решения на сайт автоматической проверяющей системы. Желательно, чтобы у данного пользователя был доступ ко всем задачам системы (т.к. модуль работает через этот аккаунт, то у модуля будет доступ только к тем задачам, к которым есть доступ у данного аккаунта).

Необходимо зайти вначале в файл view. php и найти там строчку вида:_setopt ($curl, CURLOPT_USERPWD, "epo2012_vis: 11111");

Часть кода, в которой находится данная строчка вы можете видеть на рисунке 15:

Рисунок 15 - Часть кода файла view. Php

Как видно с рисунка 15, искомая строка кода находится под номером 107. Необходимо заменить в ней "epo2012_vis" на имя пользователя, а "11111" на пароль пользователя от имени которого вы хотите работать в автоматической проверяющей системе.

Затем необходимо зайти в файл check. php и опять же найти там строчку вида:_setopt ($curl, CURLOPT_USERPWD, "epo2012_vis: 11111");

Она находится в самом начале кода:

Рисунок 16 - Часть кода файла check. php

Как видно с рисунка 16 искомая строка код находится под номером 8. Необходимо проделать те же действия, что и в файле view. php - заменить в найденной строке "epo2012_vis" на имя пользователя, а "11111" на пароль пользователя от имени которого вы хотите работать в автоматической проверяющей системе.

После этого можно приступать к установке модуля. Чтобы установить модуль в систему Moodle скопируйте папку содержащую все файлы модуля на сервер в директорию "/mod”. После этого зайдите в систему Moodle с правами администратора и система выведет вам сообщение, что доступны новые модули для установки, как это показано на рисунке 17:

Рисунок 17 - Уведомление о необходимости обновления системы

Нажмите кнопку "Обновить Moodle” и модуль будет установлен.

В старых версиях системы Moodle, сообщение о необходимости установки нового плагина может не быть выведено автоматически. Если вы закачали папку с модулем в каталог /mod вашей системы Moodle и при этом не получили сообщения, о необходимости установки нового модуля, то воспользуйтесь следующей инструкцией:

В блоке "Настройки" зайдите в "Администрирование", пункт "Управление", как показано на рисунке 5:

Рисунок 18 - Панель администратора Moodle

Вы попадёте на страницу, где будут показаны все неустановленные модули, в том числе и модуль autochecker. Нажмите кнопку "Обновить Moodle" и все модули будут установлены.

Заключение


В ходе данной работы были достигнуты все поставленные цели. Разработан модуль интегрирующий систему автоматической проверки задач по программированию кафедры АВТ ВоГУ в систему Moodle. Достигнута высокая степень интеграции и согласованность интерфейсов. Модуль был успешно установлен на уже работающую систему Moodle кафедры АВТ ВоГУ.

Список использованных источников


1.      Moodle - Википедия [Электронный ресурс] // свободная энциклопедия - Режим доступа: https: // ru. wikipedia.org/wiki/Moodle

2.      Система дистанционного обучения Moodle [Электронный ресурс] // сайт компании - Режим доступа: <http://www.web-learn.ru/23-about-moodle>

.        Moodle - Open Source Learning Platform [Электронный ресурс] // сайт разработчиков системы - Режим доступа: https: // moodle.org/

.        Плагины Moodle [Электронный ресурс] // образовательное сообщество - Режим доступа: <http://moodlefree.ru/plagins_for_moodle>

.        Портфолио|Adrem [Электронный ресурс] //: сайт компании - Режим доступа: http://adremamici.ru/proekty/portfolio

.        Дистанционная подготовка [Электронный ресурс] // система дистанционного обучения - Режим доступа: http://informatics. mccme.ru/

.        HTML Формы [Электронный ресурс] //: SITE-DO: сайт - Режим доступа: http://www.site-do.ru/html/html11. php

.        Тестирование программного обеспечения - Википедия [Электронный ресурс] // свободная энциклопедия - Режим доступа: https: // ru. wikipedia.org/wiki/Тестирование_программного_обеспечения

Приложения


Приложение 1

Исходный код файла view. php

$courseid = $DB->get_records_sql ('SELECT * FROM {course_modules} WHERE id =? ', array ($id)); // получаем локальный id задачи в нашем модуле, через глобальный id задачи в системе

$arr = $DB->get_records_sql ('SELECT * FROM {autochecker} WHERE id =? ', array ($courseid [$id] - >instance)); // получаем массив с данными текущей задачи модуля

$progid = $arr [$courseid [$id] - >instance] - >progid; // получаем id задачи в проверяющей системе

$username = $USER->lastname;

$username. = ' ';

$username. = $USER->firstname;

$date_today = date ("d. m. y");

$date_today. = ' ';

$date_today. = date ("H: i: s");

$randomnum = rand (1, 1000);

$url = "http://atpp. vstu.edu.ru/cgi-bin/arh_problems. pl? re_login=$randomnum&id_prb=$progid";

$curl = curl_init ("$url");_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1);_setopt ($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);_setopt ($curl, CURLOPT_USERPWD, "epo2012_vis: 11111"); // авторизируемся в системе

$curlT = curl_init ("http://atpp. vstu.edu.ru/cgi-bin/arh_problems. pl? id_prb=$progid");_setopt ($curlT, CURLOPT_RETURNTRANSFER,true);

$problem = curl_exec ($curlT);_close ($curlT);_match ('|<hr>

$utftext = mb_convert_encoding ($problemtext [0], "UTF-8", "windows-1251");"<h2 align='center'>";format_string ($autochecker->name);"</h2>";

// если заполнено поле текст задачи, то выводим его, если нет, то берём текст задачи со страницы задачи на сайте кафедры($autochecker->intro) {$OUTPUT->box (format_module_intro ('autochecker', $autochecker, $cm->id), 'generalbox mod_introbox', 'autocheckerintro');

} else {$utftext;

}

$compid = $_POST ['id_compiler'];

$progtext = $_POST ['source'];

$progtext = str_replace (";", "%3B", "$progtext");

$progtext = str_replace ("&", "%26", "$progtext");

$progtext = str_replace ("+", "%2B", "$progtext");

$progtext = mb_convert_encoding ($progtext, "windows-1251", "UTF-8");

$grade = new stdClass ();(isset ($_POST ['nazvanie_knopki']))

{'. /check. php';

// добавляем данные в таблицу статистики

$record->postid = $courseid [$id] - >instance;

$record->userid = $USER->id;

$record->username = $username;

$record->timeposted = $date_today;

$record->result = $theanswer;

$lastinsertid = $DB->insert_record ('autocheckerstats', $record, false);(mark1) // если ответ Верно или Частично верно и удалось получить баллы, то выставляем эти баллы

{

$grade->rawgrade = $mark1; // оценка - балл полученный с сайта кафедры

$grade->timemodified = time ();

$grade->userid = $USER->id;

$grade->usermodified = $USER->id;_update ('mod/autocheker', $COURSE->id, 'mod', 'autochecker', $courseid [$id] - >instance, 0, $grade, NULL); // запрос выставляющий оценку

}

}

// $DB->set_debug (true);

$rectest = $DB->get_record_sql ('SELECT * FROM {autocheckerstats} ORDER BY id DESC LIMIT 1');

$rec = $DB->get_records_sql ('SELECT * FROM {autocheckerstats} ORDER BY id DESC LIMIT 10');

ПРИЛОЖЕНИЕ 2

(обязательное)

Исходный код файла check. php

$randomnum = rand (1, 1000);

$url = "http://atpp. vstu.edu.ru/cgi-bin/submit. pl? re_login=$randomnum&id_prb=$progid";

$curl = curl_init ("$url");_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1);_setopt ($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);_setopt ($curl, CURLOPT_USERPWD, "epo2012_vis: 11111"); // авторизируемся в системе_setopt ($curl, CURLOPT_URL, "http://atpp. vstu.edu.ru/cgi-bin/submit. pl? id_prb=$progid"); // идём на страницу отправки решения задачи_setopt ($curl, CURLOPT_RETURNTRANSFER,true);_setopt ($curl, CURLOPT_POST, true);_setopt ($curl, CURLOPT_POSTFIELDS, "id_prb=$progid&source=$progtext&id_compiler=$compid&mode=send"); // отправляем запрос в систему

$out = curl_exec ($curl); // получаем ответ

$reg00 = 'Ждёт';

$regconv00 = mb_convert_encoding ($reg00, "windows-1251", "UTF-8");

$reg0 = 'Выполняется';

$regconv0 = mb_convert_encoding ($reg0, "windows-1251", "UTF-8");

$theanswer = $regconv0;

$reg = 'Ошибка компиляции';

$regconv = mb_convert_encoding ($reg, "windows-1251", "UTF-8");

$reg1 = 'Верно';

$regconv1 = mb_convert_encoding ($reg1, "windows-1251", "UTF-8");

$reg2 = 'Неправильный ответ';

$regconv2 = mb_convert_encoding ($reg2, "windows-1251", "UTF-8");

$reg3 = 'Ошибка представления';

$regconv3 = mb_convert_encoding ($reg3, "windows-1251", "UTF-8");

$reg4 = 'Ошибка выполнения';

$regconv4 = mb_convert_encoding ($reg4, "windows-1251", "UTF-8");

$reg5 = 'Предел времени';

$regconv5 = mb_convert_encoding ($reg5, "windows-1251", "UTF-8");

$reg6 = 'Предел памяти';

$regconv6 = mb_convert_encoding ($reg6, "windows-1251", "UTF-8");

$reg7 = 'Нарушение безопасности';

$regconv7 = mb_convert_encoding ($reg7, "windows-1251", "UTF-8");

$reg8 = 'Обнаружено бездействие';

$regconv8 = mb_convert_encoding ($reg8, "windows-1251", "UTF-8");

$reg9 = 'Неуникально';

$regconv9 = mb_convert_encoding ($reg9, "windows-1251", "UTF-8");

$reg10 = 'Частично верно';

$regconv10 = mb_convert_encoding ($reg10, "windows-1251", "UTF-8");_setopt ($curl, CURLOPT_URL, 'http://atpp. vstu.edu.ru/cgi-bin/status. pl'); // идём на страницу где выводятся результаты проверки всех задач

$out = curl_exec ($curl);_match ('|<tr><td align="left" nowrap>&nbsp; (. *) &nbsp|isU', $out, $content1); // получаем html код столбца, где содержится id решения из первой строки статистики

$htmlcontent = htmlspecialchars ($content1 [0]); // превращаем html код в строку

$idresult = preg_replace ("/ [^0-9] /", '', $htmlcontent); // оставляем только цифры (таким образом получили из html кода только id решения)($theanswer == $regconv0 or $theanswer == $regconv00) {(3); // ставим задержку 3 секунды, чтобы код успел выполниться_setopt ($curl, CURLOPT_URL, "http://atpp. vstu.edu.ru/cgi-bin/status. pl? mode=report&id_stat=$idresult"); // идём на страницу где содержится статистика по конкретному отправленному решению

$out = curl_exec ($curl);_match ('|<table>

$theanswer = $resarr [0];

}_close ($curl);

$theanswer = mb_convert_encoding ($resarr [0], "UTF-8", "windows-1251"); // записываем результат решения в переменную и меняем кодировку"Результат проверки: ";"<b>";$theanswer; // выводим результат проверки задачи"</b>";($theanswer! = $reg1) {"<br><br>";_match ('|<table align="center" border="0" width="100%" cellpadding="0" cellspacing="0"> (. *) <table>

$err = mb_convert_encoding ($content3 [0], "UTF-8", "windows-1251"); // записываем результат решения в переменную и меняем кодировку$err;"<br>";

}($theanswer == $reg10 or $theanswer == $reg1) {

$test = mb_convert_encoding ($content2 [0], "UTF-8", "windows-1251");

$htmlcontent123 = htmlspecialchars ($test);

$mark = explode ("td", $htmlcontent123); // разбиваем строку, чтобы найти там подстроку в которой содержится балл за задачу

$mark1 = preg_replace ("/ [^0-9] /", '', $mark [13]); // оставляем только цифры (таким образом получаем баллы). }

Похожие работы на - Разработка модуля для проверки задач по программированию в электронной обучающей системе 'Moodle'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!