Система тестирования пользователей

Разработка модели системы тестирования пользователей с применением технологии "клиент-сервер". Требования к программному изделию и документации. SADT диаграмма системы тестирования до и после автоматизации. Настройка SQL-сервера и установка программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.01.2013
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

  • 1. Задание на курсовой проект
  • 2. Техническое задание на разработку модели системы тестирования пользователей с применением технологии "клиент-сервер"
    • 2.1 Введение
    • 2.2 Основания для разработки
    • 2.3 Назначение разработки
    • 2.4 Требования к программе или программному изделию
      • 2.4.1 Требования к функциональным характеристикам
      • 2.4.2 Требования к надежности
      • 2.4.3 Условия эксплуатации
      • 2.4.4 Требования к составу и параметрам технических средств
      • 2.4.5 Требования к информационной и программной совместимости
      • 2.4.6 Требования к маркировке и упаковке
      • 2.4.7 Требования к транспортированию и хранению
      • 2.4.8 Специальные требования
    • 2.5 Требования к программной документации
    • 2.6 Стадии и этапы разработки
    • 2.7 Порядок контроля и приемки
  • 3. Формализация предметной области
    • 3.1 SADT диаграмма системы тестирования пользователей до автоматизации
      • 3.1.1 Декомпозиция первого уровня
    • 3.2 SADT диаграмма системы тестирования пользователей после автоматизации
      • 3.2.1 Декомпозиция первого уровня
  • 4. Концепция построения базы данных
    • 4.1 Таблица "Пользователи" и её основные атрибуты
    • 4.2 Таблица "Тема" и её основные атрибуты
    • 4.3 Таблица "Вопрос" и её основные атрибуты
    • 4.4 Таблица "Ответ" и её основные атрибуты
    • 4.5 Таблица "Отчёт" и её основные атрибуты
  • 5. Автоматизированные рабочие места
    • 5.1 Автоматизированное рабочее место пользователя
    • 5.2 Автоматизированное рабочее место системного администратора
  • 6. Описание программы
    • 6.1 Аннотация
    • 6.2 Настройка SQL-сервера
    • 6.3 Установка программы
    • 6.4 Описание работы с программой
  • Приложение

1. Задание на курсовой проект

Система тестирования пользователей

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

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

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

Дополнительные требования:

1 Предварительно должен быть составлен план разработки и представить его преподавателю.

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

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

4 Текст программы должен содержать комментарии, поясняющие алгоритм функционирования программы.

5 На каждую программу должна быть разработана следующая документация:

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

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

Руководство пользователя должно содержать:

Назначение программы;

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

Инструкция по установке и запуску программы;

Описание типовых операций, которых может выполнять программа.

Описание программы должно содержать:

Назначение программы;

Структура программы;

Общий алгоритм работы программы;

Если программа состоит из нескольких модулей - описание порядка взаимодействия;

Описание структур данных программы;

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

2. Техническое задание на разработку модели системы тестирования пользователей с применением технологии "клиент-сервер"

2.1 Введение

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

2.2 Основания для разработки

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

2.3 Назначение разработки

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

2.4 Требования к программе или программному изделию

2.4.1 Требования к функциональным характеристикам

Разрабатываемая модель должна обладать следующими функциями:

- Работать под управлением ОС Windows 95/98/2000,ХР или Windows

NT/2000/Server 2003.

- Использовать для соединения и обмена данными протокол TCP/IP.

- Иметь доступный и простой интерфейс пользователя.

- Серверная часть должна хранить:

· базу данных пользователей:

Ш фамилия;

Ш имя;

Ш отчество.

· результаты тестирования:

Ш текст результата тестирования (пройден/не пройден);

Ш количество набранных баллов;

Ш дата и время тестирования.

· базу данных учебных курсов, доступных для тестирования пользователей:

Ш тема тестирования;

Ш варианты ответов.

- Клиентская часть должна хранить базу данных адресов серверов для подключения.

2.4.2 Требования к надежности

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

2.4.3 Условия эксплуатации

Стандартные условия эксплуатации программных продуктов.

Необходимые сотрудники для обслуживания серверной части системы -системный администратор для обслуживания собственно сервера добавление и настройка материалов для тестирования) и коллектив разработчиков групп вопросов.

2.4.4 Требования к составу и параметрам технических средств

Для нормальной работы как серверной, так и клиентской частей необходимо:

- Компьютер с процессором Intel Pentium-400 или 100%- совместимым.

- Оперативная память не менее 128 Мb.

- Жесткий диск объемом не менее 5 Gb.

- Наличие адаптера подключения к сети (сетевой карты, модема и т.п.).

- Установленная ОС Windows 95/98/NT/2000/Server 2003/ХР.

- Настроенный протокол TCP/IP.

2.4.5 Требования к информационной и программной совместимости

Модель системы должна работать под управлением ОС Windows 95/98/NT/2000/Server 2003/ХР, поэтому требуется совместимость исполняемого модуля и библиотек динамического подключения стандартам, используемым этими ОС на платформе IBM PC.

Для хранения информации требуется использование баз данных формата Microsoft SQL Server.

В качестве средства разработки требуется использовать интегрированную среду разработки Borland С++ Builder, включающую редактор исходных текстов, компилятор, компоновщик и отладчик.

В качестве средства проектирования структуры базы данных и создания файлов базы данных требуется использовать Microsoft SQL Server 2000.

2.4.6 Требования к маркировке и упаковке

Не предъявляются.

2.4.7 Требования к транспортированию и хранению

Не предъявляются.

2.4.8 Специальные требования

Не предъявляются.

2.5 Требования к программной документации

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

2.6 Стадии и этапы разработки

Содержание работы

Срок

Исполнитель этапа разработки

1.

Описание предметной области в виде диаграмм бизнес-процесса (как есть и как должно быть).

1 неделя

Пронин К.В., Блинов А.В.

