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

Реферат

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

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

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

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.2 Задание

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

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

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

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

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

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

Логин

Пароль

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

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

Список групп

Код группы

Название

Описание

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

Код группы

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

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

Код турнира

Название

Описание

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

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

Список задач

Код задачи

Название

Автор

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

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

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

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

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

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

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

Код турнира

Код задачи

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

Код задачи

Исходный код

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

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

Код задачи

Тест

Ответ

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

Код задачи

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

Комментарий

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

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

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

Название

Описание

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

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

Код задачи

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

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

Название

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

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

Код турнира

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

Код задачи

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

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

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

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

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

Новости

Заголовок

Сообщение

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

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

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

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

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

User_ID*

Login

Password

Email

Tournament_ID

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

Логин

Пароль

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

Код турнира

int

varchar(30)

varchar (30)

varchar (30)

int

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

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

Group_ID

Title

Discription

Код группы

Название

Описание

int

varchar(25)

varchar(25)

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

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

Group_ID*

User_ID*

Код группы

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

int

int

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

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

Group_ID*

Tournament_ID*

Код группы

Код турнира

int

int

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

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

Tournament_ID*

Title

Discription

Start

Stop

Код турнира

Название

Описание

Начало

Завершение

int

Varchar(30)

text

datetime

datetime

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

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

Problem_ID*

Title

Author

Statement

IFF

OFF

Datlim

Timelim

Ct

Код задачи

Название

Автор

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

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

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

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

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

Название привлегии

int

varchar(30)

varchar(30)

text

text

text

text

int

int

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

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

Tournament_ID*

Problem_ID*

Код турнира

Код задачи

int

int

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

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

Problem_ID

Source_Code

Discription

Код задачи

Исходный код

описание

int

text

text

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

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

Problem_ID

Test

Result

Код задачи

Тест

Результат

int

text

text

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

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

Problem_ID

Date_Time

Comment

User_ID

Код задачи

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

Комментарий

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

int

datetime

tex

int

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

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

Category_ID*

Title

Discription

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

Название

Описание

int

Varchar(30)

text

Таблица содержит список категорий.

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

Category_ID

Problem_ID

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

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

int

int

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

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

Compiler_ID*

Name

Parameters

Код кафедры

Название

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

int

varchar(30)

varchar(200)

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

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

Tournament_ID

Problem_ID

User_ID

Message

Attemp_Count

Percent

Source_Code

Status

Код турнира

Код задачи

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

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

Количество попыток тестирования

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

Исходный код

Состояние тестирования

int

int

int

text

int

float

text

Integer

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

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

Title

Message

Date_Time

Заголовок новости

Сообщение

Время размещения

varchar(30)

text

datetime

Таблица содержит список новостей размещенных в системе.

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

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

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

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

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

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

Сервер БД MySql

Веб сервер Apache.

библиотека PHP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

Приложение

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

body

{

margin: 20px;

padding: 0;

background: #FFFFFF;

font: normal .7em Tahoma, Arial, Helvetica, sans-serif;

color: #666666;

}

form

{

margin: 0;

padding: 0;

}

p, h2, h3

{

font-family: Georgia, “Times New Roman”, Times, serif;

font-weight: normal;

color: #333333;

}

p, blockquote, ol, ul

{

line-height: 160%;

}

a

{

color: #3A69BA;

}

a:hover

{

text-decoration: none;

}

.boxed

{

float: left;

clear: left;

width: 200px;

margin: 0 0 10px 0;

padding: 0;

background: #EFF3F9;

}

boxed .heading

{

margin-top: 0;

padding: 8px 15px;

background: #5E80BD url(images/img3.gif) no-repeat center bottom;

text-transform: uppercase;

letter-spacing: 2px;

font: bold 1em Tahoma, Arial, Helvetica, sans-serif;

color: #FFFFFF;

}

boxed .content

{

margin: 0;

padding: 5px 14px 10px 14px;

}

boxed ul

