86388

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

Курсовая

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

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

Русский

2015-04-07

166 KB

2 чел.

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

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

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

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

_____________________________________________________________________________

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

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

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

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

на тему:

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

Выполнила:

студент 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;

}

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


 

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

23070. Поняття, предмет та структура національної безпеки 36.5 KB
  ТЕМА: Безпека як суспільна цінність. Законність своєї держави визначається не лише станом війни або миру є ще пріоритетний стан безпека чітко окреслений стан суспільства США. Національна безпека стан захищеності життєво важливих інтересів особи нації суспільства і держави від внутрішніх та зовнішніх загроз. В Україні основним органом забезпечення національної безпеки є СБУ громадянська безпека забезпечення виконання і дотримання положень конституції.
23071. Сфери національних інтересів України 62.5 KB
  Сфери національних інтересів України. Конспект вельмишановного Пана Перепелиці каже про національні інтереси України ніхера тому все що є в конспекті по національним інтересам дивіться в 3 питанні національні інтереси життєво важливі матеріальні інтелектуальні і духовні цінності Українського народу як носія суверенітету і єдиного джерела влади в Україні визначальні потреби суспільства і держави реалізація яких гарантує державний суверенітет України та її прогресивний розвиток; Стаття 6. Пріоритети національних інтересів Пріоритетами...
23072. Поняття національного інтересу 40 KB
  Сфери національних інтересів України. Формується з інтересів кожної конкретної особистості кожного соціального прошарку. Завдання еліти продукування інтересів в суспільство. Еліта має мобілізувати націю на реалізацію національних інтересів.
23073. Поняття загроза та небезпека національним інтересам України. Види загроз національній безпеці України 38.5 KB
  ТЕМА: Загрози національній безпеці. Потенційні загрози це становище при якому існують певні зазіхання але при цьому відсутні умови при яких вони переходять в намагання завдати шкоду національним інтересам України. Вимоги до органів мають упереджувати загрози: ефективно виявляти загрози та ефективно на них реагувати; адекватно реагувати на виникнення загрози; Методика: визначення чинників що спричиняють загрозу національним інтересам України; класифікувати загрози звідкіля виходять і в якій сфері знаходяться: політика економіка...
23074. Суб`єкти національної безпеки 37.5 KB
  Суб`єкти національної безпеки З конспекту. ТЕМА: Система національної безпеки України. Суб`єкти національної безпеки. Вимоги до системи національної безпеки.
23075. Вимоги до системи національної безпеки 33 KB
  Вимоги до системи національної безпеки З конспекту Кожна країна створює певну систему органів які могли б реагувати на загрози така система називається системою національної безпеки. Система забезпечення національно міжнародної безпеки включає певну діяльність органів по підтримці стану захищеності. Наявність механізмів які забезпечують стан безпеки. Система національної безпеки наявність певних органів тільки обмежена територією певної країни.
23076. Роль та повноваження органів спеціальної компетенції в системі забезпечення національної безпеки України 69.5 KB
  Роль та повноваження органів спеціальної компетенції в системі забезпечення національної безпеки України. Національний банк України відповідно до основних засад грошовокредитної політики визначає та проводить грошовокредитну політику в інтересах національної безпеки України; міністерства Служба безпеки України та інші центральні органи виконавчої влади в межах своїх повноважень забезпечують виконання передбачених Конституцією і законами України актами Президента України Кабінету Міністрів України завдань здійснюють...
23077. Вимірювання напруг при механічних деформаціях поляризаційним методом 447 KB
  Різницю фаз Δ що виникає між двома взаємно перпендикулярними лінійнополяризованими хвилями визначають за формулою 16 де λ довжина хвилі; σ1 σ2 головні нормальні напруги; d товщина деталі; с стала фотопружності яка залежить від матеріалу деталі. Таким чином при постійній товщині зразка лінії однакового зсуву фаз відповідають лініям однакових різниць нормальних напруг або лініям рівних максимальних дотичних напруг оскільки максимальна дотична напруга τmax пов'язана з...
23078. Дослідження анізотропних кристалів під поляризаційним мікроскопом 458 KB
  Прилади: поляризаційний мікроскоп клин або компенсатор Берека набір шліфів і пластинок з одновісних та двовісних кристалів вирізаних під різними кутами до оптичної осі. Різниця яку вносить пластинка залежить від її товщини матеріалу зразка та орієнтації оптичної осі відносно зрізу. Форма і розміщення ізохромат залежать від напряму оптичної осі відносно зрізу товщини зразка і довжини хвилі Форма і розміщення ізогір залежать від орієнтації осі відносно зрізу і взаємного положення поляризатора та аналізатора. Для пластинки вирізаної...