Автор: Пользователь скрыл имя, 13 Ноября 2011 в 11:24, дипломная работа
В настоящее время использование компьютера во всех сферах деятельности человека привело к необходимости создания программных продуктов для решения поставленных задач. С помощью компьютера можно выполнять наиболее трудоемкие операции, выполнение которых непосредственно вручную занимает долгое время.
С развитием информационных технологий возникла необходимость внедрения компьютера не только в профессиональную область деятельности человека, но и в учебный процесс. Компьютер позволил людям облегчить работу с однотипной документацией, требующей одинакового оформления.
Введение
1 Анализ технического задания и возможные способы реализации поставленной задачи
2 Выбор инструментальных программных средств для решения поставленной задачи
3 Выбор аппаратных средств
4 Описание программы
5 Методика работы пользователя с программой
6 Экспериментальная часть
7 Защита данных
8 Организационно-экономическая часть
9 Санитарные нормы и правила при работе с ПЭВМ
Заключение
Литература
Приложение
4 Описание программы
В соответствии с техническим заданием была создана сетевая программа тестирования, вопросы по дисциплинам которой содержатся в файле удаленной базы данных InterBase с именем BAZATEST.gdb. Для работы программы тестирования по дисциплинам необходимо создать единую базу данных, к которой будут обращаться подключенные компьютеры.. Файл базы данных находится в одной папке с серверной частью разработанного программного продукта (Приложение А, папка Test(Server)).
Структура созданной базы данных с описанием назначения полей и их типов приведена в таблицах 4.1, 4.2, 4.3, 4.4.
Таблица 4.1 Структура таблицы пароля PAROL
Поле | Тип данных | Назначение поля |
PASS | Текст (VARCHAR(60)) | Хранение зашифрованного пароля |
Таблица 4.2 Структура таблиц дисциплин (Base*) | ||
VOPROS | Текст (VARCHAR(700)) | Хранение текста вопроса |
OTVET | Текст (VARCHAR(700)) | Хранение текста ответа |
NEPR1 | Текст (VARCHAR(700)) | Хранение текста 1-го неправильного варианта ответа |
NEPR2 | Текст (VARCHAR(700)) | Хранение текста 2-го неправильного варианта ответа |
NEPR3 | Текст (VARCHAR(700)) | Хранение текста 3-го неправильного варианта ответа |
OBJ | BLOB(400,5) | Хранение графического объекта (bitmap) |
VARIANT | Текст (VARCHAR(15)) | Хранение названия варианта |
SHABLON | Текст (VARCHAR(1)) | Определение шаблона вопроса |
Таблица 4.3 Структура таблицы параметров дисциплин SRISPRED | ||
1 | 2 | 3 |
ID | INTEGER | Уникальный номер имени таблицы |
2 | 3 | |
PREDMET | Текст (VARCHAR(30)) | Хранение названия предмета |
BAZA | Текст (VARCHAR(10)) | Хранение имени таблицы предмета |
VREMIA | Текст (VARCHAR(3)) | Хранение количества времени (в сек.), отведенного на ответ |
DATASOZD | Дата (DATE) | Хранение даты создания предмета |
PAROCEN | Текст (VARCHAR(15)) | Хранение параметров определения оценки |
Таблица 4.4 Структура таблицы списка студентов SPISSTUD | ||
FAM | Текст (VARCHAR(20)) | Хранение фамилии студента |
IMIA | Текст (VARCHAR(15)) | Хранение имени студента |
GRUPPA | Текст (VARCHAR(10)) | Хранение названия группы |
PREDMET | Текст (VARCHAR(30)) | Хранение названия предмета |
VARIANT | Текст (VARCHAR(15)) | Хранение названия варианта |
KOLPRAV | Текст (VARCHAR(3)) | Хранения количества правильных ответов |
OCENKA | Текст (VARCHAR(1)) | Хранение оценки за пройденный тест |
4.1 Описание серверной части
Серверная часть программы тестирования представляет собой самостоятельное приложение, которое не требует обязательного установки соединения с клиентскими приложениями. Серверная часть предназначена для редактирования имеющихся дисциплин.
Серверная
часть программы
После установки соединения с клиентской часть программного приложения сервер тестирующей программы посылает в локальную сеть сообщение с указанием местоположения файла базы тестирования. Таким образом, нет необходимости пользователю вводить адрес базы тестирования вручную – это делается автоматически без участия пользователя.
После
запуска серверной части
При добавлении новой дисциплины в базе тестирования создается новая таблица, в которую в последствии заносятся вопросы по созданной дисциплине.
Добавление новой дисциплины осуществляется следующим образом:
DM.ibtPredmeti.Last; //переход в конец таблицы
i := DM.ibtPredmetiID.AsInteger; //получение уникального номера
DM.ibtPredmeti.Insert; //переход в режим вставки новой записи
DM.ibtPredmetiPREDMET.
DM.ibtPredmetiBAZA.Text := 'Base' + IntToStr(i); //имя таблицы
DM.ibtPredmetiVREMIA.
DM.ibtPredmetiDATASOZD.
DM.ibtPredmeti.Post; //принять изменения в таблице
DM.IBQuery.SQL.Text := 'CREATE TABLE "Base' + IntToStr(i) + '" + ("VOP-ROS" VARCHAR(700), "OTVET" VARCHAR(700), "NEPR1" VARCHAR(700), "NEPR2" VARCHAR(700), "NEPR3" VARCHAR(700), "OBJ" BLOB SUB_TYPE SUMMARY SEGMENT SIZE 400, "VARIANT" VARCHAR(15), "SHABLON" VARCHAR(1));'; //выполнение SQL-запроса
Имя вносимой дисциплины вводится пользователем в текстовое поле eNewPred. Имя создаваемой таблицы имеет вид Base# (# – уникальный номер, извлекаемый из последней строки таблицы SPISPRED поля ID; присваивается переменной i). Время, отведенное для ответа на один вопрос, автоматически устанавливается в значение 60 секунд. Данный параметр можно изменить при редактировании дисциплины. Также в таблицу списка дисциплин заносится дата создания дисциплины – это позволяет в дальнейшем определять «устаревшие» дисциплины и при необходимости удалять их. Сама таблица создается с помощью запроса SQL (Structured Query Language, структурированный язык запросов для работы с базой данных). [3]
При создании таблицы описываются все поля – тип поля, его размер.
SQL-запрос создания таблицы добавляемой дисциплины выглядит следующим образом:
CREATE TABLE "Base' + IntToStr(i) + '" + ("VOPROS" VARCHAR(700), "OTVET" VARCHAR(700),"NEPR1" VARCHAR(700),"NEPR2" VARCHAR(700), "NEPR3" VARCHAR(700),"OBJ" BLOB SUB_TYPE SUMMARY SEGMENT SIZE 400,"VARIANT" VARCHAR(15),"SHABLON" VARCHAR(1));
После выполнения данного запроса создается таблица Base# , имеющая структуру, описанную в таблице 5.1.
Во время добавления дисциплины предусмотрена возможность проверки существования добавляемой дисциплины в базе тестирования. Эта возможность предусмотрена для предотвращения путаницы при работе клиентов программы тестирования в выборе необходимого предмета. Процедура проверки выглядит следующим образом:
DM.ibtPredmeti.First; //переход в начало списка предметов
i := 0; //переменная определения существования предмета
Repeat If eNewPred.Text = DM.ibtPredmetiPREDMET.AsString Then i := 1; DM.ibtPredmeti.Next; Until DM.ibtPredmeti.Eof; //в цикле с постусловием Repeat-Until определяется наличие предмета – i=1, предмет существует
Case i Of
0: ShowMessage ('Предмет "' + eNewPred.Text + '" НЕ существует и еще не внесен в базу тестирования.');
1: ShowMessage ('Предмет "' + eNewPred.Text + '" УЖЕ существует и внесен в базу тестирования.'); //пользователю выводится сообщение в соответствии со значением переменной i – 0 или 1
Режим редактирования имеющихся дисциплин предоставляет несколько возможностей.
Удаление выбранной дисциплины из базы тестирования предполагает удаление таблицы Base* из базы тестирования, а также удаление информации об удаленной дисциплине из таблицы SPISPRED. Фрагмент процедуры удаления выбранной дисциплины из базы тестирования выглядит следующим образом:
If Application.MessageBox ('Вы хотите удалить предмет' , 'Удаление предмета' , MB_YESNO + MB_ICONQUESTION) = mrYes //подтверждение удаления дисциплины
Then Begin
DM.IBQuery.Active := False; компонент для выполнения SQL-запросов сделать неактивным
DM.IBQuery.SQL.Text := 'DROP TABLE "' + DM.ibtPredmetiBAZA.AsString + '";'; //SQL-запрос на удаление таблицы из базы тестирования
DM.ibtPredmeti.Delete; //удаление информации об удаленной дисциплине из списка имеющихся дисциплин
DM.IBQuery.Active := True; //активизировать компонент для выполнения SQL-запроса на удаление дисциплины
DM.ibtPredmeti.Close; DM.ibtPredmeti.Open; End; //обновление набора данных
Удаление всех вопросов позволяет очистить выбранную дисциплину от всех вопросов. Эта операция избавляет пользователя от необходимости удалять каждый вопрос по отдельности. Реализация данной функции осуществлялась с помощью следующего программного кода:
If Application.MessageBox ('Вы хотите удалить все вопросы из выбранного предмета???' , 'Удаление вопросов' , MB_YESNO + MB_ICONQUESTION) = mrYes //подтверждение удаления вопросов из дисциплины
Then Begin
DM.ibtBase.First; //переход к началу таблицы
Repeat DM.ibtBase.Delete; DM.ibtBase.Next; Until DM.ibtBase.Eof; End; //в цикле удаляются все вопросы, пока не будет достигнут конец таблицы
Добавление вопросов позволяет добавлять вопросы к дисциплине по четырем шаблонам: «Вопрос + 2 варианта ответа», «Вопрос + 3 варианта ответа», «Вопрос + 4 варианта ответа» и «Вопрос + объект + 4 варианта ответа». Выбор определенного шаблона осуществляется выбором соответствующего переключателя. Перед добавлением вопроса проверяется значение полей ввода вопроса и вариантов ответа с целью избежания записи вопроса с пустыми значениями. Введенные значения записываются в соответствующие поля таблицы Base# . При указании названия варианта автоматически при вводе текста проверяется наличие вводимого текста (пользователю предоставляется возможность автозаполнения названия варианта).
Процедура автозаполнения поля для ввода варианта:
if Length(ComboBox.Text) <= LastLength then
begin LastLength := Length(ComboBox.Text); exit; end; //сравнение длины текста, если новая длина меньше старой – значит было удаление символов и автоподбор не нужен
LastLength := Length(ComboBox.Text); //запоминание длины текста для следующего вызова процедуры
//поиск в списке начала строк, совпадающие с введенным текстом
for i := 0 to ComboBox.Items.Count - 1 do begin
//поиск без учета регистра:
if
Copy(AnsiUpperCase(ComboBox.
AnsiUpperCase(ComboBox.
//вставка текста
ComboBox.Text := ComboBox.Items[i];
//выделение добавленного блока текста
ComboBox.SelStart := ln;
ComboBox.SelLength := Length(ComboBox.Items[i]) – ln;
Использование указанных шаблонов вопросов делает программу более функциональной, так как появляется возможность добавления вопроса по дисциплинам, в вопросах которых используются графические объекты (графики, рисунки, математические формулы и др.). Ниже приведен фрагмент программного кода добавления вопроса, содержащего объект, к дисциплине:
Информация о работе Сетевая программа тестирования по дисциплинам