Проектирование и разработка сетевой системы тестирования студентов

 

Министерство образования и науки Российской Федерации

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

"ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЙ УНИВЕРСИТЕТ"

Математический факультет

Кафедра математического обеспечения информационных систем







КУРСОВАЯ РАБОТА

по дисциплине "Информатика и программирование"

Проектирование и разработка сетевой системы тестирования студентов




Руководитель Полежаев П.Н.

Исполнитель

студент гр.11МОАИС (б) ТП

Иванов И.И.





Оренбург 2012

Содержание


Введение

1. Техническое задание

2. Выбор методов, способов и средств реализации

3. Описание алгоритмов

3.1 Файлы проекта и их основное назначение

3.2 Описание основных модулей программы

3.2.1 Модуль uiTestMain. pas главной формы проекта программы iTest

3.2.2 Модуль uJournal. pas главной формы проекта программы iJournal

3.2.3 Модуль uServer. pas формы сервера проекта программы iJournal

3.2.4 Модуль uMain. pas главной формы проекта программы iConstructor

3.2.5 Модуль Core. pas

3.2.7 Модуль iCon. pas

3.3 Работа с сетью

4. Руководство пользователя

4.1 Сведения о файлах программ и способе их установки

4.2 Интерфейс и функциональность программы iTest

4.3 Интерфейс и функциональность программы iJournal

4.4 Интерфейс и функциональность программы iConstructor

Заключение

Список использованных источников

Приложения

Введение


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

Позже с развитием системы образования, устная форма экзаменов стала заменяться письменной. И в 1884 г. в США вышла первая книга с тестовыми материалами, содержавшая задания и ответы к ним с оценкой по пятибалльной шкале. Это был первый в истории случай использования простейших статистических расчетов в педагогической работе.

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

Тесты, как форма контроля знаний в учебных заведениях, начали постепенно приживаться в различных странах мира. Но до сих пор не утихают споры о целесообразности их использования, качестве оценки знаний. Тесты долго не приживались в России, но в 90-ые годы началась активная пропаганда ЕГЭ.

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

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

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

Во всем этом заключается актуальность данной работы.

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

1. Техническое задание


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

Исходное задание:

-Должны быть реализованы программы: клиент, осуществляющий процесс тестирования и посылки результата на сервер; сервер, он же журнал, для работы с записями пользователей системы, централизации и сбора информации; конструктор, главным назначением которого является создание и модификация тестов.

-Каждый вопрос теста должен быть заданием закрытой формы, когда на поставленный вопрос предлагается 4 варианта ответа, и только один из них правильный.

Вопросы тестов могут содержать графические элементы - картинки (математические формулы, графики функций, схемы, сохраненные в графическом формате).

Все вопросы подразделяются на три типа трудности - A, B и C, оценивающиеся соответственно в 1, 2 и 3 балла.

Клиентская программа должна реализовывать возможность генерации списка вопросов тестов из предоставленных ей наборов вопросов при запуске процесса тестирования. Из общего набора вопросов типа A, B и C по конкретной теме программа должна выбрать в случайном порядке определенное число вопросов каждого типа и случайно их переставить. Также необходимо располагать ответы на каждый вопрос в случайном порядке.

Результат тестирования вычисляется по пятибалльной шкале.

Должна быть реализована возможность обработки записей тестируемых в журнале.

В случае повторного тестирования по тесту той же темы старый результат тестируемого заменяется новым.

Должна быть реализована возможность тестирования по сети с большим числом одновременно тестируемых студентов.

Вся информации о процессе тестирования должна динамически отображаться у преподавателя.

Информация о результатах тестирования должна централизованно собираться в журнале преподавателя.

Необходимо реализовать возможность создания тестов, редактирования и добавления вопросов в существующие тесты.

сетевая система тестирование программа

2. Выбор методов, способов и средств реализации


В соответствии с исходным заданием было решено реализовать набор вопросов в виде тестового файла (файл с расширением. tst), хранящего ссылки на вопросы трех типов сложности, количества вопросов, которые необходимо выбрать по каждому типу. Каждый тестовый файл также содержит имя теста, которое может быть использовано для обозначения темы теста. Тексты и картинки вопросов и вариантов ответов было решено хранить в виде отдельных файлов формата bmp, wmf, emf и rtf. При генерации осуществляется случайная выборка вопросов из файла теста, тем самым составляется список вопросов теста.

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

В соответствие с исходным заданием также было принято решение реализовать систему тестирования в виде 3-х связанных между собой программ. Программа iTest осуществляет процесс тестирования и реализует функции клиента. iJournal позволяет оперировать с записями журнала, осуществляет централизованный сбор результатов тестирования по сети (сервер). iConstructor применяется для создания тестовых наборов, которые в готовом виде могут быть использованы для тестирования.

Программа iTest реализует функции:

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

-Выбор имени нужного теста.

Генерация списка вопросов для сеанса тестирования по указанному пользователем имени теста. Считывает вопросы из тестового файла.

Осуществление процесса тестирования. Последовательная выдача вопросов и вариантов ответа на экран. Реакция программы на ответ пользователя (представляющий собой щелчок по картинке, текстовому полю варианта ответа или по соответствующей букве варианта ответа): выделение выбранного варианта, его сохранение и автоматический переход к следующему вопросу. По окончании тестирования, если пользователь пропустил несколько вопросов, то появляется информационное окно, которое предлагает пользователю вернуться к пропущенным вопросам или вычислить результат, считая, что на пропущенные вопросы ответил неправильно. Реализуется возможность навигации по вопросам теста через панель навигации: переход к следующему вопросу или возврат к предыдущему.

Вычисляет и передает результат тестирования на сервер, выдает на экран оценку знаний.

Во время тестирования посылает серверу запрос об обновлении времени существования в списке тестируемых в данный момент пользователей, при выходе из программы посылает запрос на выход.

Программа iJournal реализует следующие функции:

Выбор группы, с записями о студентах которой, будут производиться дальнейшие операции (также реализовывается возможность просмотра и редактирование записей студентов всех групп одновременно). Добавление, удаление и редактирование названия групп.

-В выбранной группе можно производить операции добавления, удаления, просмотра, редактирования записей о студентах.

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

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

Программа iConstructor реализует функции:

Создание, редактирование тестовых файлов.

-Содержит встроенный текстовый редактор, имеющий широкий круг возможностей по редактированию текстовых полей вопроса.

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

Позволяет изменять параметры вопроса: тип сложности, правильный вариант ответа, стиль расположения вариантов ответов и т.п.

Позволяет удалять, добавлять вопросы.

Имеет функцию составления отчета о готовности теста к использованию клиентской программой.

Все три программы в совокупности образуют сетевую систему тестирования. Связь между клиентами iTest, установленными на компьютерах тестируемых, и сервером-журналом iJournal, находящемся на компьютере преподавателя, происходит через сеть. Для этого используется модель разработанного протокола взаимодействия этих программ. Программа iConstructor не подключается к сети и хранится на компьютере преподавателя. Создаваемые ее файлы тестов распространяют вручную на клиентские машины.

Вычисление оценки-результата производиться следующим образом:

1 находится отношение суммы баллов за правильно отвеченные вопросы теста к максимально возможной сумме баллов за данный тест, затем данное отношение умножают на 100% и получают коэффициент ;

в соответствии с величиной выставляется оценка по критериям, записанным в таблицу 1.


Таблица 1 - Критерии оценивания

Оценка"5""4""3""2""1"

Для проектирования программ было решено пользоваться методами объектно-ориентированного программирования (ООП), как наиболее удобными для проектирования больших программных комплексов с возможностью расширения их в будущем, из-за большой гибкости в модификации и возможности оперирования со структурами данных, как с некоторыми абстрактными объектами. В качестве среды программирования была выбрана среда Delphi 5.0 с языком программирования Object Pascal. Данная система программирования предоставляет большие возможности при проектировании интерфейсной части приложения под операционную систему Windows, множество готовых, стандартных компонентов - элементов оконного приложения, большие удобства при кодировании и отладки программы, удобства при использовании ООП. По перечисленным выше причинам она и была выбрана как средство реализации данной работы.


3. Описание алгоритмов


3.1 Файлы проекта и их основное назначение


Сетевая система тестирования была реализована на основе трех программ iTest, iJournal и iConstructor. О составе проектов программ можно узнать из таблиц 2, 3 и 4.


Таблица 2 - Основные файлы проекта программы iTest

Имя файлаСодержимое и назначениеiTest. dprФайл проекта программы iTestuChooseTest. pasМодуль формы выбора теста frmChooseTest (рисунок 4) uEnter. pasМодуль формы frmEnter, входа в систему тестирования (рисунок 1) uiTestMain. pasМодуль главной формы frmMain (рисунок 5) Core. pasМодуль ядра проектов iTest, iJournal и iConstructorNetCore. pasМодуль для работы с сетью

Таблица 3 - Основные файлы проекта программы iJournal

