86388

РАЗРАБОТКА АДАПТИВНОЙ СИСТЕМЫ ТЕСТИРОВАНИЯ

Курсовая

Информатика, кибернетика и программирование

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

Русский

2015-04-07

166 KB

1 чел.

ПРАВИТЕЛЬСТВО РФ

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

"ВЫСШАЯ ШКОЛА ЭКОНОМИКИ"

МОСКОВСКИЙ ИНСТИТУТ ЭЛЕКТРОНИКИ И МАТЕМАТИКИ

_____________________________________________________________________________

Кафедра "Информационные технологии и автоматизированные системы"

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

по дисциплине

"Человеко-машинное взаимодействие"

на тему:

"РАЗРАБОТКА АДАПТИВНОЙ СИСТЕМЫ ТЕСТИРОВАНИЯ"

Выполнила:

студент 5 курса ФИТиВТ

Пудовкин Ю.Ю.  группа АП-92

     Проверил:

                                                                              доцент кафедры ИТАС Иванов С.Ю.

 

        

Москва 2014


Оглавление

[0.1]
Постановка задачи

[0.2] Описание структуры программы

[0.3] Входные и выходные данные

[0.4] Пример работы программы


Постановка задачи

Цель: разработать адаптивную систему тестирования. Система предназначена для тестирования 1 уровня (выбор 1 варианта из нескольких) и ориентирована на проверку знаний по различным предметам.

 

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

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

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

Система должна состоять из следующих компонент:

- модуль считывания теста;

- модуль вывода вопроса и выбора варианта;

- модуль хронометрирования;

- модуль оценивания.

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

Модуль вывода вопроса и выбора варианта. Модуль вывода предназначен для отображения вопросов и возможных ответов. Форма отображения может быть различной. Должен быть считан вопрос из файла и возможные ответы. Например, на форме с помощью элемента  TextBox на форме отображается вопрос и возможные ответы.  Ответы пронумерованы. По номеру определяется, какой ответ выбран. Управление передается вначале модулю хронометрирования, который делает отметку времени, а затем модулю оценивания, который сохраняет оценку за введенный ответ на текущий вопрос. Процесс повторяется циклически, пока не будет обработан последний ответ. Считывание вопросов и соответствующих ответом производится до конца файла. Количество вопросов не ограничивается системой тестирования.

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

Модуль оценивания. Модуль предназначен для оценки результатов тестирования. В ходе  тестирования он накапливает статистику о правильных и неправильных ответах. В файле тестов преподаватель оценивает каждый ответ в соответствии с определенной системой оценки. Например, пятибалльная, правильный ответ – 5 баллов, неправильный – 2. Важно, что оценки ставит сам преподаватель без участия программиста. Так как он считает нужным для конкретного вопроса и предмета. Модуль накапливает сумму баллов, а итоговая оценка получается как (сумма баллов)/(количество вопросов). Добавочной  функцией может быть сбор результатов тестирования в файле с фамилиями опрашиваемых, названием теста, оценкой и временем выполнения.

Входные и выходные данные

  1.  Входные данные.
    1.  Файл формата txt, подготовленный преподавателем.
    2.  Ответы, введенные тестируемым.
  2.  Выходные данные.
    1.  Сообщение о прохождении тестирования и оценка.
    2.  Время, затраченное на тестирование.

Пример работы программы

1. Пользователь запускает программу, выводятся: поле, для ввода фамилии пользователя, правила тестирования и кнопка «Тест».

  1.  Пользователь вводит свою фамилию и начинает тест.

4. После начала теста появляются непосредственно сами вопросы и варианты ответов для них. Так же в верхнем правом углу появляется таймер. Далее имеется кнопка «начать заново» и смена студента.

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

4.2. Если время на выполнение теста истекло до его завершения пользователем, то тест заканчивается.

5. При нажатии кнопки «Неправильные ответы» выводятся номера всех вопросов, на которых был дан неверный ответ.

5.1 . Пользователь вводит номер одного из вопросов и нажимает кнопку «Ответы». Выводится сам вопрос, варианты ответов и правильный ответ выделяется зеленым цветом.


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

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

#include <vcl.h>

#pragma hdrstop

#include "Pudoffkin.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int mas[100],g=0,p=0,l,n=0,i=0,j=1,k=2,z=3,h=4,y=5,rez=0,vopr=0,t=13,t1=0,kol=0,rez1=0,bal=0;

TStringList *u = new TStringList();

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

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

u->LoadFromFile("spisok.txt");

kol=((u->Count)-1)/6;