2.

Выявление состава автоматизированных рабочих мест и их функциональность.

1 неделя

Пронин К.В., Блинов А.В.

3.

Проектирование модульного состава и архитектуры системы.

4.

Реализация и отладка ПО

3 недели

Пронин К.В., Блинов А.В.

5.

Составление описания ПО и руководства пользователя.

1 неделя

Пронин К.В., Блинов А.В.

6.

Демонстрация ПО.

7.

Доработка программной части и подготовка к защите.

1 неделя

Пронин К.В., Блинов А.В.

8.

Защита.

3 недели

Пронин К.В., Блинов А.В.

2.7 Порядок контроля и приемки

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

· Запуск серверной и клиентской частей.

· Соединение клиента (-ов) с сервером, проверка правильности обработки сервером соединения.

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

· Просмотр курса тестирования с клиентского рабочего места.

· Завершение сеанса связи.

3. Формализация предметной области

3.1 SADT диаграмма системы тестирования пользователей до автоматизации

3.1.1 Декомпозиция первого уровня

3.2 SADT диаграмма системы тестирования пользователей после автоматизации

3.2.1 Декомпозиция первого уровня

4. Концепция построения базы данных

База данных автоматизированной информационной системы тестирования пользователей состоит из пяти таблиц (см. рисунок 1):

· "Пользователи";

· "Тема";

· "Вопрос";

· "Ответ";

· "Отчёт".

Рисунок 1 - Структура базы данных

4.1 Таблица "Пользователи" и её основные атрибуты

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

Таблица "Пользователи" связана с другой таблицей "Отчёт" по одноимённому полю "User_ID". При этом одной записи в таблице "Пользователи" может соответствовать ноль и более записей в таблице "Отчёт" (см. рисунок 1).

Таблица 1 - Описание сущностей таблицы "Пользователь"

Пользователь

Описание

user_id

Первичный ключ.

Целочисленный тип данных INTEGER.

user_surname

Фамилия пользователя.

Строковый тип данных VARCHAR(50)

user_name

Имя пользователя.

Строковый тип данных VARCHAR(50)

user_last_name

Отчество пользователя.

Строковый тип данных VARCHAR(50)

4.2 Таблица "Тема" и её основные атрибуты

пользователь сервер программный автоматизация

Таблица "Тема" (см. таблицу 2) содержит информацию о темах вопросов для тестирования.

Таблица "Тема" связана с таблицей "Отчёт" по одноимённому "Tema_ID". При этом одной записи в таблице "Тема" может соответствовать ноль и более записей в таблице "Отчёт" (см. рисунок 1).

Таблица "Тема" связана с таблицей "Вопрос" по полям "Tema_ID" и "Tema_Parent" соответственно. При этом одной записи в таблице "Тема" может соответствовать ноль и более записей в таблице "Вопрос".

Таблица 2 - Описание сущностей таблицы "Тема"

Тема

Описание

Tema_ID

Первичный ключ.

Целочисленный тип данных INTEGER.

Tema_text

Название темы.

Строковый тип данных VARCHAR(50)

4.3 Таблица "Вопрос" и её основные атрибуты

Таблица "Вопрос" (см. таблицу 3) содержит информацию о вопросах для тестирования. Таблица "Вопрос" связана с таблицей "Ответ" по полям "Vopr_ID" и "Parent_ID" соответственно. При этом одной записи в таблице "Вопрос" может соответствовать ноль и более записей в таблице "Ответ" (см. рисунок 1).

Таблица 3 - Описание сущностей таблицы "Вопрос"

Вопрос

Описание

Vopr_id

Первичный ключ. Целочисленный тип данных INTEGER.

Text

Текст вопроса.

Строковый тип данных VARCHAR(70)

Slognost

Сложность вопроса.

Целочисленный тип данных INTEGER.

Tema_Parent

Соответствует одному из значений поля "Tema_ID" из таблицы "Тема", таким образом, однозначно характеризует темe.

Целочисленный тип данных INTEGER.

4.4 Таблица "Ответ" и её основные атрибуты

Таблица "Ответ" (см. таблицу 4) содержит ответы на вопросы.

Таблица 4 - Описание сущностей таблицы "Ответ"

Ответ

Описание

Parent_id

Соответствует одному из значений поля "Vopr_ID" из таблицы "Вопросы", таким образом, однозначно характеризует текст вопроса.

Целочисленный тип данных INTEGER.

Otvet

Текст ответа.

Строковый тип данных VARCHAR(50)

Prav_otvet

Признак правильного ответа.

Целочисленный тип данных INTEGER.

Otvet_ID

Первичный ключ. Целочисленный тип данных INTEGER.

4.5 Таблица "Отчёт" и её основные атрибуты

Таблица "Отчёт" (см. таблицу 5) содержит ответы на вопросы.

Таблица 5 - Описание сущностей таблицы "Отчёт"

Отчет

Описание

User_id

Соответствует одному из значений поля "User_ID" из таблицы "Пользователи", таким образом, однозначно характеризует пользователя.

Целочисленный тип данных INTEGER.

Res_text

Текст результата тестирования.

Строковый тип данных VARCHAR(50)

Ball

Количество набранных баллов.

Число с плавающей запятой FLOAT(8).

Tema_ID

Соответствует одному из значений поля "Tema_ID" из таблицы "Тема", таким образом, однозначно характеризует темe.

Целочисленный тип данных INTEGER.

Date

Дата проведения теста.

Строковый тип данных VARCHAR(50)

Time

Время проведения теста.

Строковый тип данных VARCHAR(50)

Result_ID

Первичный ключ.

Целочисленный тип данных INTEGER.

5. Автоматизированные рабочие места

5.1 Автоматизированное рабочее место пользователя

1 ввод данных о пользователе в базу данных;

2 выбор темы тестирования;

3 выбор правильных ответов на вопросы, предлагаемые программой.

