Разработка системы тестирования решений задач для проведения олимпиад по программированию

 

Реферат


Выпускная работа содержит пояснительную записку на 39 листах формата А4, включающую 10 рисунков, 15 таблиц, 6 литературных источника, приложение «А».

Ключевые слова: Олимпиада по программированию, базы данных, Проверка решений, групповая политика доступа, компилирование исходных кодов.

Цель работы - разработка системы тестирования решений задач для проведения олимпиад по программированию.

В качестве сервера БД и СУБД в дипломной работе используется MySQL. Для написания графического интерфейса пользователя были использованы языки верстки веб страниц HTML и CSS. Для разработки ядра системы использовались скриптовые языки программирования PHP.

В результате работы была разработана система тестирования, обладающая возможностью: создания, редактирования и удаления информации о пользователях, турнирах, задачах и т.д., осуществлена групповая политика доступа к турнирам и задачам, осуществлен просмотр данных из БД в формате таблиц.

Введение


Восприятие реального мира можно соотнести с последовательностью разных, хотя иногда и взаимосвязанных, явлений. С давних времен люди пытались описать эти явления (даже тогда, когда не могли их понять). Такое описание называют данными.

В современном информационном обществе объём данных растёт с огромной скоростью, как и потребность в их систематизации для удобного использования и доступа. Одним из способов хранения этой информации являются базы данных.

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

Такой способ хранения информации получил очень широкое распространение во всех сферах. Его используют организации для хранения данных о сотрудниках, библиотеки для хранения данных о книгах, ВУЗы для хранения информации о студентах и т.д. Одной из разновидностей БД являются реляционные базы данных - базы данных, основанная на реляционной модели. Реляционная модель данных - логическая модель данных, отличительной чертой которой является понятие линейного списка, позволяющее использовать в реляционных СУБД реляционной алгебры. В РМД данные представляют собой набор отношений. Отношения (таблицы) отвечают определённым условиям целостности. Данная работа представляет собой систему тестирования и так же построена на использовании реляционных баз данных. В базе хранятся турниры, задачи, информация о пользователях, результаты тестирования и т.д. В качестве сервера БД и СУБД в дипломной работе используется MySQL. Для написания графического интерфейса пользователя были использованы языки верстки веб страниц HTML и CSS. Для разработки ядра системы использовались скриптовые языки программирования PHP.

1. Постановка задания


.1 Описание предметной области


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

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

В данном программном продукте предусмотрены результаты тестирования следующих типов:

Решение принято с первой попытки (данное решение корректно работает на всех тестах, решение отправлялось один раз)

Решение принято, но не с первой попытки (конечный вариант данного решения корректно работает на всех тестах, решение отправлялось более одного раза)

Ошибка времени выполнения (на выполнение решения потрачено времени, больше чем предполагалось, тестирование завершается)

Неверный ответ (решение дает неправильный результат, в этом случае решение не принимается и тестирование завершается)

Непредвиденный сбой (возникла исключительная ситуация во время тестирования решения, тестирование завершается)


1.2 Задание


Необходимо написать систему тестирования. Данная система должна включать возможности компилирования решения с последующим тестированием. В системе задачи должны быть разбиты на категории и турниры, должна быть осуществлена групповая политика доступа к конкретному турниру или задаче.

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


1.3 Список объектов и их свойств


Предметная область включает в себя следующие предметы и их свойства.

Список пользователей

Код пользователя

Логин

Пароль

Электронный адрес

Код текущего турнира

Список групп

Код группы

Название

Описание

Список пользователей в группе

Код группы

Код пользователя

Список турниров

Код турнира

Название

Описание

Дата начала турнира

Дата завершения турнира

Список задач

Код задачи

Название

Автор

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

Формат входного файла

Формат выходного файла

Ограничения данных

Ограничение по времени

Количество открытых тестов

Содержимое турнира

Код турнира

Код задачи

Список решений задач

Код задачи

Исходный код

Описание решения

Список тестов для задач

Код задачи

Тест

Ответ

Список комментариев задач

Код задачи

Время добавления

Комментарий

Код пользователя

Список категорий

Код категории

Название

Описание

Содержимое категории

Код категории

Код задачи

Список компиляторов

Код компилятора

Название

Параметры командной строки

Результат турнира

Код турнира

Код пользователя

Код задачи

Сообщение компилятора

Количество попыток сдачи

Процент выполнения

Исходный код решения

Время отправки

Новости

Заголовок

Сообщение

Дата и время размещения

2. ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ


.1 Физическая модель


Структура физической модели данных показана в таблицах 1 - 15


Таблица 1 - Структура таблицы User_List

User_ID*LoginPasswordEmailTournament_IDКод пользователяЛогинПарольЭлектронный адрессКод турнираintvarchar(30)varchar (30)varchar (30)int

Таблица предназначена для хранения списка пользователей и информации о них.


Таблица 2 - Структура таблицы Group_List