ListBox2->Items->Strings[0]="Тест на знания правил дорожного движения.";

ListBox2->Items->Strings[1]="13 вопросов.";

ListBox2->Items->Strings[2]="3 варианта ответа на каждый. Только один правильный.";

ListBox2->Items->Strings[3]="Время 13 минут.";

ListBox2->Items->Strings[4]="Вернуться к предыдущему вопросу нельзя.";

ListBox2->Items->Strings[5]="После выбора ответа нажмите на ПОДТВЕРДИТЬ.";

ListBox2->Items->Strings[6]="После этого ответ изменить нельзя.";

ListBox2->Items->Strings[7]="Затем нажмите ДАЛЬШЕ.";

ListBox2->Items->Strings[8]="После последнего вопроса тест остановится сам, нажмите кнопку КОНЕЦ.";

ListBox2->Items->Strings[9]="Выведутся результат и неправильные ответы.";

ListBox2->Items->Strings[10]="Будет возможность посмотреть правильные.";

ListBox2->Items->Strings[11]="Удачи!";

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

t=13;

t1=0;

Button7->Visible=true;

Edit9->Visible=false;

Label3->Visible=false;

Label4->Visible=true;

Timer1->Enabled=true;

Edit1->Visible=true;

Edit7->Visible=true;

Button3->Visible=false;

ListBox2->Visible=false;

Edit3->Visible=true;

Button2->Visible=false;

Button5->Visible=false;

RadioButton1->Visible=true;

RadioButton2->Visible=true;

RadioButton3->Visible=true;

RadioButton1->Checked=false;

RadioButton2->Checked=false;

RadioButton3->Checked=false;

RadioButton1->Font->Color=clBlack;

RadioButton2->Font->Color=clBlack;

RadioButton3->Font->Color=clBlack;

Button4->Visible=true;

Label2->Visible=false;

Edit4->Visible=false;

Label1->Visible=false;

Edit2->Visible=false;

Button6->Visible=false;

Edit6->Visible=false;

p=0;

n=0;

i=0;

randomize();

j=i+random(4)+1;

//j=i+1;

do

k=i+random (4)+1;

while(k==j);

//k=i+2;

do

z=i+random(4)+1;

while ((z==j)||(z==k));

//z=i+3;

h=i+4;

y=i+5;

rez=0;

rez1=0;

vopr=0;

ListBox1->Items->LoadFromFile("spisok.txt");

for (g=5;g<(u->Count);g=g+6)

bal=bal+StrToInt(ListBox1->Items->Strings[g]);

Edit3->Text=ListBox1->Items->Strings[i];

RadioButton1->Caption=ListBox1->Items->Strings[j];

RadioButton2->Caption=ListBox1->Items->Strings[k];

RadioButton3->Caption=ListBox1->Items->Strings[z];

Button1->Caption="Начать заново";

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Label1->Visible=true;

Edit2->Visible=true;

Edit2->Text=IntToStr(rez)+" вопрос(ов) из "+IntToStr(kol)+" ("+IntToStr(100*rez/kol)+"%)";

Edit8->Visible=true;

Edit8->Text=IntToStr(rez1)+ " балл(ов) из "+IntToStr(bal)+" ("+IntToStr(100*rez1/bal)+"%)";

if (rez!=kol)

Button5->Visible=true;

else

Button5->Visible=false;

Button6->Visible=false;

Edit6->Visible=false;

Button2->Visible=false;

Timer1->Enabled=false;

Label3->Caption="Фамилия";

Label3->Visible=true;

Label4->Visible=true;

Label4->Caption=Edit9->Text;

}

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

void __fastcall TForm1::Button3Click(TObject *Sender)

{

Button4->Visible=true;

if(strcmp(ListBox1->Items->Strings[i].c_str(),Edit5->Text.c_str())==0)

{

Edit3->Text="Конец";

RadioButton1->Caption=" ";

RadioButton2->Caption=" ";

RadioButton3->Caption=" ";

}

else

{

RadioButton1->Visible=true;

RadioButton2->Visible=true;

RadioButton3->Visible=true;

RadioButton1->Checked=false;

RadioButton2->Checked=false;

RadioButton3->Checked=false;

Edit3->Visible=true;

Edit3->Text=ListBox1->Items->Strings[i];

RadioButton1->Caption=ListBox1->Items->Strings[j];

RadioButton2->Caption=ListBox1->Items->Strings[k];

RadioButton3->Caption=ListBox1->Items->Strings[z];

}

//vopr++;

Button3->Visible=false;

}

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