5.2 Автоматизированное рабочее место системного администратора

1 ввод и редактирование новых тем вопросов для тестирования;

2 ввод и редактирование вопросов для тестирования.

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

6.1 Аннотация

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

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

· Фамилия, имя отчество пользователя;

· Тема тестирования;

· Ответы на вопросы.

Программа выдает пользователю следующую информацию:

· Фамилия, имя отчество пользователя;

· Тема тестирования;

· Количество набранных баллов;

· Результат тестирования;

· Результаты предыдущих тестов.

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

Для разработки использовалось следующее программное обеспечение - язык ООП Borland C++ Builder 6 c использованием технологии доступа к данным ADO (ActiveX Data Objects) и СУБД MS SQL Server 2000, работающие в среде ОС Windows. Листинг программы представлен в Приложении А.

6.2 Настройка SQL-сервера

1 Вызовите компонент Microsoft SQL Server, предназначенный для создания псевдонимов серверов - "Client Network Utility". На рисунке 2 приведен пример вызова этого компонента в среде Windows 2003 Server. В других версиях ОС Windows расположение компонента может отличаться;

Рисунок 2 - Вызов программы "Client Network Utility"

2 На вкладке "Общие" в списке "Отключённые протоколы" выберите запись "TCP/IP" и нажмите кнопку "Включить" (см. рисунок 3);

Рисунок 3 - Выбор протокола подключения

Выберите вкладку "Псевдоним" и нажмите кнопку "Добавить" (рисунок 4);

Рисунок 4 - Создание нового псевдонима сервера

3 В появившемся окне в разделе "Сетевые библиотеки" выберите пункт "ТСР/IP", в поле "Псевдоним для сервера" введите "Prioris_w2000" (без кавычек), в поле "Имя сервера" - 127.0.0.1, а в поле "Имя канала" - 1433 (см. рисунок 5). Нажмите кнопку "ОК".

Рисунок 5 - Заполнение параметров нового псевдонима сервера

4 Запустите программу управления MS SQL Server - "Enterprise Manager". Обычно это делается последовательностью действий "Пуск -> Программы -> Microsoft SQL Server -> Enterprise Manager";

Нажмите правой кнопкой мыши на узле дерева "SQL Server Group" для вызова контекстного меню;

5 Выберете пункт "New SQL Server Registration";

6 В появившемся окне нажмите кнопку "Далее", затем выберите из левого списка созданный сервер (Prioris_w2000) и нажмите кнопку "Add". Нажмите кнопку "Далее";

7 Выберите пункт "The SQL Server login information…" (см. рисунок 6), в следующем окне "Login automatically…", и в поле "Login name" введите "sa", а поле "Password" оставьте пустым (см. рисунок 7). Нажмите кнопку "Далее";

Рисунок 6 - Регистрация нового сервера

Рисунок 7 - Заполнение имени пользователя

  • После этого появится окно, в котором необходимо выбрать пункт "Add the SQL Server(s) to an existing SQL Server group" (см. рисунок 8);
  • Рисунок 8 - Выбор группы для добавления нового сервера
  • 8 После всех выше описанных операций появится окно с подтверждением успешного добавления нового сервера (см. рисунок 9);

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

9 Скопируйте два файла базы данных в каталог, где установлен SQL Server (в данном случае: "C:\Program Files\Microsoft SQL Server\MSSQL\Data");

10 Запустите программу управления MS SQL Server - "Enterprise Manager". Обычно это делается последовательностью действий "Пуск -> Программы -> Microsoft SQL Server -> Query Analyzer";

11 Введите в появившемся окне текст: "sp_attach_db 'Kurs_Max', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Kurs_Max_Data.MDF', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Kurs_Max_Log.LDF'";

12 Нажмите клавишу F5. Произойдёт подключение файлов базы данных к серверу.

6.3 Установка программы

1 Скопируйте файл "Testirovanie.exe" в выбранный вами каталог;

2 Вызовите компонент Windows предназначенный для администрирования источников данных - "Источники данных (ODBC)". На рисунке 10 приведен пример вызова этого компонента в среде Windows 2003 Server. В других версиях ОС Windows расположение компонента может отличаться;

Рисунок 10 - Вызов компонента "Источники данных (ODBC)"

В открывшемся окне (см. рисунок 11) выберите одну из двух закладок - "Пользовательский DSN" или "Системный DSN";

Рисунок 11 - Главное окно компонента "Источники данных (ODBC)"

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

Примечание:

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

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

Рисунок 12 - Первое окно мастера создания нового источника данных

3 Выберите в качестве драйвера для источника - "SQL Server" и нажмите кнопку "Готово";

4 В следующем окне мастера (рисунок 13) задайте в качестве имени источника данных - "Maximoff" (прим.: обязательно латинскими буквами и именно это имя). Введите, или если это доступно, выберите из выпадающего списка название сервера, с которым будите работать (Prioris_w2000). Нажмите кнопку "Далее";

Рисунок 13 - Задание имени источника данных и выбор сервера СУБД

5 В следующем окне (рисунок 14) ответьте на вопрос, как SQL-сервер должен проверять подлинность пользователя, для этого установите переключатель в положение "проверка подлинности учетной записи SQL Server". Включите переключатель "Получить параметры, используемые по умолчанию, от SQL-сервера" и введите в поле "Пользователь" - sa, а поле "Пароль" оставьте пустым. Нажмите кнопку "Далее";

Рисунок 14 - Настройка параметров проверки подлинности пользователя

6 Оставив в следующих двух окнах мастера (рисунок 15 и рисунок 16) всё без изменений, завершите создание источника данных, нажав в последнем окне кнопку "Готово";

Рисунок 15 - Настройка параметров работы с БД

Рисунок 16 - Настройка параметров работы с SQL-сервером

7 После окончания работы мастера появится информационное окно представленное на рисунке 17, в котором описаны произведённые настройки источника данных;

