Создание тренажерно-тестирующей системыРефераты >> Программирование и компьютеры >> Создание тренажерно-тестирующей системы
Для загрузки данных в таблицу UserLog и изменения записи в таблице UserReg будем использовать форму выдачи пользователю логина и пароля (форма 6). Эта форма связана с предыдущей формой по ключевому полю Id. После выдачи логина и пароля пользователю необходимо изменить поле Registered записи о нем в таблице UserReg с 0 на 1.
Макет формы выдачи пользователю логина и пароля. Форма 6.
|
Для входа в систему нужна форма, принимающая логин и пароль пользователя для проверки их в базе данных (форма 7). Это простая форма, связанная с таблицей UserLog полями Login и Pwd.
Макет формы идентификации. Форма 7.
|
Для добавления нового теста в базу данных используется форма 8. Ей необходимо указать только имя файла с добавляемым тестом. Формат файла определен выше. Эта форма наполняет и связывает таблицы TestCom, Tests, Tasks, Answ.
Макет формы добавления нового теста. Форма 7.
|
5.3. Обобщенный алгоритм решения задачи и его декомпозиция на модули (функции).
Из рисунка 2 видна общая декомпозиция задачи на модули. Рассмотрим систему тестирования пользователя. При входе в систему пользователь вводит свой логин и пароль. По этим данным из базы данных необходимо получить уникальный номер пользователя (Id), этот номер, в свою очередь, будет передан тестирующему модулю системы вместе с уникальным номером теста (Test_Un), запрошенного пользователем. Отображать вопросы (задачи) теста будем дозировано, т.е. по одной задаче за раз.
Функционально-технологическая схема и алгоритм тестирования.
Рис. 3. Общая функционально-технологическая схема подсистемы тестирования.
Подсистема тестирования может быть разбита на несколько основных этапов - модулей, реализуемых средствами СУБД (запросы, отчеты). Блок-схема алгоритма подсистемы тестирования приведена на рис. 4.
Рис. 4. Блок-схема алгоритма подсистемы тестирования
5.4. Детальные алгоритмы реализации отдельных модулей задачи.
Модуль 1.1. Проверка логина и пароля.
На входе имеем: login – логин пользователя, password – пароль пользователя.
Посылам запрос к SQL серверу:
SELECT * FROM UserReg, UserLog WHERE Login = ‘login’ AND Pwd = ‘password’ AND UserReg.Id = UserLog.Id Если результат запроса не пустой, то считаем, что пользователь авторизовался успешно, также в результате запроса имеем все его данные – ФИО, адрес, …
Модуль 1.2 Формирование теста.
На входе имеем: Test_Un – номер теста, который выбрал пользователь для прохождения.
Посылам запрос к SQL серверу:
SELECT Task_Un FROM Tests WHERE Test_Un = Test_Un
В результате получаем набор (массив) номеров задач, которые соответствуют этому тесту.
Модуль 1.3. Установка случайного порядка следования задач.
Необходимо узнать, сколько задач нужно выдать пользователю.
Посылам запрос к SQL серверу:
SELECT Test_Portion FROM TestCom WHERE Test_Un = Test_Un
Результат запомним в Portion. «Перемешиваем» массив задач, полученный на предыдущем шаге, и оставляем только Portion из них.
Модуль 1.4. Установка случайного порядка следования ответов.
На входе: Task_Un – номер задачи, для которой выбираем ответы.
Посылам запрос к SQL серверу:
SELECT * FROM Answ WHERE Task_Un = Task_Un
Результат – массив ответов, который также «перемешиваем».
Модуль 1.5. Отображение задачи и вариантов ответов.
На входе: Task_Un – номер задачи, текст которой нужно вывести. Answers – массив вариантов ответов для этой задачи.
Посылам запрос к SQL серверу:
SELECT Task_Cont FROM Tasks WHERE Task_Un = Task_Un
Результат – тело задачи в формате HTML, его и выводим.
Для каждого варианта ответа посылам запрос к SQL серверу:
SELECT Answ_Cont FROM Answ WHERE Answ_Un = Answers[i]
Результат – тело варианта ответа в формате HTML, его и выводим.
Модуль 1.6. Проверка правильности ответов и вывод результата теста.
На входе: Answer – номер ответа, который выбрал пользователь.
Посылам запрос к SQL серверу:
SELECT Answ_True FROM Answ WHERE Answ_Un = Answer
Результат – 0 (не правильный) или 1 (правильный) ответ. Этот результат заносим в таблицу History и храним до конца теста.