void __fastcall TForm1::Button4Click(TObject *Sender)

{

vopr++;

if (RadioButton1->Checked)

 if (strcmp(RadioButton1->Caption.c_str(),ListBox1->Items->Strings[h].c_str())==0)

   {

    rez++;

    rez1=rez1+StrToInt(ListBox1->Items->Strings[y]);

   }

 else

 {

 mas[n]=vopr;

 n++;

 }

else

if (RadioButton2->Checked)

 if (strcmp(RadioButton2->Caption.c_str(),ListBox1->Items->Strings[h].c_str())==0)

 {

   rez++;

   rez1=rez1+StrToInt(ListBox1->Items->Strings[y]);

 }

 else

 {

   mas[n]=vopr;

   n++;

 }

if (RadioButton3->Checked)

 if (strcmp(RadioButton3->Caption.c_str(),ListBox1->Items->Strings[h].c_str())==0)

 {

   rez++;

   rez1=rez1+StrToInt(ListBox1->Items->Strings[y]);

 }

 else

 {

 mas[n]=vopr;

 n++;

 }

Edit3->Visible=false;

RadioButton1->Visible=false;

RadioButton2->Visible=false;

RadioButton3->Visible=false;

i=i+6;

j=i+random(3)+1;

do

k=i+random (3)+1;

while(k==j);

do

z=i+random(3)+1;

while ((z==j)||(z==k));

//j=j+6;

//k=k+6;

//z=z+6;

//s=s+6;

h=h+6;

y=y+6;

Button3->Visible=true;

Button4->Visible=false;

Button5->Visible=false;

if(strcmp(ListBox1->Items->Strings[i].c_str(),Edit5->Text.c_str())==0)

{

Button3->Visible=false;

Edit3->Text="Конец";

RadioButton1->Visible=false;

RadioButton2->Visible=false;

RadioButton3->Visible=false;

Button4->Visible=false;

Button2->Visible=true;

Button1->Caption="Начать заново";

}

}

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

void __fastcall TForm1::Button5Click(TObject *Sender)

{

Label2->Visible=true;

Edit4->Visible=true;

Button6->Visible=true;

Edit6->Visible=true;

for (p=0;p<n;p++)

Edit4->Text=Edit4->Text+StrToInt(mas[p])+" ";

}

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

void __fastcall TForm1::Button6Click(TObject *Sender)

{

Button2->Visible=false;

RadioButton1->Checked=false;

RadioButton2->Checked=false;

RadioButton3->Checked=false;

RadioButton1->Font->Color=clBlack;

RadioButton2->Font->Color=clBlack;

RadioButton3->Font->Color=clBlack;

i=(StrToInt(Edit6->Text)-1)*6;

j=i+random(3)+1;

do

k=i+random (3)+1;

while(k==j);

do

z=i+random(3)+1;

while ((z==j)||(z==k));

h=i+4;

y=i+5;

Edit3->Visible=true;

RadioButton1->Visible=true;

RadioButton2->Visible=true;

RadioButton3->Visible=true;

Edit3->Text=ListBox1->Items->Strings[i];

RadioButton1->Caption=ListBox1->Items->Strings[j];

RadioButton2->Caption=ListBox1->Items->Strings[k];

RadioButton3->Caption=ListBox1->Items->Strings[z];

if(strcmp(RadioButton1->Caption.c_str(),ListBox1->Items->Strings[h].c_str())==0)

{

RadioButton1->Checked=true;

RadioButton1->Font->Color=clGreen;

}

else

if(strcmp(RadioButton2->Caption.c_str(),ListBox1->Items->Strings[h].c_str())==0)

{

RadioButton2->Checked=true;

RadioButton2->Font->Color=clGreen;

}

else

if(strcmp(RadioButton3->Caption.c_str(),ListBox1->Items->Strings[h].c_str())==0)

{

RadioButton3->Checked=true;

RadioButton3->Font->Color=clGreen;

}

}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

if (t1==0)

{

 t--;

 t1=59;

}

else

t1--;

if ((t1==0)&&(t==0))

{

Timer1->Enabled=false;

Button2->Visible=true;

Button3->Visible=false;

Edit3->Text="Конец";

RadioButton1->Visible=false;

RadioButton2->Visible=false;

RadioButton3->Visible=false;

Button4->Visible=false;

// Button5->Visible=true;

Button2->Visible=true;

Button1->Caption="Начать заново";

}

Edit1->Text=t;

Edit7->Text=t1;

}

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

void __fastcall TForm1::Button7Click(TObject *Sender)