Рисунок 17 - Параметры источника данных

8 Если настройки правильные, то после нажатия кнопки "Проверить источник данных" появится подтверждающее сообщение (рисунок 18). Нажмите "ОК" и закройте все открытые окна мастера настройки источника данных.

Рисунок 18 - Подтверждающее информационное сообщение о правильности настроек

6.4 Описание работы с программой

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

Рисунок 19 - Заставка программы

Далее появится окно "Пользователи", в котором происходит выбор пользователя и темы для тестирования.

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

Рисунок 20 - Окно "Результаты тестирования"

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

Рисунок 21 - Окно "Пользователи"

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

Рисунок 22 - Окно "Программа тестирования пользователей"

Если пользователь отметил правильные ответы, то цвет текста не изменится, в противном случае он поменяется на красный. В случае, когда пользователь не выбрал правильный ответ, его цвет станет зелёным (см. рисунок 23).

Рисунок 23 - Пример выбора вариантов ответа

После того, как пользователь ответит на все вопросы, появится окно "Результаты тестирования", работа в котором описана выше.

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

Приложение

Листинг программы

Форма "Пользователи"

//кнопка "Начать тестирование"

void __fastcall TForm2::SpeedButton1Click(TObject *Sender)

{

if (QUsers1->IsEmpty()) //если не выбран ни один пользователь

{

ShowMessage("Не выбран ни один пользователь!");

}

else //если пользователь выбран

{

Form2->Hide();

Form1->Refresh();

Form1->Show();

Form1->QVopros->SQL->Clear(); //создание запроса, который выбирает все

//вопросы для данной темы

Form1->QVopros->SQL->Add("Select * from Vopros where Tema_Parent = "+QTema->FieldByName("Tema_id")->AsString+"order by Slognost");

Form1->QVopros->Open();

Form1->QVopros->First(); //установка курсора на первую запись

Form1->Label1->Caption=Form1->QVopros->FieldByName("Text")->AsString;

Form1->QOtvet->SQL->Clear(); //создание запроса, который выбирает все

//ответы для данной вопроса

Form1->QOtvet->SQL->Add("Select * from Otvet where Parent_id = "+Form1->QVopros->FieldByName("Vopr_id")->AsString);

Form1->QOtvet->Open();

Form1->QOtvet->First(); //установка курсора на первую запись

Form1->CheckBox1->Caption=Form1->QOtvet->FieldByName("Otvet")->AsString;

Form1->QOtvet->Next();

Form1->CheckBox2->Caption=Form1->QOtvet->FieldByName("Otvet")->AsString;

Form1->QOtvet->Next();

Form1->CheckBox3->Caption=Form1->QOtvet->FieldByName("Otvet")->AsString;

Form1->QOtvet->Next();

Form1->CheckBox4->Caption=Form1->QOtvet->FieldByName("Otvet")->AsString;

Form1->GroupBox1->Caption="Вопрос "+Form1->QVopros->FieldByName("Slognost")->AsString+"-ой категории сложности";

}

}

//---------------------------------------------------------------------------

//кнопка "Отчёт"

void __fastcall TForm2::N1Click(TObject *Sender)

{

Form2->Hide();

Form3->Show();

Form3->QOtchet->Close();

Form3->QOtchet->SQL->Clear();

Form3->QOtchet->SQL->Add("Select * from Otchet where User_ID= "+QUsers1->FieldByName("User_ID")->AsString+ "and Tema_ID= "+QTema->FieldByName("Tema_ID")->AsString);

Form3->QOtchet->Open();

if(!Form3->QOtchet->IsEmpty())

{

if (Form3->QOtchet->FieldByName("Res_text")->AsString=="Тест не пройден")

{

Form3->Label3->Font->Color= clRed;

Form3->Label4->Font->Color= clRed;

Form3->Label7->Font->Color= clRed;

}

else

{

Form3->Label3->Font->Color= clGreen;

Form3->Label4->Font->Color= clGreen;

Form3->Label7->Font->Color= clGreen;

}

Form3->Label7->Caption=Form3->QOtchet->FieldByName("Date")->AsString;

Form3->Label3->Caption=Form3->QOtchet->FieldByName("Res_text")->AsString+"!";

Form3->Label4->Caption="Набрано "+FloatToStr(Form3->QOtchet->FieldByName("Ball")->AsFloat)+" баллов";

}

else

{

Form3->Label3->Font->Color= clWindowText;

Form3->Label4->Font->Color= clWindowText;

Form3->Label3->Caption="Тестирование не производилось!";

Form3->Label4->Caption="Тестирование не производилось!";

Form3->Label7->Caption="";

}

//------------------------заполняем таблицу с темами, датой и временем на форме "Результат"

Form3->QOtchet->Close();

Form3->QOtchet->SQL->Clear();

Form3->QOtchet->SQL->Add("Select * from Otchet where User_ID= "+Form2->QUsers1->FieldByName("User_ID")->AsString+ "and Tema_ID= "+Form2->QTema->FieldByName("Tema_ID")->AsString+ "order by Date, Time");

Form3->QOtchet->Open();

if(!Form3->QOtchet->IsEmpty())

{

if (Form3->QOtchet->FieldByName("Res_text")->AsString=="Тест не пройден")

{

Form3->Label3->Font->Color= clRed;

Form3->Label4->Font->Color= clRed;

Form3->Label7->Font->Color= clRed;

}

else

{

Form3->Label3->Font->Color= clGreen;

Form3->Label4->Font->Color= clGreen;

Form3->Label7->Font->Color= clGreen;

}

Form3->Label7->Caption=Form3->QOtchet->FieldByName("Date")->AsString;

Form3->Label3->Caption=Form3->QOtchet->FieldByName("Res_text")->AsString+"!";

Form3->Label4->Caption="Набрано "+FloatToStr(Form3->QOtchet->FieldByName("Ball")->AsFloat)+" баллов";

}

else

{

Form3->Label3->Font->Color= clWindowText;

Form3->Label4->Font->Color= clWindowText;

Form3->Label3->Caption="Тестирование не производилось!";

Form3->Label4->Caption="Тестирование не производилось!";

Form3->Label7->Caption="";

}

Form3->SG1->RowCount=2;

Form3->SG1->FixedRows=1;

Form3->SG1->Cells[0][0]="Тема";

Form3->SG1->Cells[1][0]="Дата";

Form3->SG1->Cells[2][0]="Время";

Form3->SG1->Cells[0][1]="";

Form3->SG1->Cells[1][1]="";

Form3->SG1->Cells[2][1]="";

Form3->QOtchet->Close();

Form3->QOtchet->SQL->Clear();

Form3->QOtchet->SQL->Add("Select * from Otchet where User_ID= "+Form2->QUsers1->FieldByName("User_ID")->AsString+ "order by Date, Time");

Form3->QOtchet->Open();

Form3->QOtchet->First();

if (!Form3->QOtchet->IsEmpty())

{

int i=1;

while (!Form3->QOtchet->Eof)

{

TADOQuery *QSelect=new TADOQuery(NULL);

QSelect->ConnectionString=Form2->ADOConnection1->ConnectionString;

QSelect->SQL->Add("Select * from Tema where Tema_ID= "+Form3->QOtchet->FieldByName("Tema_ID")->AsString);

QSelect->Open();

if (!QSelect->IsEmpty())

{

Form3->SG1->Cells[0][i]=QSelect->FieldByName("Tema_text")->AsString;

Form3->SG1->Cells[1][i]=Form3->QOtchet->FieldByName("Date")->AsString;

Form3->SG1->Cells[2][i]=Form3->QOtchet->FieldByName("Time")->AsString;

Form3->SG1->RowCount=i+1;

i++;

Form3->QOtchet->Next();

}

else

{

Form3->SG1->Cells[0][1]="";

Form3->SG1->Cells[1][1]="";

Form3->SG1->Cells[2][1]="";

}

delete QSelect;

}

}

}