Group_IDTitleDiscriptionКод группыНазваниеОписаниеintvarchar(25)varchar(25)

Таблица предназначена для хранения списка групп.


Таблица 3 - Структура таблицы Group_Content_User

Group_ID*User_ID*Код группыКод пользователяintint

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

Таблица 4 - Структура таблицы Group_Content_Tournament

Group_ID*Tournament_ID*Код группыКод турнираintint

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


Таблица 5 - Структура таблицы Tournament_List

Tournament_ID*TitleDiscriptionStartStopКод турнираНазвание Описание Начало Завершение intVarchar(30)textdatetimedatetime

Таблица содержит список турниров.


Таблица 6 - Структура таблицы Problem_List

Problem_ID*TitleAuthorStatementIFFOFFDatlimTimelimCtКод задачиНазвание АвторПостановка задачиФормат входного файлаФормат выходного файлаОграничение данныхОграничение времени выполненияНазвание привлегииintvarchar(30)varchar(30)texttexttexttextintint

Таблица содержит список задач и информацию о них.


Таблица 7 - Структура таблицы Tournament_Content

Tournament_ID*Problem_ID*Код турнираКод задачиintintТаблица, в которой хранится информация о том, каким турнирам принадлежат какие задачи.


Таблица 8 - Структура таблицы Solution_List

Problem_IDSource_CodeDiscriptionКод задачиИсходный кодописаниеinttexttext

Таблица содержит исходные коды и описания решений для задач.


Таблица 9 - Структура таблицы Test_List

Problem_IDTestResultКод задачиТестРезультатinttexttext

Таблица содержит исходные тесты и правильные ответы на эти тесты.


Таблица 10 - Структура таблицы Comment_List

Problem_IDDate_TimeCommentUser_IDКод задачиВремя добавленияКомментарийКод пользователяintdatetimetexint

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


Таблица 11 - Структура таблицы Category_List

Category_ID*TitleDiscriptionКод категорииНазвание Описание intVarchar(30)textТаблица содержит список категорий.


Таблица 12 - Структура таблицы Category_Content

Category_IDProblem_IDКод категорииКод пользователяintint

Таблица содержит данные о том, к каким категориям какие задачи относятся.


Таблица 13 - Структура таблицы Compiler_List

Compiler_ID*NameParametersКод кафедрыНазваниеПараметры командной строкиintvarchar(30)varchar(200)

Таблица содержит информацию о компиляторах и способах их запуска.


Таблица 14 - Структура таблицы Result_List

Tournament_IDProblem_IDUser_IDMessageAttemp_CountPercentSource_CodeStatusКод турнираКод задачиКод пользователяРезультат тестированияКоличество попыток тестированияПроцент выполнения Исходный кодСостояние тестированияintintinttextintfloattextInteger

Таблица содержит информацию о тестировании задач.


Таблица 15 - Структура таблицы News

TitleMessageDate_TimeЗаголовок новостиСообщениеВремя размещенияvarchar(30)textdatetimeТаблица содержит список новостей размещенных в системе.


2.2 Диаграмма модели "сущность-связь"

программа пользователь экранный тестирование

Диаграмма, показывающая связи между таблицами, изображена на рисунке 1.
















Рисунок 1 - Диаграмма модели "сущность-связь"


2.3 Зависимости программного продукта


Для работы приложения необходимо:

Сервер БД MySql

Веб сервер Apache.

библиотека PHP

3. ОПИСАНИЕ ПРИЛОЖЕНИЯ


.1 Краткое описание экранных форм


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


Рисунок 2 - Страница уведомления


Если пользователь решает пройти регистрацию, появляется страница регистрации (см. рисунок 3). Если пользователь решает пройти авторизацию, появляется страница авторизации (см. рисунок 4).

Рисунок 3 - Страница регистрации


Рисунок 4 - Страница авторизации


При успешной регистрации происходит автоматическая авторизация. При успешной авторизации появляется страница членства в группах (см. рисунок 5) и появляется возможность доступа к странице доступных турниров (см. рисунок 6), странице задач турнира (см. рисунок 7), странице списка результатов (см. рисунок 8).

Рисунок 5 - Страница членства в группах


Рисунок 6 - Страница доступных турниров

Рисунок 7 - Страница задач текущего турнира


Рисунок 8 - Страница результатов


Если авторизацию (см. рисунок 4) прошел администратор системы, то появляется страница списка зарегистрированных пользователей (см.рисунок 9) от куда администратор может перейти к странице редактирования пользователей (см.рисунок 10) выбрав конкретного пользователя.

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


Рисунок 9 - Страница списка зарегистрированных пользователей


Рисунок 10 - Страница редактирования пользователя

Расположение элементов на экранных формах, а так же их внешний вид определены таблицами стилей CSS. Исходные коды таблиц стилей приведены в приложение А.


3.2 Краткие сведения о работе с программой


.2.1 Вход под именем администратора

