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

Структура таблицы User List, Group List. Диаграмма модели "сущность-связь". Зависимости программного продукта. Краткое описание экранных форм. Краткие сведения о работе с программой. Главные особенности входа под именем администратора и пользователя.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 20.04.2012
Размер файла 3,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Реферат

Выпускная работа содержит пояснительную записку на 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;

}

h1, 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 h1

{

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;

}

Размещено на Allbest.ru


Подобные документы

  • Анализ системы дистанционного практикума по программированию. Модернизация ядра системы для работы с новым конфигурационным файлом. Программная реализация изменений в базе данных и веб-интерфейсе пользователя. Разработка инструкции для участника олимпиад.

    дипломная работа [1,1 M], добавлен 09.11.2016

  • Проектирование программы в среде Delphi для тестирования знаний студентов по программированию, с выводом оценки по окончанию тестирования. Разработка экранных форм и алгоритма программы. Описание программных модулей. Алгоритм процедуры BitBtn1Click.

    курсовая работа [365,0 K], добавлен 18.05.2013

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

    дипломная работа [418,3 K], добавлен 10.07.2017

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

    курсовая работа [4,2 M], добавлен 17.03.2011

  • Выбор типа и структуры нейронной сети. Подбор метода распознавания, структурная схема сети Хопфилда. Обучение системы распознавания образов. Особенности работы с программой, ее достоинства и недостатки. Описание интерфейса пользователя и экранных форм.

    курсовая работа [3,0 M], добавлен 14.11.2013

  • Краткие сведения о системах принятия решения в режиме показа формул и в режиме пользователя. Принципы решения задач оптимизации. Построение математической модели. Диаграмма "Оптимизация плана перевозок". Создание таблицы БД в Access: база данных, запросы.

    курсовая работа [482,3 K], добавлен 12.08.2012

  • Анализ существующих решений для составления расписания репетитора. Разработка архитектуры программного продукта. Выбор инструментальных средств. Проектирование реляционной базы данных. Определение методики тестирования. Реализация интерфейса пользователя.

    дипломная работа [411,7 K], добавлен 22.03.2018

  • Описание исходных текстов программного продукта. Системные требования и установка программного продукта. Тестирование пользователя по двадцати вопросам указанной темы и сохранение результатов тестирования. Форма отображения результатов тестирования.

    курсовая работа [2,8 M], добавлен 09.07.2013

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

    курсовая работа [2,0 M], добавлен 24.06.2012

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

    курсовая работа [3,7 M], добавлен 11.11.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.