Имя файлаСодержимое и назначениеiJournal. dprФайл проекта программы iJournaluAddEditGroup. pasМодуль формы frmAddEditGroup, редактирования/добавления группы (рисунки 12, 13) uAddUser. pasМодуль формы frmAddUser, добавления пользователя в группу (рисунок 17) uChoose. pasМодуль формы frmChoose, выбора способа добавления имени теста при загрузке имен из тестовых файлов (рисунок 20) uEditUser. pasМодуль формы frmEditUser, редактирования записи о пользователе (рисунок 18) uEnter. pasМодуль формы frmEnter входа в программу uGroups. pasМодуль формы frmGroups, окна списка групп (рисунок 11) uTestList. pasМодуль формы frmTestList, редактирования списка имен тестов (рисунок 19) uJournal. pasМодуль главной формы frmJournal (рисунок 15) uServer. pasМодуль формы серверного окна frmServer (рисунок 22) Core. pasМодуль ядра проектов iTest, iJournal и iConstructorNetCore. pasМодуль для работы с сетью

Таблица 4 - Основные файлы проекта программы iConstructor

Имя файлаСодержимое и назначениеiConstructor. dprФайл проекта программы iConstructoruMain. pasМодуль главной формы frmMain (рисунок 23) uTestOptions. pasМодуль формы frmTestOptions, которая предназначена для настройки опций теста (рисунок 29) uTestRediness. pasМодуль формы отчета готовности теста frmTestRediness (рисунок 30) Core. pasМодуль ядра проектов iTest, iJournal и iConstructoriCon. pasМодуль, содержащий класс и вспомогательные функции для работы конструктора

Модуль Core является общим для всех трех программ системы. Модуль NetCore является общим для программ iTest и iJournal. Модуль iCon используется только в проекте программы iConstructor.


3.2 Описание основных модулей программы


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


3.2.1 Модуль uiTestMain. pas главной формы проекта программы iTest

Данный модуль содержит класс формы TfrmMain, основные поля которого отражены в таблице 5, а методы в таблице 6.


Таблица 5 - Основные поля класса формы TfrmMain

ПоляНазначениеTimer: TTimer; Таймер, используется для того, чтобы вовремя посылать запрос об обновлении времени существования в списке тестирующихся пользователей сервера. CSocket: TClientSocket; Сокет клиента.memLog: TMemo; Компонент TMemo для ведения лога клиента. FAnswerReceived: Boolean; Флаг, определяющий, был ли получен ответ сервера. FConnecting: Boolean; Флаг, определяющий идет ли сейчас процесс соединения. FRequestType: TRequestType; Поле, определяющее тип посланного на сервер запроса. FLogedIn: Boolean; Поле, определяющее вошел ли пользователь в систему тестирования (была ли регистрация на сервере). FRootDir: String; Текущая директория, та в которой находится текущий тестовый файл. FUName, FUSurname, FUGroup: String; Поля, используемые для хранения имени, фамилии и имени группы текущего тестируемого пользователя.

Таблица 6 - Основные методы класса формы TfrmMain

МетодНазначениеprocedure CSocketError (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); Обработчик события ошибки сокета клиента. Используется для определения невозможности соединиться и продолжения попыток сделать это в методе TryToConnect. procedure CSocketRead (Sender: TObject; Socket: TCustomWinSocket); Обработчик события получения сокетом клиента ответов сервера на его запросы. procedure TimerTimer (Sender: TObject); Обработчик тиканья таймера. Используется для посылки обновления своего состояния клиентом на сервер. procedure CSocketConnect (Sender: TObject; Socket: TCustomWinSocket); Обработчик события установления клиентом соединения. procedure CSocketDisconnect (Sender: TObject; Socket: TCustomWinSocket); Обработчик события отсоединения. procedure LOG (S: String); Метод, используемый для ведения лога, в качестве параметра передается информационная строка. procedure Draw (Question: TQuestion); Метод, получающий на входе данные о текущем вопросе Question. Загружает данные вопроса из файлов в соответствующие компоненты и располагает их в нужных позициях на экране. procedure DrawFinal; Метод, осуществляющий вывод результата на форму по окончании тестирования и сохранение результата тестирования в журнал сервера. procedure Answer (v: Integer); Производит подсвечивание выбранного варианта ответа v, передачу ответа в объект Test и автоматический переход к следующему вопросу. procedure GoBack; Метод, реализующий переход класса формы к предыдущему вопросу. procedure GoNext; Метод, реализующий переход класса формы к следующему вопросу. procedure InitClientSocket; Метод, инициализирующий сокет клиента. procedure DeInitClientSocket; Метод, деактивирующий сокет клиента. procedure TryToConnect; Метод, пытающийся установить соединение с сервером. procedure SendLogIn (Name,SurName,Group: String); Метод, посылающий на сервер запрос входа в систему, в качестве параметров передаются имя, фамилия и название группы пользователя соответственно. procedure SendLogOut (Name,SurName,Group: String); Метод, посылающий на сервер запрос выхода, в качестве параметров передаются имя, фамилия и название группы пользователя соответственно. procedure SendUpdate (Name,SurName,Group: String); Метод, посылающий на сервер запрос обновления времени существования записи в списке тестируемых пользователей, в качестве параметров передаются имя, фамилия и название группы пользователя соответственно. procedure SendResult (Name,SurName,Group,TestName: String; Mark: Integer); Метод, посылающий на сервер запрос результата тестирования, в качестве параметров передаются имя, фамилия, название группы пользователя, название теста и оценка соответственно. procedure InitState (FileName: String); Метод, производящий инициализацию класса формы для работы с тестовым файлом FileName (полное имя). procedure PutUserData (UName,USurname,UGroup: String); Данный метод используется для передачи данных пользователя UName, USurname, UGroup (имени, фамилии и названия группы) при входе в iTest главному окну приложения.

В этом модуле также объявлен объект теста Test, класса TTest, Он описан в модуле Core.

Данная форма производит загрузку теста в компонент Test (он генерирует на основе тестового файла список вопросов для сеанса тестирования). Она показывает данные каждого вопроса пользователю, реагирует на его выбор, позволяет производить переход вперед и назад по списку вопросов, показывает результат тестирования. Одной из главных функций также является взаимодействие с сервером по сети.


3.2.2 Модуль uJournal. pas главной формы проекта программы iJournal

Данный модуль содержит класс формы TfrmJournal, основные поля которого отражены в таблице 7, а методы в таблице 8.


Таблица 7 - Основные поля класса формы TfrmJournal

ПоляНазначениеsgUsers: TStringGrid; Таблица, используемая для отображения текущей группы журнала. FCurGroup: String; Поле-имя текущей группы.

Таблица 8 - Основные методы класса формы TfrmJournal

МетодНазначениеprocedure InitData; Метод инициализации формы frmJournal. procedure ChangeGroup (Group: String); Метод, изменяющий текущую (отображаемую в sgUsers) группу на группу Group. procedure UpdateData; Метод, отображающий список пользователей текущей группы объекта Journal в компонент sgUsers. procedure miAddUserClick (Sender: TObject); Обработчик события нажатия по пункту меню miAddUser и кнопке spdAddUser добавления студента в группу. procedure miDelUserClick (Sender: TObject); Обработчик события нажатия по пункту меню miDelUser и кнопке spdDelUser удаления студента из группы. procedure miEditUserClick (Sender: TObject); Обработчик события нажатия по пункту меню miEdit и кнопке spdEditUser редактирования записи студента. procedure miTestsListClick (Sender: TObject); Обработчик события нажатия по пункту меню miTestsList и кнопке spdEditList для вызова формы frmTestList, организующей работу со списком оценок. procedure miEditGroupClick (Sender: TObject); Обработчик события нажатия по пункту меню miEditGroup и кнопке spdGroups, осуществляющий вызов формы frmGroups для операций с группами. procedure miSaveClick (Sender: TObject); Обработчик события нажатия по пункту меню miSave и кнопке spdSave для запуска процесса сохранения журнала. procedure miReopenClick (Sender: TObject); Обработчик события нажатия по пункту меню miReopen и кнопке spdReopen для запуска процесса повторного чтения журнала. procedure spdServerWindowClick (Sender: TObject); Обработчик события нажатия по кнопке вызова серверного окна.

Все основные операции над данными журнала производятся после вызова других форм в обработчиках событий нажатия по кнопкам панели или выбора пунктов меню. Для осуществления этих операций применяется объект класса TJounral, описанный в модуле Core. Он объявлен в разделе описания переменных модуля данной формы.

Класс данной формы реализует базовые функции по работе с записями журнала.


3.2.3 Модуль uServer. pas формы сервера проекта программы iJournal

Данный модуль содержит класс формы TfrmServer, основные поля которого отражены в таблице 9, а методы в таблице 10.


Таблица 9 - Основные поля класса формы TfrmServer

ПоляНазначениеsgLogedIn: TStringGrid; Таблица, используемая для отображения записей "залогиненных" (тестирующихся на данный момент) пользователей. btnStartStop: TButton; Кнопки запуска-остановки сервера. Timer: TTimer; Таймер. Используется для обновления списка тестируемых на данный момент пользователей. SSocket: TServerSocket; Сокет сервера. memLog: TMemo; Многострочный редактор для отображения лога сервера. lbIP: TLabel; Метка, отображающая IP адрес компьютера. LogedIn: TLIList; Компонент класса списка "залогиненных" пользователей.