{

margin: 0;

padding: 0;

list-style: none;

line-height: normal;

}

boxed li

{

padding: 3px 0;

}

boxed li.first

{

border: none;

}

boxed a

{

padding-left: 10px;

background: url(images/img4.gif) no-repeat left center;

text-decoration: none;

}

#wrapper

{

width: 955px;

margin: 0 auto;

}

#header

{

float: left;

width: 200px;

height: 150px;

background: url(images/img1.jpg);

}

#header p

{

margin: 0;

padding: 13px 0 0 0;

text-align: center;

letter-spacing: -1px;

font-size: 2.5em;

}

#header h2

{

margin: 0;

padding: 0;

text-align: center;

font-size: 1.2em;

font-style: italic;

}

#header a

{

text-decoration: none;

color: #FFFFFF;

}

#bod

{

width: 455px;

margin: 0 auto;

}

#pages

{

float: right;

width: 747px;

height: 150px;

background: url(images/img2.jpg);

}

#pages h2

{

display: none;

}

#pages ul

{

float: right;

margin: 0;

padding: 125px 15px 0 0;

list-style: none;

line-height: normal;

}

#pages li

{

display: inline;

}

#pages a

{

padding-left: 2em;

text-decoration: none;

font: bold 1em Tahoma, Arial, Helvetica, sans-serif;

color: #FFFFFF;

}

#pages a:hover

{

text-decoration: underline;

}

#content

{

clear: both;

padding-top: 10px;

}

#posts

{

float: right;

width: 700px;

padding-right: 20px;

}

.post

{

padding-top: 10px;

font-size: 1.3em;

}

post .title

{

margin: 0;

font-size: 1.4em;

}

.post .posted

{

margin-top: 0;

font: normal .9em Tahoma, Arial, Helvetica, sans-serif;

color: #999999;

}

post .meta

{

margin: 2em 0 3em 0;

border-top: 1px dotted #939A3C;

font: normal .8em Tahoma, Arial, Helvetica, sans-serif;

color: #999999;

}

post .meta p

{

margin: 0;

font-size: 1.2em;

}

#archives

{

}

#search

{

}

#search .content

{

padding-bottom: 12px;

}

#textfield1

{

width: 126px;

padding: 5px 5px;

border: 1px solid #000000;

font: bold 1em Tahoma, Arial, Helvetica, sans-serif;

color: #000000;

}

#submit1

{

width: 30px;

}

#select1

{

font: bold 1em Tahoma, Arial, Helvetica, sans-serif;

color: #000000;

}

#footer

{

clear: both;

border-top: 1px dotted #000000;

font: normal .8em Tahoma, Arial, Helvetica, sans-serif;

color: #999999;

}

#footer a

{

color: #999999;

}

#footer p

{

color: #999999;

}

TABLE

{

width: 700px;

border: 2px solid #0047ab;

border-collapse: collapse;

}

THEAD

{

background: #6182BE;

}

TD

{

padding: 3px;

text-align: center;

border: 1px solid black;

background: #ffffff;

}

TH {

padding: 3px;

text-align: center;

color: #ffffff;

}

lc {

font-weight: bold;

text-align: left;

}

Поделиться статьёй
Поделиться в telegram
Поделиться в whatsapp
Поделиться в vk
Поделиться в facebook
Поделиться в twitter
Леонид Федотов
Леонид Федотов
Окончил НИУ ВШЭ факультет компьютерных наук. Сам являюсь кандидатом наук. По специальности работаю 13 лет, за это время создал 8 научных статей и 2 диссертации. В компании подрабатываю в свободное от работы время уже более 5 лет. Нравится помогать школьникам и студентам в решении контрольных работ и написании курсовых проектов. Люблю свою профессию за то, что это направление с каждым годом становится все более востребованным и актуальным.

Ещё статьи

Нет времени делать работу? Закажите!
Вид работы
Тема
Email

Отправляя форму, вы соглашаетесь с политикой конфиденциальности и обработкой ваших персональных данных.