Сетевая программа тестирования по дисциплинам

Автор: Пользователь скрыл имя, 13 Ноября 2011 в 11:24, дипломная работа

Краткое описание

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

Оглавление

Введение
1 Анализ технического задания и возможные способы реализации поставленной задачи
2 Выбор инструментальных программных средств для решения поставленной задачи
3 Выбор аппаратных средств
4 Описание программы
5 Методика работы пользователя с программой
6 Экспериментальная часть
7 Защита данных
8 Организационно-экономическая часть
9 Санитарные нормы и правила при работе с ПЭВМ
Заключение
Литература
Приложение

Файлы: 15 файлов

2 Выбор инструментальных программных средств.doc

— 47.00 Кб (Открыть, Скачать)

3 Выбор аппаратных средств.doc

— 42.00 Кб (Открыть, Скачать)

4 Описание программы.doc

— 320.00 Кб (Скачать)

       Case StrToInt(DM.ibqBaseSHABLON.Text) Of

       1: Begin //шаблон 1

       Randomize; //процедура исключения повторения случайных значений

       Form_Main.plShablon1.Visible:=True; //вывод панели шаблона 1

       Form_Main.lblVopros1.Caption:=DM.ibqBaseVOPROS.Text; //вопрос

       Case Random(2)+1 Of //выбор случайного значения (1 или 2)

       1:Begin //выпало значение 1

       Form_Main.lblVar11.Caption:=DM.ibqBaseOTVET.Text;

       Form_Main.lblVar12.Caption:=DM.ibqBaseNEPR1.Text;

       End; //1-м идет текст ответа, затем неправильный вариант

       2:Begin //выпало значение 2

       Form_Main.lblVar11.Caption:=DM.ibqBaseNEPR1.Text;

       Form_Main.lblVar12.Caption:=DM.ibqBaseOTVET.Text;

       End; //1-м идет неправильный вариант, затем текст ответа

       

       При вопросе, имеющем 2 варианта ответа, пользователю становится видной панель 1-го шаблона с тремя надписями – вопросом и двумя вариантами ответов, один из которых правильный. Используя процедуру Random, определяется порядок расположения вариантов ответов. При значении процедуры Random(2)+1, равном 1, ответ будет выведен в первой надписи, а при значении, равном 2, ответ будет выведен во второй надписи. Таким образом, неизвестно, в какой именно надписи будет выведен ответ. Подобным образом выводятся вопросы шаблонов 2, 3 и 4.

       Выбор варианта ответа осуществляется щелчком  левой кнопки мыши по надписи с  вариантом ответа. При этом происходит проверка соответствия текста надписи  правильному ответу. Если текст надписи  равен правильному ответу, то переменная kolprav (переменная подсчета правильно данных ответов) увеличивается на 1 (kolprav := kolprav + 1). Значение этой переменной необходимо для определения оценки в целом за весь тест.

       При ответе для ограничения времени, отведенного для ответа на вопрос теста, используется таймер, который отсчитывает заданное время. При оставшемся времени, равном 10 секунд, второй таймер начинает мигать, сигнализируя пользователю об истечении отведенного на ответ времени. Мигание осуществляется скрытием и отображением рисунка на панели времени. Ниже приведены процедуры таймеров отсчета времени и мигания:

       //мигание рисунка при истекании времени

       If h = 1 Then Begin imgTime.Visible := True; h:=0; End

       Else Begin imgTime.Visible:=False; h:=1; End; //с интервалом в 1 секунду в зависимости от значения переменной h рисунок виден или не виден; значение переменной изменяется на противоположное

       //обратный отсчет времени

       vremia := vremia – 1; //уменьшение времени на 1 секунду

       If vremia < 11 Then tImage.Interval := 500 Else tImage.Interval := 0; //если до конца осталось 10 секунд, рисунок мигает

       If (vremia = 0) And (DM.ibqBase.Eof) Then Begin tImage.Interval := 0; tVremia.Interval := 0; Konec; End //завершение теста при истекании времени и вопросов

       Else If vremia = 0 Then Begin //истекание времени

       

       DM.ibqBase.Next; //переход к следующему вопросу

       vremia := StrToInt (DM.ibqPredmetiVREMIA.Text); //определение времени

       lblTime.Caption := DM.ibqPredmetiVREMIA.Text; //вывод времени

       tImage.Interval := 0; End; //остановка мигания рисунка

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

       Ниже  приведен фрагмент процедуры завершения теста Konec, в котором производится подсчет оценки:

       ocenka := kolprav / kolvop; //вычисление оценки

       oc1 := StrToFloat (Copy (DM.ibqPredmetiPAROCEN.Text, 1, 4) ); //граница оценки «3»

       oc2 := StrToFloat (Copy (DM.ibqPredmetiPAROCEN.Text, 6, 4) ); //граница оценки «4»

       oc3 := StrToFloat (Copy (DM.ibqPredmetiPAROCEN.Text, 11, 4) ); //граница оценки «5»

       //вывод  соответствующей оценки

       If ocenka < ос1 Then Form_Main.lblResOcenka.Caption := '2';

       If ( ocenka >= ос1 ) And ( ocenka < ос2 ) Then Form_Main.lblResOcenka.Cap-tion := '3';

       If ( ocenka >= ос2 ) And ( ocenka < ос3 ) Then Form_Main.lblResOcenka.Cap-tion := '4';

       If ocenka >= ос3 Then Form_Main.lblResOcenka.Caption := '5';

       Параметры определения оценки хранятся в одном  текстовом поле PAROCEN таблицы SPISPRED в формате X#X#X, где вместо Х указываются границы соответствия процента правильных ответов определенной оценке. Переменной ос1 присваивается значение определения оценки на «3», переменной ос2 – на «4», переменной ос3 – на «5».

       Оценка  за пройденный тест вычисляется по формуле kolprav / kolvop (количество правильных ответов, деленное на количество вопросов теста). В зависимости от полученного значения пользователю в тексте надписи выводится оценка. Если процент правильных ответов меньше переменной ос1, то оценка 2; до перемнной ос2 – оценка 3; до переменной ос3 – оценка 4; более перемнной ос3 – оценка 5.

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

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

       

       Также как и в серверной части  программы тестирования, в клиентской части имеется возможность получения справочной информации по работе с программой. Отличие состоит в том, что при обращении к справочным сведениям при выполнении теста происходит остановка проведения тестирования и подсчитывается результат его выполнения. При обращении к справке запускается файл Help.htm, расположенный в одной директории с клиентской частью (Приложение А, папка Test(Client)).Справочные материалы снабжены необходимыми текстовыми комментариями и иллюстрациями.

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

       4.3 Описание алгоритма работы программы

       4.3.1 Описание настройки  соединения серверной  и клиентской частей

       Для организации связи между серверной  и клиентской частями сетевой  программы тестирования использовались компоненты Indy. Использование этих компонентов предоставляет целый ряд возможностей. Сервера Indy создают новый поток для каждого клиентского соединения. Это делает программирование простым, так как каждый процесс обслуживает только одного клиента. Сервера Indy создают слушающий поток, который изолирован от главного кодового потока программы. Слушающий поток «слушает» входящие клиентские запросы. Для каждого клиента, которому сервера отвечают, создается новый поток для его обслуживания, а необходимые события возбуждаются в контексте данного потока. К тому же Indy имеет высокий уровень абстрагирования: большинство сокет-компонент не очень изолируют программиста от стека, они наоборот погружают его в сложности создания соединения частей программ.

       

       В данном дипломном проекте для  организации связи между серверной  и клиентской частями программы тестирования по дисциплинам использовались компоненты Indy, передающие по локальной сети сообщения с использованием протокола передачи UDP (User Datagram Protocol, протокол передачи датаграмм). UDP позволяет посылать короткие пакеты на узел без установки соединения с ним. В частности эти компоненты были выбраны из-за возможности посылки широковещательных сообщений. Широкополосность (Broadcast) означает, что может быть послано одно сообщение, но получено оно может всеми, кто его «слушает». Именно используя эту возможность UDP, в разрабатываемом программном продукте организовывалась связь серверной и клиентской частей. [11]

       Для организации связи между сервером и клиентом программы использовались компоненты TIdUDPServer ( ). Для посылания сообщения в локальную сеть используется свойство этого компонента Broadcast с указанием двух параметров – собственно сообщения и номера порта, по которому отправляется сообщение (номер порта может быть указан на усмотрение программиста от 1 до 65535, рекомендуется выбирать номер порта, начиная с 1001 – так как номера меньше 1000 могут быть заняты системными службами; в проекте номер порта – 5555). Так как используются широковещательные сообщения, то у разработчика нет необходимости прописывать IP-адрес компьютера, на котором установлена серверная часть программы тестирования.

       Ниже  приведен код прослушивания входящих сообщений сервером программного продукта.

       procedure TForm_Main.IdUDPServerUDPRead(Sender: TObject; AData: TStre-am;  ABinding: TIdSocketHandle);

       var Soobshenie, Param : String; //переменные входящих пакетов

       begin

       SetLength(Param, 7); //определение размера входящего сообщения

       AData.ReadBuffer(Param[1], Length(Param)); //чтение входящего сообщения

       If Param='#<Helo>' Then IdUDPServer.Broadcast('#<ANSW>', 5555); //если сообщение #<Helo>, то отсылается ответ #<ANSW>

       If Param='#<GTDB>' Then IdUDPServer.Broadcast('#<STBD>'+GetCurrentDir + '\BAZATEST.GDB',5555); //отправка клиенту пути к базе тестирования

       IdUDPServer.Broadcast('<#SERV>',5555); //сообщение о наличии сервер

       end; …

       IdUDPServer.Broadcast('#<ENDS>',5555); //сообщение о закрытии сервера

       

       Таким образом, серверная часть программы  тестирования постоянно «прослушивает» входящие сообщения, отсылаемые клиентами из локальной сети на порт 5555. В зависимости от полученного сообщения сервер либо посылает сообщение-отклик (подтверждение наличия сервера в локальной сети), либо посылает сообщение с указанием месторасположения базы тестирования.

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

       procedure TForm_Main.IdUDPServerUDPRead(Sender: TObject; AData: TStre-am;  ABinding: TIdSocketHandle);

       var Soobshenie,Param:String; //переменные входящих пакетов

       begin

       SetLength(Param, 7); //определение размера входящего сообщения

       AData.ReadBuffer(Param[1], Length(Param)); //чтение входящего сообщения

       If Param='#<SERV>' Then IdUDPClient.Broadcast('#<Helo>',5555); // отклик серверу

       If Param = '#<ANSW>' Then Begin IpServer := ABinding.PeerIP; IdUDPClient.Broadcast('#<GTDB>',5555); End; //запоминание IP-адреса сервера

       If Param = '#<STBD>' Then Begin SetLength (Soobshenie, AData.Size-7); ADa-ta.ReadBuffer (Soobshenie[1], Length(Soobshenie) ); DM.IBDatabase.DatabaseName := IpServer + ':' + Soobshenie; End; //указание пути к базе тестирования

       If Param = '#<ENDS>' Then Begin DM.IBDatabase.Connected := False; ShowMessage ('Нет соединения с сервером!!!'#13'Обратитесь к администратору!'); //отключение клиента от сервера

         … End;

       Таким образом, клиентская часть программы  тестирования постоянно «прослушивает» входящие сообщения, отсылаемые сервером по локальной сети на порт 5555. В зависимости от полученного сообщения клиент либо посылает сообщение-отклик (подтверждение получения сообщения от сервера), либо посылает сообщение о наличии в локальной сети клиента. Путь к базе тестирования формируется из IP-адреса сервера (переменная IpServer) и физического указания месторасположения базы тестирования на компьютере-сервере.

       При получении клиентом сообщения #<ENDS> происходит разрыв соединения с сервером. При этом результаты прохождения тестирования не сохраняются, а клиент переходит в ожидание включения сервера в локальной сети.

       

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

5 Методика работы пользователя с программой.doc

— 2.22 Мб (Открыть, Скачать)

6 Экспериментальная часть.doc

— 102.50 Кб (Открыть, Скачать)

7 Защита данных.doc

— 74.50 Кб (Открыть, Скачать)

8 Организационно-экономическая часть.doc

— 144.00 Кб (Открыть, Скачать)

9 Санитарные нормы и правила.doc

— 46.50 Кб (Открыть, Скачать)

~$Анализ технического задания и возможных способов решения п.doc

— 162 байт (Скачать)

Введение.doc

— 44.00 Кб (Открыть, Скачать)

Заключение.doc

— 29.50 Кб (Открыть, Скачать)

Литература.doc

— 35.00 Кб (Открыть, Скачать)

Приложение А.doc

— 32.50 Кб (Открыть, Скачать)

Реферат.doc

— 30.50 Кб (Открыть, Скачать)

Содержание.doc

— 34.50 Кб (Открыть, Скачать)

Информация о работе Сетевая программа тестирования по дисциплинам