Таблица 10 - Основные методы класса формы TfrmServer

МетодНазначениеprocedure SSocketClientRead (Sender: TObject; Socket: TCustomWinSocket); Обработчик события получения данных от клиентского сокета. procedure SSocketClientError (Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); Обработчик события возникновения ошибки при работе с сетью. procedure btnStartStopClick (Sender: TObject); Обработчик события нажатия по кнопке остан. /зап. сервера. procedure TimerTimer (Sender: TObject); Обработчик события тиканья таймера, используется для контроля времени существования записей "залогиненных" пользователей в списке тестируемых пользователей. procedure RunRequest (S: String; var Answ: String); Метод, выполняющий полученный сервером от клиента запрос. В качестве параметра передается полученная строка запроса, возвращает строку ответа на запрос. procedure InitServerSocket; Метод инициализации сокета сервера. procedure UpdateData; Метод, обновляющий список текущих (тестируемых) пользователей в таблице. procedure LOG (S: String); Процедура сохранения строки в лог-файл.

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


3.2.4 Модуль uMain. pas главной формы проекта программы iConstructor

Данный модуль содержит класс формы TfrmMain, основные поля которого отражены в таблице 11, а методы в таблице 12.


Таблица 11 - Основные поля класса формы TfrmMain

ПоляНазначениеFCurQuestion: TQuestion; В этом поле храним информацию о текущем, редактируемом вопросе. FLastActive: Integer; Это поле определяет последний компонент TRichEdit, участвующий в процессе редактирования (1 - 4 - варианты ответов, 5 - поле ввода текста вопроса). Используется для определения, над каким компонентом необходимо производить действия, в случае потери им фокуса ввода. FPicHeight: Integer; Поле высоты дополнительной картинка. Используется для автоматической перерисовки текста вопроса в следующий раз. FTempStr: array [1.4] of String; Массив имен картинок, которые были загружены в процессе редактирования текущего вопроса. FClosingApp: Boolean; Логическая переменная-поле, определяющая, закрывается ли приложение (Истина - закрывается). FDontCare: Boolean; Поле-флаг, которое определяет в обработчиках ряда событий нужно ли его обрабатывать. Используется для установки в методе Draw всех полей компонентов, относящихся к текущему вопросу. FCurQueModified: Boolean; Поле-флаг, определяющее модификацию текущего, редактируемого вопроса. FTestNameGiven: Boolean; Поле, определяющее, было ли указано пользователем имя файла для текущего, редактируемого теста. FAnswerTextMemLoaded: array [1.4] of Boolean; Массив переменных-флагов, определяющих, были ли загружены в память файлы вариантов ответов - текстов. FAnswerPicMemLoaded: array [1.4] of Boolean; Массив переменных-флагов, определяющих, были ли загружены в память файлы вариантов ответов - картинок. FExtPicMemLoaded: Boolean; Поле, определяющее, была ли загружена в память дополнительная картинка. FMainTextMemLoaded: Boolean; Поле, определяющее, был ли загружен в память файл с вопросом.

Таблица 12 - Основные методы класса формы TfrmMain

МетодНазначениеprocedure ClearMemLoadedState; Метод, заполняющий значением лжи флаги загрузки данных вопроса в память. procedure ClearRichEdits; Метод, очищающий компоненты класса TRichEdit. procedure ClearColors; Метод, очищающий подсветку выбранного варианта ответа. procedure ClearLastEmptyQue; Метод, удаляющий пустые вопросы в конце. procedure GoToQuestion (Num: Integer); Метод, реализующий переход к конкретному вопросу с номером Num теста. procedure GetAndDrawCurQuestion; Метод, прорисовывающий текущий вопрос с настройкой всех параметров. procedure Draw (Question: TQuestion); Метод, осуществляющий прорисовку содержимого текущего вопроса на форме. procedure SaveQuestion; Метод, сохраняющий текущий вопрос. procedure New; Метод создания нового документа. procedure Save; Метод, сохраняющий текущий документ.

Данная форма реализует работу конструктора. Она отображает данные текущего вопроса, предоставляет возможности редактирования данных вопроса, позволяет переходить по списку вопросов, добавлять вопросы, удалять и т.п. Работа со структурами данных теста осуществляется при помощи объекта класса TCon, описанного в модуле iСon.


3.2.5 Модуль Core. pas

В данном модуле описываются следующие типы данных:

Динамических массивов различных базовых типов и типов, определенных пользователем (TIntArray, TQuestionsArray, TUsersArray, TStringArray).

-Типы данных для описания основных единиц информации (запись о вопросе TQuestion, запись о пользователе TUser, запись о результате тестирования TTestResult, стиль расположения вариантов ответа TAnswerStyle), используемых в созданных классах.

Класс TTest для осуществления процесса тестирования.

Класс TJournal для работы с журналом.

Назначение класса TTest:

открытие файла теста и генерации списка вопросов для сеанса тестирования;

-хранение этого списка вопросов;

предоставление доступа к списку вопросов, навигация по нему;

сохранения ответов пользователя;

вычисление результата.

Назначение класса TJournal: загрузка и сохранения файла журнала; работа с группами (добавление, удаление, переименование групп пользователей и т.п.); работа с записями о студентах (добавление, удаление, редактирование, поиск); поддержка и синхронизация двух массивов списков пользователей (первый содержит записи о студентах всех групп, второй только записи, которые будут видны в таблице-списке главного окна программы iJournal); оперирование со списком имен тестов.

Описание полей класса TTest приведено в таблице 13, а описание основных методов - в таблице 14. Описание основных полей и методов класса TJournal отражено в таблицах 15 и 16 соответственно.


Таблица 13 - Основные поля класса TTest

ПоляНазначениеFTestName: String; Название текущего теста. FMaxWeight: Integer; Максимальная сумма набираемых баллов. FQuestionsCount: Integer; Число вопросов в тесте. FQuestions: TQuestionsArray; Массив данных о вопросах. FCurQuestionNum: Integer; Номер текущего вопроса в массиве вопросов. FUserAnswers: TIntArray; Массив ответов пользователя.

Таблица 14 - Основные методы класса TTest

МетодНазначениеfunction GenerateTest (FileName: String): Boolean; Эта функция генерирует тест по переданному ей тестовому файлу. Возвращает истину, если все прошло успешно. procedure Init (FileName: String); Метод, инициализирующий экземпляр класса, передается имя файла с тестом. function GetQuestion (var Question: TQuestion): Boolean; Функция в качестве параметра Question возвращает данные текущего вопроса, если не закончено тестирование. Возвращает истину, если текущий вопрос получить удалось. function Next: Boolean; Функция-метод перехода к следующему вопросу, если переход был осуществлен (следующий вопрос существует), то возвращает истину, иначе ложь. function Back: Boolean; Функция-метод перехода к предыдущему вопросу, если переход был осуществлен (предыдущий вопрос существует), то возвращает истину, иначе ложь. function ExistsSkiped: Boolean; Функция-метод, определяющая, были ли пропущены в ходе тестирования пользователем вопросы. procedure Answer (Answ: Integer); Метод, отвечающий на текущий вопрос, сохраняет ответ в FUserAnswers. Answ - номер варианта ответа (1-4). function CalcResult: Integer; Функция-метод, выдающая результат тестирования по пятибалльной шкале.

Таблица 15 - Основные поля класса TJournal

ПоляНазначениеFUsersCount: Integer; Число записей о пользователях (элементов массива FUsers). FGroupsCount: Integer; Число записей о группах (элементов массива FGroups). FTestNamesCount: Integer; Число названий тестов (элементов массива FTestNames). FCurUsersCount: Integer; Число текущих пользователей (элементов массива FCurUsersCount). FUsers: TUsersArray; Массив сведений о всех пользователях. FGroups: TStringArray; Массив названий групп. FTestNames: TStringArray; Массив названий тестов. FCurUsers: TUsersArray; Массив сведений о текущих пользователях (тех, которые, отображаются в таблице журнала).

Таблица 16 - Основные методы класса TJournal

