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
|
float
|
text
|
Integer
|
Таблица содержит информацию о тестировании
задач.
Таблица 15 - Структура таблицы News
Title
|
Message
|
Date_Time
|
Заголовок
новости
|
Сообщение
|
Время
размещения
|
varchar(30)
|
text
|
datetime
|
Таблица содержит список новостей размещенных в
системе.
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 с.
. РНР
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;
}
{: 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;
}
Похожие работы на - Разработка системы тестирования решений задач для проведения олимпиад по программированию
|