Таблица 2.4 - Структура таблицы "questions"
№п/п | Описание | Поле | Тип данных | Дополнительные параметры |
1 | Идентификатор вопроса | id_question | int | Ключевое, AUTO_INCREMENT |
2 | Подраздел | n_course_part | int | NOT NULL |
3 | Содержимое вопроса | question_content | char(255) | NOT NULL |
В таблице "answers" хранится информация о вариантах ответов на вопросы тестов. Ключевым полем в таблице является поле id_answer. Таблица связана по полю n_question с таблицей "questions" связью "многие-к-одному". Структура таблицы с описанием типов полей приведена в таблице 2.5
Таблица 2.5 - Структура таблицы "answers"
№п/п | Описание | Поле | Тип данных | Дополнительные параметры |
1 | Идентификатор ответа | id_answer | int | Ключевое, AUTO_INCREMENT |
2 | Вопрос | n_question | int | NOT NULL |
3 | Содержимое ответа | answer_content | char(255) | NOT NULL |
4 | Флаг правильного ответа | right_answer | enum('y', 'n') | NOT NULL, DEFAULT 'n' |
В таблице "user_courses" хранится информация о курсах, на которые зарегистрировались студенты. Ключевым полем в таблице "user_courses" является поле id_user_course. Таблица связана по полю id_user_course с таблицей "user_tests" связью "один-ко-многим", по полю login с таблицей "users" связью "многие-к-одному", по полю n_course с таблицей "courses" связью "многие-к-одному". Структура таблицы с описанием типов полей приведена в таблице 2.6
Таблица 2.6 - Структура таблицы "user_courses"
№п/п | Описание | Поле | Тип данных | Дополнительные параметры |
1 | Идентификатор курса студента | id_user_course | int | Ключевое, AUTO_INCREMENT |
2 | Логин студента | login | char(16) | NOT NULL |
3 | Курс | n_course | int | NOT NULL |
4 | Статус курса | status | enum('reg', 'end', 'not') | NOT NULL |
5 | Дата регистрации курса | registration_date | date | |
6 | Дата окончания курса | end_date | date |
В таблице "user_tests" хранится информация о тестах пройденных студентами. Ключевым полем в таблице "user_tests" является поле id_user_test. Таблица связана по полю n_user_course с таблицей "user_courses" связью "многие-к-одному", по полю n_course_part с таблицей "course_parts" связью "многие-к-одному". Поле status может принимать одно из трех значений - reg- студент обучается, end- студент успешно завершил курс, not- студент не прошел курс. Поле registration_date заполняется автоматически текущей датой при регистрации на курс. Поле end_dateзаполняется автоматически текущей датой при успешном или неуспешном завершении курса. Структура таблицы с описанием типов полей приведена в таблице 2.7
Таблица 2.7 - Структура таблицы "user_tests"
№п/п | Описание | Поле | Тип данных | Дополнительные параметры |
1 | Идентификатор теста студента | id_user_test | int | Ключевое, AUTO_INCREMENT |
2 | Курс студента | n_user_course | int | NOT NULL |
3 | Подраздел курса | n_course_part | int | NOT NULL |
4 | Число использованных попыток | attemps | int | |
5 | Процент лучшего результата | percent | int | |
6 | Дата последнего тестирования | last_test_date | date |
В таблице "teachers" хранится информация о преподавателях. Ключевым полем в таблице "teachers" является поле id_teacher. Таблица связана по полю id_teacher с таблицей "courses" связью "один-ко-многим". Поле attemps содержит число попыток студента пройти тест. В поле last_test_date заносится дата последней попытки прохождения теста. Структура таблицы с описанием типов полей приведена в таблице 2.8
Таблица 2.8 - Структура таблицы "teachers"
№п/п | Описание | Поле | Тип данных | Дополнительные параметры |
1 | Идентификатор преподавателя | id_teacher | int | Ключевое, AUTO_INCREMENT |
2 | Имя преподавателя | teacher_name | char(128) | NOT NULL |
3 | Ученая степень преподавателя | teacher_degree | char(128) | NOT NULL |
4 | Адрес электронной почты преподавателя | teacher_email | char(128) | |
5 | Ссылка на файл с фото преподавателя | teacher_photo | char(128) | |
6 | Информация о преподавателе | teacher_about | text |
В таблице "correct_codes" хранится информация о шифрах студентов, которым разрешено администратором обучаться дистанционно. Ключевым полем в таблице "correct_codes" является поле student_code. Таблица связана по полю student_codeс таблицей "users" связью "один-к-одному". Структура таблицы с описанием типов полей приведена в таблице 2.9
Таблица 2.9 - Структура таблицы "correct_codes"
№п/п | Описание | Поле | Тип данных | Дополнительные параметры |
1 | Шифр студента | student_code | int | Ключевое |
В таблице "news" хранится информация о новостях сайта. Ключевым полем в таблице "news" является поле id_news. Структура таблицы с описанием типов полей приведена в таблице 2.10
Таблица 2.10 - Структура таблицы "news"
№п/п | Описание | Поле | Тип данных | Дополнительные параметры |
1 | Идентификатор новости | id_news | int | Ключевое, AUTO_INCREMENT |
2 | Название новости | title | char(128) | NOT NULL |
3 | Дата новости | date_news | date | |
4 | Ссылка на файл новости | body_news | char(128) | NOT NULL |
5 | Автор новости | autor_news | char(128) |
Схема даталогической модели предметной области представлена на рисунке 2.1
Рисунок 2.1 - Даталогическая модель предметной области
Для разработки системы используется комплекс программ, без которых создание требуемого приложения было бы невозможным. Как уже говорилось ранее, в качестве web-сервера выбран Apache версии 2.0.35, в качестве языка программирования PHP4.1.2, в качестве сервера баз данных MySQL 4.0.21. Для разработки и тестирования приложения используется MacromediaDreamweaverMX 2004. Каждый из этих продуктов требует тонкой настройки. В этом подразделе описаны тонкости установки и настройки перечисленных программных средств.
Функции Web-сервера выполняет не компьютер, а программа, установленная на нем. Apache и является той самой программой. Когда браузер пользователя подключается к Web-серверу и посылает заголовок GET (это просьба передать файл), его запрос обрабатывает Apache. Apache проверяет, есть ли указанный в заголовке GET файл, и, если есть, отправляет его вместе с заголовками браузеру.
Apache- это своего рода стандарт Web-сервера в Интернете. Его основным конкурентом является IIS (InternetInformationServer) от Microsoft, который работает под Windows. Apache, хотя и существуют его версии под Windows, преимущественно устанавливается на Unix-подобных операционных системах - Linux и FreeBSD. Нужно также заметить, что большинство хостеров используют именно Apache, а не IIS. IIS устанавливается в основном на корпоративных серверах, работающих под Windows.
Сервер Apache просто необходим - без него мы не сможем протестировать web сценарии PHP. Конечно, можно тестировать и без сервера, но тогда нужно будет использовать сервер хостера, но в этом случае затраты на Интернет сильно возрастут.
Для установки Apache для Windows нужно посетить сайт http: // www. apache. org и загрузить версию Apache для Windows) [12]. Установка сервера проблем не вызывает: нужно просто запустить программу установки и выбрать тип установки Typical. Еще потребуется указать каталог, в который будет производиться установка. По умолчанию будет установлен в каталог "C: \ProgramFiles\ApacheGroup\Apache". Окно установки с заданием некоторых параметров показано на рисунке 2.2
Рисунок 2.2 - Окно установки web-сервера Apache
По окончании установки Apache необходимо настроить. По умолчанию корневым каталогом для HTML-документов будет C: \ProgramFiles\ApacheGroup\Apache\htdocs. Такое расположение не очень удобно, поэтому создадим каталог С: \www, в котором будут находиться файлы. В этом же каталоге создадим два подкаталога - cgi и html. В первом будут находится CGI-приложения, а во втором - HTML-файлы.
Затем нужно открыть в любом текстовом редакторе файл C: \ProgramFiles\ApacheGroup\Apache\conf \httpd. conf и отредактировать следующие директивы:
ServerName- установить имя сервера. При этом, директива ServerName по умолчанию закомментирована, то есть игнорируется сервером. Поэтому необходимо раскомментировать эту директиву, убрав перед ней значок #.
DocumentRoot- установим значение С:/www/html:
DocumentRoot с:/www/html
Таким образом, укажем каталог, в котором будут размещаться HTML-файлы.
Установим директивы ScriptAlias так:
ScriptAlias/cgi/"с:/www/cgi/"
ScriptAlias/cgi-bin/"c:/www/cgi/"
Благодаря этому создадим два псевдонима для каталога с:/www/cgi. Таким образом, если будет указан путь http: // localhost/cgi или http: // localhost/cgi-bin, то на самом деле обращение будет к каталогу с:/www/cgi.
Секцию <Directory"С:/ProgramFiles/ApacheGroup/Apache/htdocs"> заменим на следующую:
<Directory "c:/www">
Options Indexes Includes AllowOverride All Allow from all </Directory>
Таким образом, зададим ряд настроек по умолчанию для каталога с: \www и всех его подкаталогов. А именно: автоматическую генерацию списка содержимого каталога при просмотре его в браузере, поддержку SSI, а также возможность использовать файлы. access для индивидуальной настройки каталогов.
Убедимся, что есть директива AddHandler:
AddHandlercgi-script. bat. exe. cgi