МетодНазначениеfunction Load: Boolean; Метод, осуществляющий загрузку содержимого файла журнала в экземпляр класса. Возвращает True в случае успешного чтения, False в противном случае. procedure Save; Метод, сохраняющий структуры данных экземпляра класса в файл журнала. function GetTestID (S: String): Integer; Функция-метод, возвращающая по имени теста его индекс (номер элемента в массиве TestNames, равного S). В случае отсутствия такого возвращает - 1. function GetGroupID (S: String): Integer; Функция-метод, возвращающая по имени группы ее индекс (номер элемента в массиве FGroups, равного S). В случае отсутствия такого возвращает - 1. procedure AddGroup (Group: String); Метод добавления группы с именем Group в список групп (массив FGroups) с учетом соблюдения уникальности. function FindGroup (Group: String): Integer; Метод поиска группы с именем Group в список групп (массив FGroups). Возвращает номер элемента массива, равного Group или - 1 в случае его отсутствия. procedure DelGroup (Num: Integer); Метод, удаляющий группу с индексом Num (индекс в массиве FGroups) со всеми записями пользователей, принадлежащих ей из списка всех пользователей FUsers и из списка текущих пользователей FCurUsers, если эта группа была текущей. procedure EditGroup (Num: Integer; NewGroup: String); Метод, присваивающий значение NewGroup имени группы с индексным номером Num. function ExistsGroup (Group: String): Boolean; Метод, определяющий существует ли группа с указанным именем в журнале. Возвращает истину, если существует, и ложь в противном случае. procedure SetNewTestNames (A: TStringArray; Count: Integer); Метод, устанавливающий в качестве списка имен тестов элементы массива A. Параметр Count содержит количество строк в массиве A. Также происходит обновление списка оценок пользователей. function AddUser (Name,Surname: String; GroupID: Integer): Boolean; Функция-метод добавляет пользователя с именем, фамилией и индексом группы соответственно равными Name, Surname, GroupID в журнал. Если добавление произошло успешно, то функция возвращает True, в противном случае - False. procedure DelUser (Name,Surname: String; GroupID: Integer); Метод, удаляет пользователя из списка FUsers (если пользователь в списке текущих, то он также удаляется из этого списка). В качестве входных параметров процедура получает имя, фамилию и индекс группы соответственно. function EditUser (LastUserData,NewUserData: TUser): Boolean; Если пользователь, с данными LastUserData существует, то функция возвратит True, и данные пользователя заменятся на значение переменной NewUserData (параллельно производится синхронизация списка текущих пользователей), в противном случае функция возвратит False. function FindUser (Name,Surname,Group: String): Integer; Функция-метод, производящая поиск пользователя по уникальным в совокупности данным: Name (имени), Surname (фамилии),Group (группе) в массиве FUsers. Возвращает номер пользователя в массиве, если не найден, то возвращает - 1. function FindCurUsers (UserID: Integer): Integer; Функция-метод, производящая поиск индексного номера пользователя в массиве FCurUsers по указанному индексному номеру этого пользователя в массиве FUsers. Возвращает номер пользователя в массиве, если не найден, то возвращает - 1.

Алгоритм работы с объектами класса TTest:

Создается экземпляр класса (например, в обработчике события создания главной формы приложения).

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

Далее идет работа со списком уже сгенерированных вопросов TTest. Читается текущий вопрос методом GetQuestion и рисуется формой на экран, вызывается метод передачи ответа пользователя Answer (или не вызывается, если вопрос пропускается), далее вызывается метод перехода к следующему вопросу Next. В любой момент можно вызвать метод перехода к предыдущему вопросу Back. После перехода к новому вопросу идет повторный вызов GetQuestion и т.д.

Когда дошли до последнего вопроса, вызываем метод ExistsSkiped, чтобы определить были ли пользователем пропущены некоторые вопросы. Если не были, то вызываем метод CalcResult и получаем оценку.

В случае повторного тестирования переходим к пункту 2 этого списка.

Уничтожается экземпляр класса (например, в обработчике события уничтожения главной формы приложения).

Алгоритм работы с объектами класса TJournal:

Создается экземпляр класса (например, в обработчике события создания главной формы приложения).

2Вызывается метод загрузки данных журнала Load.

Выбираем текущую группу журнала, присвоив свойству CurGroup имя группы.

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

При необходимости сменить группу, переходим к пункту 3 этого списка.

Уничтожается экземпляр класса (например, в обработчике события уничтожения главной формы приложения).

Также данный модуль содержит множество констант, используемых в приложениях:

Различные константы, задающие цвета, стандартные строки, размеры видимых элементов.

-Константы названий стандартных директорий, файлов и их масок.

Пароль для входа в iJournal.

Признаки типа каждого файла системы.

Сообщения.

Отладочные константы.

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

3.2.6 Модуль NetCore. pas

В данном модуле описываются следующие типы данных:

Тип запроса клиента TRequestType.

-Типы TUserData и TUserDataArray для внутреннего использования классом TLIList.

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

Назначение класса TLIList:

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

-Обновления времени существования пользователей в этом списке и удаление их этого списка записей тех пользователей, которые потеряли право на существование в этом списке.

Описание полей класса TLIList приведено в таблице 17, а описание основных методов - в таблице 18.


Таблица 17 - Основные поля класса TLIList

ПоляНазначениеFUsers: TUserDataArray; Массив данных о текущих пользователях. FUsersCount: Integer; Число записей в этом массиве. FTime: array of Integer; Массив времен, оставшихся до следующего обновления по протоколу или удаление записи из списка.

Таблица 18 - Основные методы класса TLIList

МетодНазначениеprocedure Clear; Метод, очищающий список. procedure Add (Name,SurName,Group: String); Метод, добавляющий нового пользователя (передается имя, фамилия и название группы соответственно). procedure Delete (Name,SurName,Group: String); Метод, удаляющий пользователя (передается имя, фамилия и название группы соответственно). function ExistsUser (Name,SurName,Group: String): Boolean; Метод, проверяющий, если пользователь с указанными данными в списке (передается имя, фамилия и название группы соответственно), возвращает истину только тогда, когда пользователь с переданными данными будет найден в списке текущих пользователей. function ExistsGroup (Group: String): Boolean; Метод, определяющий, есть ли указанная группа, среди групп пользователей списка (в качестве параметра передается имя искомой группы), возвращает истину, если группа существует. procedure Update (Name,SurName,Group: String); Метод, обновляющий время указанного пользователя (передается имя, фамилия и название группы соответственно). procedure Tick (var Str: TStringArray; var Count: Integer); Метод, производящий уменьшение времени существования тестируемых пользователей, и если время вышло, то удаляет их. Возвращает массив данных об удаленных записях пользователей (соединенные строки) и число элементов в этом массиве (нужно для лога). procedure DelUser (Num: Integer); Метод, удаляющий пользователя с указанным номером в массиве FUsers. function FindUser (Name,SurName,Group: String): Integer; Метод, возвращает позицию пользователя в массиве FUsers (передается имя, фамилия и название группы соответственно).

Также данный модуль содержит множество констант, используемых в приложениях:

Константы значений сетевых параметров по умолчанию.

-Типизированные константы значений сетевых параметров.

Константы команд запросов клиента и ответов сервера.

Константы для работы с логами.

Константы данных пользователя для локального тестирования.

Константы сетевых сообщений.

Константы для работы с конфигурационными файлами клиента и сервера.

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


3.2.7 Модуль iCon. pas

В данном модуле описывается класс конструктора TCon для создания и редактирования тестовых файлов.

Назначение класса TCon:

Открытие, сохранения, хранение в памяти данных файла вопроса.

-Предоставляет набор базовых операций по работе со списком вопросов (удаление, добавление, модификация вопроса и т.п.). Также реализует навигацию по этому списку.

Реализует возможности изменения параметров каждого из вопросов.

Описание полей класса TCon приведено в таблице 19, а описание основных методов - в таблице 20.


Таблица 19 - Основные поля класса TCon

ПоляНазначениеFQuestions: TQuestionsArray; Массив вопросов. FQuestionsCount: Integer; Число вопросов в массиве FQuestions. FCurQuestionNum: Integer; Номер текущего вопроса. FTestName: String; Название теста. FTypeACount: Integer; Число генерируемых вопросов типа А. FTypeBCount: Integer; Число генерируемых вопросов типа В. FTypeCCount: Integer; Число генерируемых вопросов типа С. FModified: Boolean; Флаг модификации. FFileName: String; Имя текущего файла (включая путь). FTempDir: String; Временная директория; Таблица 20 - Основные методы класса TCon

МетодНазначениеprocedure New; Метод создания нового теста. procedure SaveAs (FileName: String); Метод, сохраняющий все файлы документа в указанную папку (эта папка - путь к файлу FileName), он делает эту папку в качестве настоящей, а временная папка не меняется. procedure Save; Метод, сохраняющий все файлы в настоящую папку, работа продолжается с временной папкой. function Load (FileName: String): Boolean; Метод, загружающий данные из файла теста. FileName - имя тестового файла. function Open (FileName: String): Boolean; Метод, загружающий данные и производящий копирование всех файлов во временную папку. FileName - имя открываемого тестового файла. function GoBack: Boolean; Метод перехода назад по списку вопросов, возвращает истину, если переход произошел. function GoNext (CanCreate: Boolean): Boolean; Метод перехода к следующему вопросу, если CanCreate=True, то если следующего вопроса нет, то он создается. Возвращает истину, если переход произошел. function GoFirst: Boolean; Метод перехода к первому вопросу, возвращает истину, если переход произошел. function GoLast: Boolean; Метод перехода к последнему вопросу, возвращает истину, если переход произошел. function GoToQuestion (Num: Integer): Boolean; Метод перехода к указанному вопросу с номером Num, возвращает истину, если переход произошел. function GetCurQuestion: TQuestion; Метод, возвращающий данные текущего вопроса. procedure UpdateCurQuestion (Question: TQuestion); Метод, обновляющий данные текущего вопроса. Question - новые данные для текущего вопроса. procedure DeleteQuest (Num: Integer); Метод, удаляющий вопрос с указанным номером Num. procedure InsertEmptyQuest (Pos: Integer); Метод, вставляющий пустой вопрос в заданную позицию Pos. procedure AppendEmptyQuest; Метод, добавляющий в конец пустой вопрос. function IsReadyForTesting: Boolean; Метод-функция, возвращает истину, когда тест готов к использованию. procedure MakeReport (var Str: TMemo); Метод, составляющий отчет о готовности, возвращает TMemo Str с отчетом.