{

Button7->Visible=false;

Button1->Caption="Тест";

Edit9->Visible=true;

Edit9->Text=" ";

Label3->Visible=true;

Timer1->Enabled=false;

RadioButton1->Visible=false;

RadioButton2->Visible=false;

RadioButton3->Visible=false;

Edit3->Visible=false;

Edit1->Visible=false;

Edit7->Visible=false;

Button4->Visible=false;

Label1->Visible=false;

Label4->Visible=false;

Edit2->Visible=false;

Edit8->Visible=false;

Button6->Visible=false;

Edit6->Visible=false;

Button5->Visible=false;

Label2->Visible=false;

Edit4->Visible=false;

}

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


 

А также другие работы, которые могут Вас заинтересовать

21616. Вычисления с использованием функций в MS Excel 276.5 KB
  Можно задавать ссылки на ячейки других листов той же книги и на другие книги. Ссылки на ячейки других книг называются связями. С использованием мыши выделяют ячейки включаемые в формулу. Ячейки использованные в формуле выделены цветной рамкой а ссылки на эти ячейки в формуле шрифтом того же цвета.
21617. Графические возможности Microsoft Excel 754 KB
  В окне Добавление рисунка рис.1 следует перейти в папку в которой расположен файл рисунка и дважды щелкнуть мышью по значку эскизу файла. Выбор файла рисунка Напрямую или с использованием специальных графических фильтров можно вставлять графические файлы многих распространенных форматов.
21618. Настройка и редактирование диаграмм 630 KB
  Элементы диаграммы Выделение элементов диаграмм При выделении элементов диаграммы можно использовать мышь. Для выделения элементов можно также использовать раскрывающийся список Элементы диаграммы панели Диаграммы рис. Выделение элементов диаграммы Изменение размеров диаграммы Изменение размеров всей диаграммы Диаграмма созданная на листе с данными первоначально имеет размер по умолчанию примерно в четверть видимой части листа. В большинстве случаев этот размер недостаточен для удобного просмотра и оформления диаграммы.
21619. Организация данных на листе 433 KB
  Даны рекомендации по размещению таблиц на листах. Описаны возможные действия с листами книги и особенности их выполнения. Согласно определению список это набор строк листа содержащий однородные данные; первая строка в этом списке содержит заголовки столбцов остальные строки содержат однотипные данные в каждом столбце.
21620. Оформление таблиц в Excel 345 KB
  Для ячеек в которых установлено выравнивание по левому краю отступы задаются от левого края ячейки. Для ячеек в которых установлено выравнивание по правому краю и отступы задаются от правого края. Для выравнивания по ширине необходимо выполнить команду Формат Ячейки или щелкнуть по выделенной области правой кнопкой мыши и выполнить команду контекстного меню Формат ячеек. Во вкладке Выравнивание диалогового окна Формат ячеек рис.
21621. Печать документов Предварительный просмотр листа 442.5 KB
  К сожалению не дает достаточного представления и режим просмотра Разметка страницы. Если выделено несколько рабочих листов то при нажатии кнопки Далее по достижении последней страницы текущего листа отображается первая страница следующего выделенного листа. Если выделено несколько рабочих листов то при нажатии кнопки Назад по достижении первой страницы текущего листа отображается последняя страница предыдущего выделенного листа. Перейти из полностраничного режима просмотра в режим увеличения и обратно можно также щелкнув мышью в любой...
21622. Просмотр документов в MS Excel 487 KB
  Показаны приемы перемещения по ячейкам листа и между листами книги. Показаны возможности скрытия и отображения столбцов и строк листа одновременного просмотра различных частей листа. Указаны способы выделения фрагментов листа. Просмотр документа Изменение режима просмотра листа Для изменения режима просмотра листа используют команды меню Вид.
21623. Редактирование документов в MS Word 612.5 KB
  Показаны возможности поиска и замены текста использования синонимов. Работа с текстом Выбор языка Выбор языка текста определяет возможность автоматической проверки правописания и расстановку переносов. При вводе текста в русской раскладке устанавливается русский язык при вводе текста в английской раскладке английский США.
21624. Оформление текста документа Word 606 KB
  Описаны основные характеристики шрифта размер гарнитура цвет начертание подчеркивание и способы их установки. Основы оформления текста документа Для оформления документа используют панель инструментов Форматирование и команды меню Формат рис. Рис. Панель инструментов и меню используемые для оформления документа Установка основных параметров шрифта Шрифт Шрифт определяет внешний вид символов текста рис.