//---------------------------------------------------------------------------

//кнопка "О программе"

void __fastcall TForm2::N2Click(TObject *Sender)

{

Form2->Visible=false;

Form5->Visible=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)

{

//удаление всех записей, принадлежащих удалённому пользователю

TADOQuery *QSel=new TADOQuery(NULL);

QSel->ConnectionString=Form2->ADOConnection1->ConnectionString;

QSel->SQL->Add("Select * from Otchet");

QSel->Open();

QSel->First();

while (!QSel->Eof)

{

TADOQuery *QDel=new TADOQuery(NULL);

QDel->ConnectionString=Form2->ADOConnection1->ConnectionString;

QDel->SQL->Add("Select * from Users where User_ID= "+QSel->FieldByName("User_ID")->AsString);

QDel->Open();

if (QDel->IsEmpty())

QSel->Delete();

QSel->Next();

delete QDel;

}

delete QSel;

}

Форма "Тестирование"

double ball=0;

double prav=0; //количество правильных ответов (в БД)

double prav_user=0; //количество правильных ответов, данных пользователем

double neprav_user=0; //количество неправильных ответов, данных пользователем

//кнопка "ОК"

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)

{

//проверка выбран ли вообще какой-нибудь ответ

if(CheckBox1->Checked==false & CheckBox2->Checked==false & CheckBox3->Checked==false & CheckBox4->Checked==false)

{

ShowMessage("Не выбран ни один ответ!");

return;

}

//подсчёт кол-ва правильных ответов, выбранных пользователем

QOtvet->First();

//если пользователь ответил правильно

if(CheckBox1->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==1)

{

prav_user=prav_user++;

}

//если пользователь поставил "галочку" на неправильном ответе

if(CheckBox1->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==0)

{

neprav_user=neprav_user++;

CheckBox1->Font->Color = clRed;

}

//если пользователь не поставил "галочку" на правильном ответе

if (QOtvet->FieldByName("Prav_otvet")->AsInteger==1 & CheckBox1->Checked==false)

{

CheckBox1->Font->Color = clGreen;

}

QOtvet->Next();

//если пользователь ответил правильно

if(CheckBox2->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==1)

{

prav_user=prav_user++;

}

//если пользователь поставил "галочку" на неправильном ответе

if(CheckBox2->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==0)

{

neprav_user=neprav_user++;

CheckBox2->Font->Color = clRed;

}

//если пользователь не поставил "галочку" на правильном ответе

if (QOtvet->FieldByName("Prav_otvet")->AsInteger==1 & CheckBox2->Checked==false)

{

CheckBox2->Font->Color = clGreen;

}

QOtvet->Next();

//если пользователь ответил правильно

if(CheckBox3->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==1)

{

prav_user=prav_user++;

}

//если пользователь поставил "галочку" на неправильном ответе

if(CheckBox3->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==0)

{

neprav_user=neprav_user++;

CheckBox3->Font->Color = clRed;

}

//если пользователь не поставил "галочку" на правильном ответе

if (QOtvet->FieldByName("Prav_otvet")->AsInteger==1 & CheckBox3->Checked==false)

{

CheckBox3->Font->Color = clGreen;

}

QOtvet->Next();

//если пользователь ответил правильно

if(CheckBox4->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==1)

{

prav_user=prav_user++;

}

//если пользователь поставил "галочку" на неправильном ответе

if(CheckBox4->Checked==true & QOtvet->FieldByName("Prav_otvet")->AsInteger==0)

{

neprav_user=neprav_user++;

CheckBox4->Font->Color = clRed;

}

//если пользователь не поставил "галочку" на правильном ответе

if (QOtvet->FieldByName("Prav_otvet")->AsInteger==1 & CheckBox4->Checked==false)

{

CheckBox4->Font->Color = clGreen;

}

//проверка правильности ответов:

QOtvet->First();

while(!QOtvet->Eof)

{

prav=prav+QOtvet->FieldByName("Prav_otvet")->AsInteger;

QOtvet->Next();

}

//подсчёт баллов за ответ

if (prav_user!=0)

ball=ball+((prav_user-neprav_user/4)/prav)*(QVopros->FieldByName("Slognost")->AsInteger);

Pie1->Visible=true;

Pie1->Angles->StartAngle=1;

Pie1->Angles->EndAngle=1;

//если все ответы правильные - время задержки меньше

if (neprav_user==0)

{

Pie1->Visible=false;

Timer1->Interval=500;

Timer1->Enabled=true;

}

else //иначе - задержка 2 сек.

{

Pie1->Visible=true;

Timer1->Interval=1800;

Timer1->Enabled=true;

Timer2->Enabled=true;

}

//обнуляем все значения для следующего вопроса

prav=0;

prav_user=0;

neprav_user=0;

}