Алгоритм работы с классом TCon:

Создается экземпляр класса (например, в обработчике события создания главной формы приложения).

2Вызывается метод New или Open, инициализирующий класс конструктора.

Осуществляется работа со списком вопросов методами DeleteQuest, InsertEmptyQuest, AppendEmptyQuest; навигация по списку вопросов методами GoBack, GoNext, GoFirst, GoLast, GoToQuestion; получение данных текущего вопроса методом GetCurQuestion, их изменение и сохранение методом UpdateCurQuestion.

Уничтожается экземпляр класса (например, в обработчике события создания главной формы приложения).

Также данный модуль содержит множество констант, используемых в приложениях:

Стандартные константы для реализации класса конструктора.

-Константы сообщений для программы iConstructor.


3.3 Работа с сетью


Для реализации связи клиента и сервера по сети были использованы стандартные компоненты TClientSocket и TServerSocket.

Для логической связи был реализован небольшой протокол. Общение клиента и сервера осуществляется в течение нескольких соединений. Во время каждого сеанса соединения клиент осуществляет следующие действия:

Пытается соединиться с сервером.

2При установлении соединения, клиент посылает запрос на выполнения некоторого действия серверу.

Получает ответ о результате выполнения запроса.

Разрывает связь.

Производит реакция на ответ сервера.

Каждый запрос в общем, виде может быть записан следующим образом:

Команда "Строка 1" "Строка 2" "Строка 3" … "Строка N"

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

Ответ сервера представляет собой непрерывную последовательность букв латинского языка. Ответ не содержит параметров.

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

Описание протокола приведено в таблице 21. В первой колонке описана команда запроса клиента, а во второй приведены варианты ответов сервера на данную команду.


Таблица 21 - Описание команд запросов

Команда запроса клиента и ее описаниеВарианты ответов сервера на соответствующие запросы клиента и их описаниеL "Имя" "Фамилия" "Группа" Команда запроса входа пользователя с указанным именем, фамилией и группой на вход в систему тестирования. OKПользователь добавлен в список тестируемых пользователей. ULПользователь с этими данными уже вошел в систему тестирования. UNBПользователь с этими данными не зарегистрирован в журнале. O "Имя" "Фамилия" "Группа" Команда запроса выхода пользователя с указанным именем, фамилией и группой из системы тестирования. OKПользователь был успешно удален из списка тестируемых пользователей. UNНет пользователя с этими данными в списке тестируемых пользователей. U "Имя" "Фамилия" "Группа" Команда запроса обновления времени существования пользователя с указанным именем, фамилией и группой в системе тестирования. OKВремя существования данного пользователя в списке тестируемых пользователей было обновлено. Если пользователя не было в списке тестируемых, но есть в журнале, то он добавляется в список текущих. UNBПользователя с этими данными вообще нет в журнале. R "Имя" "Фамилия" "Группа" "Название теста" "Оценка" Команда запроса сохранения результата тестирования пользователя с указанным именем, фамилией и группой в журнале. OKРезультат был сохранен. При этом, если пользователя не было в списке текущих пользователей, то он будет добавлен. TNТест с данным названием не зарегистрирован в журнале и результат не может быть сохранен. UNBНет записи данного пользователя в журнале.

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

Класс формы frmMain проекта программы iTest имеет методы SendLogIn, SendLogOut, SendUpdate, SendResult для посылки всех, перечисленных выше запросов серверу. В каждом из данных методов вызывается метод TryToConnect, который пытается соединиться с сервером. Он производит MAX_CONNECT_TRIES или меньше попыток соединиться с сервером. Обработка ошибок соединения производится в обработчике события OnError сокета. Если соединения с сервером после всех попыток не происходит, то выдается соответствующее сообщение пользователю. Если же соединение происходит, но сервер не дает ответа на запрос, то клиент ждет ответ в течение MAX_WAIT_TIME секунд, разрывает связь и пытается соединиться вновь. Если клиенту не удалось получить ответ сервера после MAX_CONNECT_NOANSWER успешных попыток соединения без ответа, то выдаем пользователю сообщение об этом.

Получение клиентом ответа сервера на запрос происходит в обработчике OnRead сокета клиента. Здесь анализируется ответ сервера. И в зависимости от значения FRequestType (типа последнего запроса), производится реакция. Если ответ отличается от OK, то в зависимости от типа запроса будет выдаваться соответствующее сообщение. Например, если был послан запрос входа в систему, а получен ответ UNB, то выдается сообщение об отсутствии регистрации этого пользователя в журнале.

Посылка запроса входа в систему тестирования производится из формы frmEnter (входа в систему). В случае получения ответа ОК производится тестирование. После входа в систему запускается таймер Timer, время его тиканья устанавливается равным TIMEPERCENTTOCONNECT процентов от TIMEOUT секунд (TIMEOUT - это время в секундах, через которое запись пользователя в списке тестируемых пользователей на сервере будет удалена). В обработчике OnTime таймера вызывается метод посылки запроса обновления времени существования. После вычисления результата тестирования, посылается запрос о сохранении результата. При выходе из программы клиента посылается запрос о выходе из системы.

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

Поле LogedIn класса формы frmServer представляет собой экземпляр класса TLIList. LogedIn реализует список тестируемых пользователей. Таймер Timer каждые TIMERSTEP миллисекунд вызывает метод Tick объекта LogedIn. В этом методе происходит уменьшение времени существования записей тестируемых пользователей и удаление записей пользователей, потерявших право на существование. Остальные методы LogedIn вызываются из RunRequest.

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

4. Руководство пользователя


4.1 Сведения о файлах программ и способе их установки


Сетевая система автоматизированного тестирования включает 3 программы. Программа iTest осуществляет процесс тестирования и реализует функции клиента. iJournal позволяет оперировать с записями журнала, осуществляет централизованный сбор результатов тестирования по сети (сервер). iConstructor применяется для создания тестовых наборов, которые в готовом виде могут быть использованы для тестирования.

Программа iTest включает следующие файлы и папки:


Таблица 22 - Файлы и папки iTest

Название папки или файла НазначениеiTest. exeФайл программы клиента iTest. iTest. iniКонфигурационный файл настроек программы iTest, используется для задания параметров сети. iTest. logЛог файл программы iTest, используется для анализа работы программы в сети. TestsПапка, в которую должны записываться тестовые файлы, чтобы программа могла их отобразить в списке доступных тестов. Tests\*\*. tstТестовые файлы. В каждом подкаталоге каталога Tests должен располагаться ровно 1 тест со всеми файлами, относящимися к нему.

Программа iJournal включает файлы:


Таблица 23 - Файлы и папки iJournal

Название папки или файла НазначениеiJournal. exeФайл программы журнала iJournal. iJournal. iniКонфигурационный файл настроек программы iJournal, используется для задания параметров сети. iTest. jnlФайл, в котором хранятся все записи журнала. iJournal. logЛог файл программы iJournal, используется для анализа работы программы в сети.

Программа iConstructor состоит из файлов:


Таблица 24 - Файлы и папки iConstructor

Название папки или файла НазначениеiConstructor. exeФайл программы конструктора тестов iConstructor. TestsПапка, в которой должны храниться тесты по умолчанию. Tests\TempВременная папка, в нее нельзя ничего сохранять. Tests\*\*. tstТестовые файлы.

Требования к ресурсам компьютера, на который устанавливается любая из данных программ:

Наличие ОС Windows на основе технологии NT, начиная с версии Windows 2000 (возможна и другая ОС, но программа на ней не тестировалась).

-Наличие сети, стандартных сетевых библиотек, устанавливаемых вместе с ОС или сетью (для программы iConstructor это не требуется, остальные программы также могут работать на одном компьютере без сети).

-Разрешение экрана монитора минимум 800х600, 256 цветов.

Стандартная мышь и клавиатура.

Жесткий диск не менее 4000 rpm со свободным пространством на 20 Мб.

Процессор с тактовой частотой от 500 МГц.

Программа iTest c настроенным конфигурационным файлом сети устанавливается на все компьютеры, на которых будет производиться тестирование студентов. Программы iJournal и iConstructor устанавливаются вместе на компьютер, за которым будет сидеть преподаватель, и доступ к нему должен быть ограничен. Также возможна установка последних двух программ порознь.

Порядок установки программ следующий:

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

2Скопировать в нее все файлы, относящиеся к устанавливаемой программе.

При установке клиента или сервера нужно также настроить его конфигурационный файл.

Лучше всего сначала установить программу iJournal, узнать IP адрес этой машины в сети (достаточно запустить окно сервера, и в нем на панели сверху отобразиться адрес). Дальше настроить конфигурационный файл сервера, затем отредактировать конфигурационный файл клиента, записав в него данные из конфигурационного файла сервера, сделать еще какие-нибудь настройки в этом файле, в зависимости от особенностей конкретной сети. Затем с новым конфигурационным файлом установить программу iTest на все нужные машины. Можно также использовать все три программы на одной машине.