После успешной авторизации (см. рисунок 2) под учетной записью администратора, появляется боковая панель управления системой, позволяющая при переходе по конкретным ссылкам выполнять следующие действия над списками пользователей, групп, турниров, задач, категорий и т.д.:

Просматривать эти списки в формате таблиц.

Создавать новые элементы этих списков.

Редактировать существующие элементы списков.

Удалять выбранные элементы списков.


.2.2 Вход под именем пользователя

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

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

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

ЗАКЛЮЧЕНИЕ


В ходе выполнения данной работы были получены следующие навыки:

Навыки проектирования баз данных.

Навыки работы с СУБД MySql.

Настройка сервера Apache для проверки работоспособности скриптов.

Использование языка программирования РНР версии 5, для разработки функциональной части системы.

Использования языков верстки веб страниц HTML и CSS для создания пользовательского интерфейса.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


1.РНР 5. Д. Коттеров, А. Костарев - «bhv», 2008г. - 1078 с.

2.Головоломки на РНР для хакера. М. Кузнецов, И. Симдянов - bhv»,2006г. - 454 с.

.РНР 5. М. Кузнецов, И. Симдянов - «bhv», 2004г. - 534 с.

.Настольная книга по CSS. С. Каллихан - «NT-Press», 2007 г. - 368 с.

.JavaScript, Д. Макфарланд - «эксмо», 2009г. - 606 с.

.Язык С. Б. Керниган, Д. Ритчи, 1992г. - 307 с.

Приложение


Таблицы стилей CSS графического интерфейса системы


body

{: 20px;: 0;: #FFFFFF;: normal .7em Tahoma, Arial, Helvetica, sans-serif;: #666666;

}

{: 0;: 0;

}, h2, h3

{family: Georgia, "Times New Roman", Times, serif;weight: normal;: #333333;

}, blockquote, ol, ul

{height: 160%;

}

{: #3A69BA;

}:hover

{decoration: none;

}

.boxed

{: left;: left;: 200px;: 0 0 10px 0;: 0;: #EFF3F9;

}.heading

{top: 0;: 8px 15px;: #5E80BD url(images/img3.gif) no-repeat center bottom;transform: uppercase;spacing: 2px;: bold 1em Tahoma, Arial, Helvetica, sans-serif;: #FFFFFF;

}.content

{: 0;: 5px 14px 10px 14px;

}ul

{: 0;: 0;style: none;height: normal;

}li

{: 3px 0;

}li.first

{: none;

}a

{left: 10px;: url(images/img4.gif) no-repeat left center;decoration: none;

}

#wrapper

{: 955px;: 0 auto;

}

#header

{: left;: 200px;: 150px;: url(images/img1.jpg);

}

#header h1

{: 0;: 13px 0 0 0;align: center;spacing: -1px;size: 2.5em;

}

#header h2

{: 0;: 0;align: center;size: 1.2em;style: italic;

}

#header a

{decoration: none;: #FFFFFF;

}

#bod

{: 455px;: 0 auto;

}

#pages

{: right;: 747px;: 150px;: url(images/img2.jpg);

}

#pages h2

{: none;

}

#pages ul

{: right;: 0;: 125px 15px 0 0;style: none;height: normal;

}

#pages li

{: inline;

}

#pages a

{left: 2em;decoration: none;: bold 1em Tahoma, Arial, Helvetica, sans-serif;: #FFFFFF;

}

#pages a:hover

{decoration: underline;

}

#content

{: both;top: 10px;

}

#posts

{: right;: 700px;right: 20px;

}

.post

{top: 10px;

size: 1.3em;

}.title

{: 0;size: 1.4em;

}

.post .posted

{top: 0;: normal .9em Tahoma, Arial, Helvetica, sans-serif;: #999999;

}.meta

{: 2em 0 3em 0;top: 1px dotted #939A3C;: normal .8em Tahoma, Arial, Helvetica, sans-serif;: #999999;

}.meta p

{: 0;size: 1.2em;

}

#archives

{

}

#search

{

}

#search .content

{bottom: 12px;

}

#textfield1

{: 126px;: 5px 5px;: 1px solid #000000;: bold 1em Tahoma, Arial, Helvetica, sans-serif;: #000000;

}

#submit1

{: 30px;

}

#select1

{: bold 1em Tahoma, Arial, Helvetica, sans-serif;: #000000;

}

#footer

{: both;top: 1px dotted #000000;: normal .8em Tahoma, Arial, Helvetica, sans-serif;: #999999;

}

#footer a

{: #999999;

}

#footer p

{: #999999;

}

{: 700px; : 2px solid #0047ab; collapse: collapse;

}

{: #6182BE;

}

{: 3px; align: center; : 1px solid black; : #ffffff;

} {: 3px; align: center; : #ffffff;

}{weight: bold; align: left;

}



Реферат Выпускная работа содержит пояснительную записку на 39 листах формата А4, включающую 10 рисунков, 15 таблиц, 6 литературных источника, приложение

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