void __fastcall TForm1::CheckBox1MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

if(CheckBox1->Checked==false)

CheckBox1->Font->Color = clWindowText;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox3MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

if(CheckBox3->Checked==false)

CheckBox3->Font->Color = clWindowText;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox4MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

if(CheckBox4->Checked==false)

CheckBox4->Font->Color = clWindowText;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox2MouseMove(TObject *Sender,

TShiftState Shift, int X, int Y)

{

if(CheckBox2->Checked==false)

CheckBox2->Font->Color = clWindowText;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox3Click(TObject *Sender)

{

CheckBox3->Font->Color = clGreen;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox4Click(TObject *Sender)

{

CheckBox4->Font->Color = clGreen;

}

//---------------------------------------------------------------------------

//закрытие формы

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

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

TADOQuery *QSel=new TADOQuery(NULL);

QSel->ConnectionString=Form2->ADOConnection1->ConnectionString;

QSel->SQL->Add("Select * from Otchet");

QSel->Open();

QSel->First();

while (!QSel->Eof)

{

TADOQuery *QDel=new TADOQuery(NULL);

QDel->ConnectionString=Form2->ADOConnection1->ConnectionString;

QDel->SQL->Add("Select * from Users where User_ID= "+QSel->FieldByName("User_ID")->AsString);

QDel->Open();

if (QDel->IsEmpty())

QSel->Delete();

QSel->Next();

delete QDel;

}

delete QSel;

Form2->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

Form1->Hide();

Form4->Show();

}

//---------------------------------------------------------------------------

//первый таймер

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

Timer2->Enabled=false;

Pie1->Angles->EndAngle=360;

if (!QVopros->Eof)

{

QVopros->Next();

Label1->Caption=QVopros->FieldByName("Text")->AsString;

if (QVopros->FieldByName("Slognost")->AsInteger==3)

GroupBox1->Caption="Вопрос "+QVopros->FieldByName("Slognost")->AsString+"-ей категории сложности";

else

GroupBox1->Caption="Вопрос "+QVopros->FieldByName("Slognost")->AsString+"-ой категории сложности";

QOtvet->SQL->Clear();

QOtvet->SQL->Add("Select * from Otvet where Parent_id = "+QVopros->FieldByName("Vopr_id")->AsString);

QOtvet->Open();

CheckBox1->Caption=QOtvet->FieldByName("Otvet")->AsString;

QOtvet->Next();

CheckBox2->Caption=QOtvet->FieldByName("Otvet")->AsString;

QOtvet->Next();

CheckBox3->Caption=QOtvet->FieldByName("Otvet")->AsString;

QOtvet->Next();

CheckBox4->Caption=QOtvet->FieldByName("Otvet")->AsString;

QVopros->Next();

if (!QVopros->Eof)

{

QVopros->Prior();

}

}

else

{

ShowMessage("Тест окончен!");

//Вывод формы с результатами

Form1->Hide();

Form3->Show();

Form3->QOtchet->Open();

if(ball<10) //если тест не пройден

{

Form3->Label3->Font->Color= clRed;

Form3->Label4->Font->Color= clRed;

Form3->Label7->Font->Color= clRed;

Form3->QOtchet->Insert();

Form3->QOtchet->FieldByName("Date")->AsString=DateToStr(Date());

Form3->QOtchet->FieldByName("Time")->AsString=TimeToStr(Time());

Form3->QOtchet->FieldByName("Res_text")->AsString="Тест не пройден";

Form3->QOtchet->FieldByName("User_ID")->AsInteger=Form2->QUsers1->FieldByName("User_ID")->AsInteger;

if (ball==0)

Form3->QOtchet->FieldByName("Ball")->AsFloat=0;

else

Form3->QOtchet->FieldByName("Ball")->AsFloat=StrToFloat(FormatFloat("#.#",ball));

Form3->QOtchet->FieldByName("Tema_ID")->AsInteger=Form2->QTema->FieldByName("Tema_ID")->AsInteger;

Form3->QOtchet->Post();

Form3->Label3->Caption="Тест не пройден!";

Form3->Label4->Caption="Набрано "+FormatFloat("#.#",ball)+" баллов";

Form3->Label7->Caption=DateToStr(Date());

}

else //пройден

{

Form3->Label3->Font->Color= clGreen;

Form3->Label4->Font->Color= clGreen;

Form3->Label7->Font->Color= clGreen;

Form3->QOtchet->Insert();

Form3->QOtchet->FieldByName("Date")->AsString=DateToStr(Date());

Form3->QOtchet->FieldByName("Time")->AsString=TimeToStr(Time());

Form3->QOtchet->FieldByName("Res_text")->AsString="Тест пройден";

Form3->QOtchet->FieldByName("User_ID")->AsInteger=Form2->QUsers1->FieldByName("User_ID")->AsInteger;

Form3->QOtchet->FieldByName("Ball")->AsFloat=StrToFloat(FormatFloat("#.#",ball));

Form3->QOtchet->FieldByName("Tema_ID")->AsInteger=Form2->QTema->FieldByName("Tema_ID")->AsInteger;

Form3->QOtchet->Post();

Form3->Label3->Caption="Тест пройден!";

Form3->Label4->Caption="Набрано "+FormatFloat("#.#",ball)+" баллов";

Form3->Label7->Caption=DateToStr(Date());

}

//------------------------заполняем таблицу с темами, датой и временем на форме "Результат"

Form3->QOtchet->Close();

Form3->QOtchet->SQL->Clear();

Form3->QOtchet->SQL->Add("Select * from Otchet where User_ID= "+Form2->QUsers1->FieldByName("User_ID")->AsString+ "and Tema_ID= "+Form2->QTema->FieldByName("Tema_ID")->AsString+ "order by Date, Time");

Form3->QOtchet->Open();

Form3->SG1->RowCount=2;

Form3->SG1->FixedRows=1;

Form3->SG1->Cells[0][0]="Тема";

Form3->SG1->Cells[1][0]="Дата";

Form3->SG1->Cells[2][0]="Время";

Form3->SG1->Cells[0][1]="";

Form3->SG1->Cells[1][1]="";

Form3->SG1->Cells[2][1]="";

Form3->QOtchet->Close();

Form3->QOtchet->SQL->Clear();

Form3->QOtchet->SQL->Add("Select * from Otchet where User_ID= "+Form2->QUsers1->FieldByName("User_ID")->AsString+ "order by Date, Time");

Form3->QOtchet->Open();

Form3->QOtchet->First();

if (!Form3->QOtchet->IsEmpty())

{

int i=1;

while (!Form3->QOtchet->Eof)

{

TADOQuery *QSelect=new TADOQuery(NULL);

QSelect->ConnectionString=Form2->ADOConnection1->ConnectionString;

QSelect->SQL->Add("Select * from Tema where Tema_ID= "+Form3->QOtchet->FieldByName("Tema_ID")->AsString);

QSelect->Open();

if (!QSelect->IsEmpty())

{

Form3->SG1->Cells[0][i]=QSelect->FieldByName("Tema_text")->AsString;

Form3->SG1->Cells[1][i]=Form3->QOtchet->FieldByName("Date")->AsString;

Form3->SG1->Cells[2][i]=Form3->QOtchet->FieldByName("Time")->AsString;

Form3->SG1->RowCount=i+1;

i++;

Form3->QOtchet->Next();

}

else

{

Form3->SG1->Cells[0][1]="";

Form3->SG1->Cells[1][1]="";

Form3->SG1->Cells[2][1]="";

}

delete QSelect;

}

}

ball=0;

prav=0;

prav_user=0;

}

CheckBox1->Checked=false;

CheckBox2->Checked=false;

CheckBox3->Checked=false;

CheckBox4->Checked=false;

//делаем черный цвет шрифта у всех ответов

CheckBox1->Font->Color = clWindowText;

CheckBox2->Font->Color = clWindowText;

CheckBox3->Font->Color = clWindowText;

CheckBox4->Font->Color = clWindowText;

Pie1->Visible=false;

Timer1->Enabled=false;

}