Настройка конфигурационных файлов клиента и сервера проводится согласно таблицам 25 и 26.


Таблица 25 - Опции файла настроек сервера iJournal. ini

ОпцияНазначениеPort=45101Номер порта сервера (точно такой же должен стоять в конфигурационном файле клиента). TIMEOUT=10Время в секундах, через которое текущий пользователь будет удален из списка тестируемых пользователей, в случае не получения от его клиента запроса на обновление состояния (то же самое должно стоять в конфигурационном файле клиента). TIMERSTEP=1000Время шага таймера сервера в миллисекундах (это уже специфическая настройка только сервера).

Таблица 26 - Опции файла настроек клиента iTest. ini

ОпцияНазначениеIP=127.0.0.1IP адрес сервера, 127.0.0.1 - адрес этой же машины. Port=45101Номер порта сервера. TIMEOUT=10Время в секундах, через которое текущий пользователь будет удален из списка тестируемых пользователей на сервере, в случае не получения сервером от его клиента запроса на обновление состояния (то же самое должно стоять в конфигурационном файле сервера). TIMEPERCENTTOCONNECT=40Процент от времени TIMEOUT, через которое клиент должен пробовать посылать серверу запрос об обновлении времени существования в списке тестируемых пользователей. MAX_CONNECT_TRIES=5Максимальное число попыток клиента соединиться с сервером. MAX_WAIT_TIME=5Максимальное время в секундах ожидания клиентом ответа сервера на посланный им запрос, в случае не получения ответа в течение этого времени, клиент разрывает связь и пробует соединиться вновь. MAX_CONNECT_NOANSWER=5Максимальное число попыток клиента соединиться с сервером в случае не получения от него ответа.

Для установки теста в систему тестирования, нужно поместить все файлы, относящиеся к данному тесту в одну папку, если это не было сделано ранее. Cкопировать эту папку в директорию Tests программы iTest, чтобы та получила доступ к новому тесту. Зарегистрировать этот тест в списке тестов журнала iJournal.


4.2 Интерфейс и функциональность программы iTest


Запуск приложения осуществляется после двойного щелчка мышью по иконке приложения с названием iTest. exe. Сразу на экране появляется окно с названием "Вход в iTest", изображенное на рисунке 1. Чтобы начать работу с программой тестирования iTest пользователь должен произвести идентификацию, введя свои личные данные: фамилию в текстовое поле "Фамилия", имя в текстовое поле "Имя", а затем ввести название группы.

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



В случае нажатия по кнопке "Отмена" или по кнопке "Х" у заголовка окна происходит завершение работы приложения.

После ввода данных, пользователь нажимает на кнопку "Вход". В случае ввода неверных данных появляется информационное окно, информирующее пользователя об этом:


Рисунок 2 - Информирование об отсутствии регистрации пользователя


Далее пользователь может скорректировать введенные данные и повторить попытку входа.

Для локального входа можно зайти под фамилией "Тест" именем "Тест" и группой "04 Т-1". При этом программа не будет искать сервер, результаты тестирования не будут сохраняться в журнале.

Если клиентская программа не смогла соединиться с сервером, то выдается сообщение об этом (рисунок 3), оно также может появляться и по ходу работы с программой.


Рисунок 3 - Информирование о невозможности соединения с сервером


Если пользователь с этими данными уже вошел в систему, то также появляется соответствующее сообщение.

Пользователь успешно прошел идентификацию и перед ним появляется окно выбора теста (рисунок 4).


Рисунок 4 - Окно «Выбор теста»


Здесь перед пользователем предстает список названий тестов, доступных непосредственно программе (находящихся в подкаталоге tests каталога самой программы). Пользователь выбирает нужный ему тест двойным щелчком мыши по его имени или выделением одинарным щелчком мыши нужного теста с последующим нажатием кнопки "Начать". Нажатием кнопки "Выход" пользователь заканчивает работы с приложением.

После выбора теста начинается самая важная фаза работы программы iTest - процесс тестирования. Перед пользователем появляется окно с первым вопросом теста (рисунок 5).


Рисунок 5 - Главное окно iTest


В заголовке окна пользователю доступна информация об общем количестве вопросов теста, номере текущего вопроса и режиме тестирования. В верхней части окна располагается многострочное текстовое поле, содержащее текст текущего вопроса, справа от него может располагаться дополнительная картинка иллюстрация к вопросу (как это показано на рисунке 6).


Рисунок 6 - Главное окно iTest


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

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


Рисунок 7 - Информирование о пропущенных вопросах


Если пользователь отвечает "Yes", то программа не проводит вычисление результата и пользователь еще может ответить на пропущенные вопросы, исправить варианты ответов на отвеченные вопросы при помощи панели навигации. Если же пользователь не пропустил ни одного вопроса или в диалоговом окне, изображенном на рисунке 7, ответил "No", то программа производит автоматическое вычисление результата, посылку его журналу-серверу и выдачу оценку пользователю, как это изображено на рисунке 8. В том же окне пользователю, если это необходимо, предлагается выйти из программы, нажав по кнопке выйти, или начать процесс тестирования, щелкнув по кнопке "Новый тест". При этом открывается диалоговое окно, изображенное на рисунке 4, и пользователь может вновь пройти процесс тестирования по кругу.

В любой момент времени тестируемый может прекратить работу с программой, нажав по конке "Х" в заголовке окна, при этом тестирование считается незаконченным и результат не отправляется серверу.


Рисунок 8 - Выдача результата тестирования


Если программа не смогла соединиться с сервером и передать результат, то выдается сообщение, изображенное на рисунке 9:

Рисунок 9 - Информирование о невозможности передачи результата


Если тест с данным названием не зарегистрирован в журнале, то также появится сообщение об этом и результат также не будет принят сервером.


4.3 Интерфейс и функциональность программы iJournal


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

Сразу же после запуска появляется окно "Введите пароль", изображенное на рисунке 10. Необходимо ввести пароль "тест" - это пароль, принятый по умолчанию.


Рисунок 10 - Окно ввода пароля


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

После входа в программу появляется окно "Список групп" (рисунок 11). Перед глазами пользователя предстает список зарегистрированных в журнале групп.


Рисунок 11 - Окно «Список групп»


В данном диалоговом окне можно производить операции над группами. Нажатие по кнопке "Добавить" приводит к появлению на экране окна "Добавление группы" (рисунок 12). При работе с ним пользователь вводит название группы в соответствии с правилами, описанными в спецификации интерфейса программы iTest при входе в систему тестирования. При нажатии кнопки "ОК" производится добавление группы (группу с пустым названием специальности добавить нельзя) в список групп журнала. Также требуется уникальность названия группы в журнале, и, при попытке создание еще одной группы с существующим названием, выводит соответствующее сообщение. Нажав, по кнопке "Отмена", пользователь закроет данное окно без добавления группы и вернется к работе с окном "Список групп".


Рисунок 12 - Окно «Добавление группы»


После выбора в списке групп нужной (при этом происходит выделение группы в списке) и нажатия по кнопке "Изменить", появится окно "Изменение имени группы" (рисунок 13), операции с котором аналогичны, производимым с окном на рисунке 12.

Рисунок 13 - Окно «Изменение имени группы»


Пользователь также может удалить группу, выделив ее в списке и нажав по кнопке удалить, при этом открывается диалоговое окно подтверждения (рисунок 14).


Рисунок 14 - Подтверждение удаления группы


Нажав, по кнопке "No" пользователь может отменить команду удаления. Если же он нажмет по кнопке "Yes", то группа со всеми относящимися к ней студентами будет удалена.

Нажав кнопку "Закрыть" (окно рисунка 11) пользователь закроет окно приложения. Выбрав группу в списке и нажав на кнопку "Выбрать" пользователь преступает к работе с записями группы (также можно выбрать группу, сделав двойной щелчок по ее имени в списке).

Группы могут быть удалены, созданы, переименованы в программе только в этом диалоговом окне (рисунок 11). Пользователь может работать либо только с одной группой, либо одновременно со всеми (для этого пользователь выбирает "Все группы"). Данное диалоговое окно также может быть вызвано через меню из основного окна программы.

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

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

После выбора нужной группы пользователь преступает к работе с записями студентов данной группы (или с записями студентов всех групп одновременно в случае выбора "Все группы"). Перед пользователем появляется основное окно программы, изображенное на рисунке 15.


Рисунок 15 - Главное окно iJournal


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

Рассмотрим подробнее все функции главного окна.

Сохранение журнала должно производится после его модификации. Функция сохранения может быть вызвана через меню "Журнал\Сохранить", сочетанием клавиш Ctrl+S, либо щелчком по кнопке с дискетой на панели инструментов. Также при закрытии, программа предупредит о не сохраненном журнале и спросит, нужно ли сохранить (рисунок 16).


Рисунок 16 - Предупреждение о не сохраненном журнале


Процесс повторного прочтения журнала из файла применяется для обновления данных из файла журнала, отмены модификаций. Данная функция вызывается из меню "Журнал\Перечитать", сочетанием клавиш Ctrl+O или нажатием на кнопку со значком папки на панели инструментов.

Добавление студента в группу. Функция вызывается через меню "Студент\Добавить…", сочетанием клавиш Ctrl+A, нажатием клавиши Ins во время работы с таблицей-списком студентов, щелчком по кнопке с изображением плюса на панели инструментов. При этом появляется диалоговое окно, изображенное на рисунке 17.


Рисунок 17 - Окно «Добавление студента»


В текстовые поля "Фамилия", "Имя" вводятся соответственно фамилия и имя студента, из списка групп выбирается нужная группа, в которую осуществить добавление студента. Нажатие кнопки "Отмена" приводит к отказу от действий. Нажатие по кнопке "Добавить" ведет к появлению записи пользователя в журнале. При этом, если происходит добавление в текущую группу, то пользователь появляется в таблице-списке. При вводе имени и фамилии производится контроль букв (на принадлежность к русскому алфавиту, независимо от регистра + символ пробела, т.е. допускаются составные имена и фамилии). В том случае, если пользователь с этим именем и фамилией в указанной группе уже существует, выдается соответствующее сообщение. В случае не заполнения текстовых полей имени или фамилии также выдается сообщение.

Удаление студента. Сначала в списке студентов выделяется нужная запись, а затем вызывается функция удаления из меню "Студент\Удалить", сочетанием клавиш Ctrl+D, нажатием клавиши Del при работе с таблицей-списком или щелчком по кнопке с изображением минуса на панели инструментов. При этом открывается диалоговое окно подтверждения, в случае отказа действие отменяется, при соглашении запись пользователя стирается из списка студентов.

Редактирование записи о студенте. Выделяется запись студента в таблице-списке, а затем вызывается функция редактирования через меню "Студент\Редактировать", сочетанием клавиш Ctrl+E, нажатием клавиши Enter при работе с таблицей-списком, двойным щелчком по записи студента или щелчком по кнопке с изображением карандаша на панели инструментов. Открывается диалоговое окно (рисунок 18).


Рисунок 18 - Окно «Редактирование записи о студенте»


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

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

Редактирование списка тестов. Список тестов необходим для определения, к какому тесту относится та или иная оценка. Он предоставляет гибкость при определении оценок в столбцах таблицы. Диалоговое окно работы со списком тестов вызывается через меню "Тест\Список…", сочетанием клавиш Ctrl+L или щелчком по кнопке на панели инструментов с изображением списка. Открывается диалоговое окно "Список тестов", изображенное на рисунке 19. Большую часть окна занимает таблица имен тестов, первая строка содержит название теста, соответствующего первому столбу оценок, вторая - второму и т.д. В нижней части окна находится текстовое поле "Имя теста", с кнопкой "Применить" справа от него, оно предназначено для непосредственного редактирования имен тестов. Выделяется нужное имя теста, редактируется строка в однострочном текстовом поле и нажимается кнопка "Применить", в результате меняется имя теста в списке. Нажатие на кнопку "Вставить" приводит к вставки пустой строки в таблицу имен тестов в позицию выделенной строки. При нажатии на кнопку "Добавить" осуществляется добавление пустой строки в конец списка. Нажатие на кнопку "Удалить" приводит к удалению выделенной строки. Нажатие на кнопку "Очистить" приводит к очищению всего списка (перед этим выдается окно подтверждения). Кнопка "Файл…" открывает диалоговое окно открытия файла теста (чтение имени теста будет происходить непосредственно из него), после выбора файла появляется окно выбора способа вставки имени теста из файла (рисунок 20): в текущую позицию (позицию выделения), в конец списка или заменить весь список.


Рисунок 19 - Окно работы со списком тестов


Рисунок 20 - Окно выбора способа вставки


Аналогичные действия вызывает нажатие на кнопку "Папка…", открывается диалоговое окно выбора папки с тестами, после выбора осуществляется извлечение имен тестов из тестовых файлов указанной папки (учитываются только 2 уровня вложенности каталогов). Нажатие на кнопку "ОК" приводит к сохранению списка тестов, при этом в случае если в результате редактирования число имен тестов уменьшилось (может пропасть часть оценок студентов), то выдается предупреждение (рисунок 21). Также недопустимы пустые имена тестов и символ двойной кавычки в названии теста.


Рисунок 21 - Информирование об удалении оценок


Вызов диалогового окна "Список групп" осуществляется (рисунок 11) через меню "Группа\Изменить…", сочетанием клавиш Ctrl+G или щелчком по кнопки с изображением головы человека (необходимо для перехода к работе с другой группой, для выполнения операций над группами). Также можно добавить группу через пункт меню "Группа\Создать".

Вызов окна "Серверное окно процесса тестирования" (рисунок 22) осуществляется через меню "Сервер\Серверное окно", сочетанием клавиш Ctrl+W или щелчком по кнопке с буквой "S". Центральную часть окна занимает список тестирующихся пользователей, в нем отображаются записи всех пользователей, вошедших в систему тестирования.


Рисунок 22 - Серверное окно


В верхней части окна располагается панель. На ней располагается кнопка "Запуск/Стоп", запускающая или останавливающая сервер системы. Справа от нее находится кнопка, которая дублирует функции предыдущей, но еще отображает состояние сервера: красный кружок - сервер запущен, синий - сервер выключен. Еще правее располагается метка, информирующая об IP адресе сервера. В нижней части отображается лог серверной части приложения. Также можно запускать и останавливать сервер из главного окна приложения нажатием клавиши F9, нажатием кнопки с изображением в виде кружка или через меню "Сервер\ Запуск\Стоп". Окно, изображенное на рисунке 22, может в любой момент быть закрыто, не нарушая процесса тестирования. При попытке остановить сервер в процессе тестирования, выдается подтверждение на остановку. В случае соглашения список тестирующихся пользователей очищается.

4.4 Интерфейс и функциональность программы iConstructor


Данная программа предназначена для конструирования тестов. Каждый тест представляет собой совокупность файлов, главным из них является файл с расширением *. tst, он содержит ссылки на файлы с текстами вопросов, файлы вариантов ответа и дополнительных картинок. Также содержит такие параметры, как название теста, числа выбираемых программой iTest вопросов всех трех типов сложности из общего числа вопросов каждого типа.

Каждый вопрос теста представляет собой совокупность параметров вопроса и файлы, содержащие отображаемую информацию (файлы текста или картинок). Параметрами вопроса являются:

Стиль расположения вариантов ответов (в одну или в две колонки).

-Форма представления вариантов ответов (картинки или текст).

Тип вопроса A, B или C. A - тип легких вопросов (меньше баллов) C - тип трудных вопросов (больше баллов).

Наличие дополнительной картинки.

Вариант правильного ответа.

Конструктор создает набор (список) вопросов, который сохраняется в файл теста. Порядок вопросов в списке не играет роли для программы iTest, т.к. она, при составлении списка вопросов для сеанса тестирования, случайно выбирает вопросы каждого типа из набора вопросов тестового файла. Порядок же вопросов в списке конструктора нужен только при конструировании. Каждый вопрос списка имеет свой номер.

Конструктор может редактировать вопросы списка поодиночке. Редактируемый в данный момент вопрос называется текущим. Можно изменять параметры текущего вопроса с помощью кнопок панелей инструментов. Для изменения параметров вопроса, который не является текущим, необходимо сначала сделать этот вопрос текущим.

Для работы со списком вопросов реализованы следующие возможности:

Переход к первому, предыдущему, следующему и последнему вопросу списка.

-Переход к вопросу с конкретным номером.

Удаление текущего вопроса.

Вставка пустого вопроса в текущую позицию списка.

Добавление пустого вопроса в конец списка вопросов.

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

Сразу после запуска программы появляется ее главное окно, изображенное на рисунке 23.


Рисунок 23 - Главное окно программы iConstructor


В верхней части располагается строка меню, дублирующая некоторые кнопки панелей инструментов.

Основную часть главного окна конструктора занимают компоненты, отображающие визуальные данные каждого вопроса. Поле ввода формулировки вопроса располагает сразу под панелями инструментов, под ним располагаются поля ввода текста вариантов ответа (если форма ответов текст, иначе - компоненты для загрузки и отображения картинок), справа от поля ввода формулировки может располагаться дополнительная картинка.

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

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

Под строкой меню располагается стандартная панель инструментов (рисунок 24).


Рисунок 24 - Стандартная панель инструментов


Перечислим назначение кнопок слева направо:

Кнопка создания нового пустого документа. Если текущий документ не был сохранен, то программа запрашивает пользователя о необходимости его сохранить (рисунок 25). Нажатием по кнопке "Yes" вызываем сохранения файла, нажатием по кнопке "Cancel" отменяем действие и продолжаем работать с текущим документом.

2Кнопка сохранения документа. Если текущий документ не был ни разу сохранен, то открывается диалоговое окно сохранения файла (рисунок 26), пользователь должен указать отдельную папку для документа, предварительно создав ее, и имя файла теста. Также нельзя сохранять документ во временную папку Temp.

Кнопка открытия документа. Если текущий документ не был сохранен, то программа запрашивает пользователя о необходимости его сохранить (рисунок 25).

Кнопка вырезания текста из текущего текстового поля ввода текстовых данных вопроса.

Кнопка копирования текста из текущего текстового поля ввода текстовых данных вопроса.