//---------------------------------------------------------------------------

//второй таймер

void __fastcall TForm1::Timer2Timer(TObject *Sender)

{

Pie1->Angles->EndAngle=Pie1->Angles->EndAngle+2;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Pie1->Visible=false;

}

Форма "Результаты тестирования"

//щелчок мыши на таблице "Пользователь"

void __fastcall TForm3::DBGrid1CellClick(TColumn *Column)

{

QOtchet->Close();

QOtchet->SQL->Clear();

QOtchet->SQL->Add("Select * from Otchet where User_ID= "+Form2->QUsers1->FieldByName("User_ID")->AsString+ "and Tema_ID= "+Form2->QTema->FieldByName("Tema_ID")->AsString+ "Order by Date, Time");

QOtchet->Open();

if(!QOtchet->IsEmpty())

{

if (QOtchet->FieldByName("Res_text")->AsString=="Тест не пройден")

{

Label3->Font->Color= clRed;

Label4->Font->Color= clRed;

Label7->Font->Color= clRed;

}

else

{

Label3->Font->Color= clGreen;

Label4->Font->Color= clGreen;

Label7->Font->Color= clGreen;

}

Label7->Caption=Form3->QOtchet->FieldByName("Date")->AsString;

Label3->Caption=QOtchet->FieldByName("Res_text")->AsString+"!";

Label4->Caption="Набрано "+FloatToStr(QOtchet->FieldByName("Ball")->AsFloat)+" баллов";

}

else

{

Label3->Font->Color= clWindowText;

Label4->Font->Color= clWindowText;

Label3->Caption="Тестирование не производилось!";

Label4->Caption="Тестирование не производилось!";

Label7->Caption="";

}

SG1->RowCount=2;

SG1->FixedRows=1;

SG1->Cells[0][0]="Тема";

SG1->Cells[1][0]="Дата";

SG1->Cells[2][0]="Время";

SG1->Cells[0][1]="";

SG1->Cells[1][1]="";

SG1->Cells[2][1]="";

QOtchet->Close();

QOtchet->SQL->Clear();

QOtchet->SQL->Add("Select * from Otchet where User_ID= "+Form2->QUsers1->FieldByName("User_ID")->AsString+ "Order by Date, Time");

QOtchet->Open();

QOtchet->First();

if (!QOtchet->IsEmpty())

{

int i=1;

while (!QOtchet->Eof)

{

TADOQuery *QSelect=new TADOQuery(NULL);

QSelect->ConnectionString=Form2->ADOConnection1->ConnectionString;

QSelect->SQL->Add("Select * from Tema where Tema_ID= "+QOtchet->FieldByName("Tema_ID")->AsString);

QSelect->Open();

if (!QSelect->IsEmpty())

{

SG1->Cells[0][i]=QSelect->FieldByName("Tema_text")->AsString;

SG1->Cells[1][i]=QOtchet->FieldByName("Date")->AsString;

SG1->Cells[2][i]=QOtchet->FieldByName("Time")->AsString;

SG1->RowCount=i+1;

i++;

QOtchet->Next();

}

else

{

SG1->Cells[0][1]="";

SG1->Cells[1][1]="";

}

delete QSelect;

}

}

}

//---------------------------------------------------------------------------

//закрытие формы

void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)

{

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

TADOQuery *QSel=new TADOQuery(NULL);

QSel->ConnectionString=Form2->ADOConnection1->ConnectionString;

QSel->SQL->Add("Select * from Otchet");

QSel->Open();

QSel->First();

while (!QSel->Eof)

{

TADOQuery *QDel=new TADOQuery(NULL);

QDel->ConnectionString=Form2->ADOConnection1->ConnectionString;

QDel->SQL->Add("Select * from Users where User_ID= "+QSel->FieldByName("User_ID")->AsString);

QDel->Open();

if (QDel->IsEmpty())

QSel->Delete();

QSel->Next();

delete QDel;

}

delete QSel;

Application->Terminate();

}

//---------------------------------------------------------------------------

//кнопка "Новое тестирование"

void __fastcall TForm3::SpeedButton1Click(TObject *Sender)

{

Form3->Hide();

Form2->Show();

}

//---------------------------------------------------------------------------

//щелчок мыши на таблице "Прошлые тесты"

void __fastcall TForm3::SG1SelectCell(TObject *Sender, int ACol, int ARow,

bool &CanSelect)

{

//если произошёл щелчок мыши на поле "Дата", то передвигаем его

//на поле "Тема"

if (ACol==1)

ACol=ACol-1;

//если произошёл щелчок мыши на поле "Время", то передвигаем его

//на поле "Тема"

if (ACol==2)

ACol=ACol-2;

TADOQuery *QSelect=new TADOQuery(NULL);

QSelect->ConnectionString=Form2->ADOConnection1->ConnectionString;

QSelect->SQL->Clear();

QSelect->SQL->Add("Select * from Tema where Tema_text= '" +SG1->Cells[ACol][ARow]+"'");

QSelect->Open();

QOtchet->Close();

QOtchet->SQL->Clear();

QOtchet->SQL->Add("Select * from Otchet where User_ID= "+Form2->QUsers1->FieldByName("User_ID")->AsString+ "and Tema_ID= "+QSelect->FieldByName("Tema_ID")->AsInteger+ "and Date= '"+SG1->Cells[ACol+1][ARow]+"'"+ "and Time= '"+SG1->Cells[ACol+2][ARow]+"'"+ "order by Date, Time");

QOtchet->Open();

if(!QOtchet->IsEmpty())

{

if (QOtchet->FieldByName("Res_text")->AsString=="Тест не пройден")

{

Label3->Font->Color= clRed;

Label4->Font->Color= clRed;

Label7->Font->Color= clRed;

}

else

{

Label3->Font->Color= clGreen;

Label4->Font->Color= clGreen;

Label7->Font->Color= clGreen;

}

Label7->Caption=Form3->QOtchet->FieldByName("Date")->AsString;

Label3->Caption=QOtchet->FieldByName("Res_text")->AsString+"!";

Label4->Caption="Набрано "+FloatToStr(QOtchet->FieldByName("Ball")->AsFloat)+" баллов";

}

else

{

Label3->Font->Color= clWindowText;

Label4->Font->Color= clWindowText;

Label3->Caption="Тестирование не производилось!";

Label4->Caption="Тестирование не производилось!";

Label7->Caption="";

}

delete QSelect;

}

Размещено на Allbest.ru


Подобные документы

  • Методика и основные этапы разработки системы тестирования для оценки уровня знаний студентов с применением технологии "Клиент-сервер". Проектирование клиентской, серверной части данной системы тестирования, порядок составления финальных отчетов.

    дипломная работа [587,6 K], добавлен 08.11.2010

  • Обзор существующих решений построения систем взаимодействия. Классическая архитектура клиент-сервер. Защита от копирования и распространения материалов тестирования. Задачи ИБ компьютерных систем тестирования и обзор современных способов их реализации.

    курсовая работа [36,9 K], добавлен 26.04.2013

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

    дипломная работа [706,4 K], добавлен 07.05.2012

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

    курсовая работа [6,4 M], добавлен 14.07.2012

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

    курсовая работа [1,7 M], добавлен 13.06.2017

  • Организация проверки результатов обучения и оценки знаний, использование систем тестирования, основные требования к ним. Создание современной модели WEB-сервиса тестирования знаний; программная реализация; защита от копирования информации и списывания.

    курсовая работа [24,1 K], добавлен 11.05.2012

  • Создание системы компьютерного тестирования для контроля знаний. Проблемы, возникающие при создании тестовой оболочки в среде Ren`Py. Разработка проектных решений по системе и её частям. Структура тестирования, вопросы и ответы тестирующей системы.

    дипломная работа [501,6 K], добавлен 12.09.2016

  • Обследование объекта, обоснование необходимости систем компьютерного тестирования. Анализ существующих разработок и обоснование выбора технологии проектирования. Создание системы компьютерного тестирования на основе случайного выбора в среде Visual Basic.

    дипломная работа [2,4 M], добавлен 18.08.2013

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

    контрольная работа [928,3 K], добавлен 23.12.2012

  • Функциональная модель системы. Проектирование схемы базы данных. Проектирование архитектуры системы. Принцип технологии клиент-сервер. Построение схемы ресурсов. Выбор программных средств. Разработка базы данных с использованием Microsoft SQL Server.

    дипломная работа [1,1 M], добавлен 30.03.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.