Кнопка вставки текста в текущее текстовое поле ввода текстовых данных вопроса.

Кнопка отмены последнего действия в текущем поле ввода текстовых данных вопроса.

Раскрывающийся список выбора имени шрифта для текущего поля ввода текстовых данных вопроса.

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

Кнопка назначения жирного начертания текущему полю ввода текстовых данных вопроса.

Кнопка назначения курсивного начертания текущему полю ввода текстовых данных вопроса.

Кнопка назначения подчеркнутого начертания текущему полю ввода текстовых данных вопроса.

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

Кнопка применения выравнивания по центру к текущему полю ввода текстовых данных вопроса.

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

Кнопка изменения цвета текста в текущем поле ввода текстовых данных вопроса.


Рисунок 25 - Предупреждение о необходимости сохранения документа


Рисунок 26 - Сохранение документа


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


Рисунок 27 - Дополнительная панель инструментов


Перечислим назначение элементов управления слева направо:

Переключение между представлением вариантов ответа в одну/две колонки.

2Поставленный флажок говорит о том, что вариантами ответов являются картинки, отсутствие флажка - варианты ответов - текст.

Раскрывающийся список выбора типа вопроса (A, B или C). Если пусто, то тип вопроса не был выбран.

Кнопка загрузки текста формулировки вопроса. Нажатие этой кнопки вызывает диалоговое окно открытия текстового файла (рисунок 28). Нужно указать файл, из которого должна быть загружена информация.

Кнопки загрузки вариантов ответов из файлов (текстовых или графических). При нажатии открывается диалоговое окно открытия текстового файла или файла картинки, в зависимости от состояния флажка 2.

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

Кнопка вызова диалогового окна "Опции теста" (рисунок 29). В поле "Название теста" вводят название теста. В поля "Тип A", "Тип B" и "Тип C", вводят количества вопросов трех данных типов, которые будет выбирать программа iTest из общего числа вопросов каждого из данных типов. Здесь же можно увидеть общее число вопросов в тесте. Нажатием кнопки "ОК" мы применяем изменения.

Кнопка вызова окна отчета о готовности теста. При конструировании теста могут возникать несоответствия, которые не позволяют использовать его программой iTest. Например, в опциях теста указано число вопросов типа A, равное 10, а создано всего 3 вопроса типа A, или не указан вариант правильного ответа в некотором задании. При нажатии этой кнопки открывается диалоговое окно отчета готовности, изображенное на рисунке 30. В многострочном поле записаны все несоответствия в тесте, которые допустимы на этапе конструирования теста, но не на этапе использования. Если же написано "Тест готов!", то это означает, что несоответствий нет. Для того, чтобы перейти от этапа конструирования к этапу использования теста, пользователю нужно устранить все несоответствия. Нажатие кнопки "ОК" закрывает данное окно.

Кнопка перехода к первому вопросу списка вопросов конструктора.

Кнопка перехода к предыдущему вопросу списка вопросов конструктора.

Текстовое поле ввода номера конкретного вопроса, к которому нужно осуществить переход. При необходимости перехода к вопросу с конкретным номером в это поле вводится номер вопроса и нажимается кнопка Enter. В случае недопустимого ввода отображается прежний вопрос.

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

Кнопка перехода к последнему вопросу списка вопросов конструктора.

Кнопка удаления текущего (отображаемого) вопроса из списка вопросов конструктора. При этом запрашивается подтверждение на удаление.

Кнопка вставки пустого вопроса на место текущего, бывший текущий вопрос будет идти сразу же после вставленного.

Кнопка добавления пустого вопроса в конец списка вопросов теста. Сразу же происходит отображение этого вопроса.

Общие принципы работы с конструктором:

Ввод и загрузка данных вопросов, установка параметров вопросов.

2Установка опций теста: названия, количества генерируемых iTest вопросов каждого типа.

Просмотр отчета готовности теста к использованию программой iTest. В случае несоответствий, необходимо их устранить.

Заключение


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

Клиент-серверная сетевая архитектура приложения позволяет авторизовать студентов в iTest, хранить журналы с оценками в iJournal и создавать новые тесты в iConstructor.

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

Список использованных источников


1.Материалы рассылки сайта #"justify">2.Материалы сайта #"justify">.Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика. - М.: Academa, 1999. - 816 с.

.Гофман В.Э., Хомоненко А.Д. Delphi 5 в подлиннике. - СПб.: БХВ, 1999. - 800 с.

.Архангельский А.Я. Delphi 6. Справочное пособие. - М.: БИНОМ, 2001. - 1023 с.

.Delphi. Советы программистов. /Под ред.В.А. Озерова. - СПб.: Символ, 2002. - 912 с.

Приложения


Приложение А


Описание использованных форматов файлов

Для функционирования системы тестирования были реализованы форматы файлов. tst и. jnl.

Файлы формата. tst используются для описания набора вопросов, используемых для генерации теста. В нем содержатся параметры генерации списка вопросов, а также параметры каждого вопроса в отдельности. Тексты самих вопросов в форме картинок и текстовых файлов хранятся отдельно в папке вместе с тестовым файлом. Описание формата интуитивно понятно из таблиц 27 и 28.


Таблица 27 - Формат тестового файла. tst

Номер строкиЗапись1Идентификатор файла теста (строка ITEST1.0) 2Имя теста3Число вопросов типа A4Число вопросов типа B5Число вопросов типа C6Число вопросов в тестовом наборе7…Далее идут строки с описанием каждого вопроса теста, каждая запись имеет структуру, описанную в таблице 28

Таблица 28 - Структура записи каждого вопроса в файле формата. tst

Смещение строки от начала записи о вопросеЗапись0Определение содержание дополнительной картинки (0 - есть, 1 - нет) 1Способ представления вариантов ответа (0 - текст, 1 - картинки) 2Стиль ответов (0 - 4 ответа в 2 колонки; 1 - 4 в 1 колонку) 3Имя файла, в котором содержится сам вопрос4-7Имена 4-х файлов, в которых содержатся ответы на вопрос8Номер правильного варианта ответа (1-4) 9Балл за правильный ответ на поставленный вопрос (1,2 или 3, соответственно типу сложности). 10Если описание вопроса содержит дополнительную картинку, то здесь указывается имя файла дополнительной картинки. Если же дополнительная картинка не содержится, то этой строки в файле нет

Файл формата. jnl используется для хранения информации журнала программы. В проекте предусмотрена работа только с одним файлом этого формата - iTest. jnl, содержащим данные журнала и хранящимся в одном каталоге вместе с программами iTest. exe и iJournal. exe. Описание также интуитивно понятно из таблиц 29 и 30.


Таблица 29 - Формат файла журнала. jnl

Номер строкиЗапись1Идентификатор файла журнала (строка ITJ1.0) 2Число групп (N) 3… 3+N-1В каждой строке имя группы3+NЧисло тестов, поддерживаемых журналом (K) 3+N…3+N+K-1В каждой строке имя теста3+N+KЧисло пользователей, зарегистрированных в журнале3+N+K+1Запись о каждом пользователе

Таблица 30 - Структура каждой записи о пользователе в файле формата. jnl

Смещение строки от начала записи о пользователеПоле записи0Фамилия1Имя2Код группы3Число пройденных тестов (P) 4…4+P-1Запись о результате каждого тестирования в виде двух строк (первая - код теста, вторая - оценка)

Приложение Б


Текст программ

uiTestMain. pas

unit uiTestMain;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, ExtCtrls, ComCtrls,Core, NetCore, Buttons, Psock, NMMSG, AppEvnts,;= class (TForm)

// Вспомогательные панели для отображения, группировки компонентов: TPanel;: TPanel;: TPanel;: TPanel;: TPanel;: TPanel;: TPanel;: TLabel;: TLabel;

{Компонент, применяемый для отображения текста вопроса}: TRichEdit;

{Компонент, используемый для хранения и вывода

дополнительной картинки к текущему вопросу}: TImage;

{Компоненты, которые используются для отображения

вариантов ответов на вопросы, в случае текстовых}: TRichEdit;: TRichEdit;: TRichEdit;: TRichEdit;

{Компоненты, которые используются для отображения

вариантов ответов на вопросы, в случае картинок}: TImage;: TImage;: TImage;: TImage;

{Компоненты, отображающие варианты ответов}: TPanel;: TPanel;: TPanel;: TPanel;

{Метка, отображающая оценку пользователя}: TLabel;

{Кнопка выхода из тестирования}: TButton;

{Кнопка для перехода к выбору следующего теста}: TButton;

{Кнопка навигации - переход к предыдущему вопросу}: TBitBtn;

{Кнопка навигации - переход к следующему вопросу}: TBitBtn;

// Таймер, используется для того, чтобы вовремя посылать запрос

// об обновлении времени существования в списке тестирующихся

// пользователей сервера.: TTimer;

// Сокет клиента.: TClientSocket;

// TMemo для ведения лога.: TMemo;

{Обработчик события деструкции формы}FormDestroy (Sender: TObject);

{Обработчик события создания формы}FormCreate (Sender: TObject);

{Обработчик события выделения текста в текстовых полях.

Используется для того, чтобы не позволять пользователю


Министерство образования и науки Российской Федерации ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗО

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