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;

}

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


 

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

12616. Дослідження статистичних властивостей генераторів псевдовипадкових чисел 596 KB
  Лабораторна робота № 4 Дослідження статистичних властивостей генераторів псевдовипадкових чисел Ознайомитись з теорією випадкових процесів поняттями випадковості та псевдовипадковості і їх застосуванням у криптографії. Оволодіти методикою оцінки рівня випад...
12617. Практичне вивчення системи Windows XP 1.29 MB
  Лабораторна работа1: Практичне вивчення системи Windows XP Метою лабораторної роботи є практичне освоєння операційної системи Windows XP – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі.. Зміст Апаратура
12618. Практичне вивчення системи Windows Vista 2.55 MB
  Лабораторна работа2: Практичне вивчення системи Windows Vista Метою лабораторної роботи є практичне освоєння операційної системи Windows Vista – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі.. Зміст Апаратура...
12619. Практичне вивчення системи Windows Server 2008 2.07 MB
  Лабораторна работа3: Практичне вивчення системи Windows Server 2008 Метою лабораторної роботи є практичне освоєння операційної системи Windows Server 2008 – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі.. Зміст Апа...
12620. Практичне вивчення системи Windows 7 2.61 MB
  Лабораторна работа4: Практичне вивчення системи Windows 7 Метою лабораторної роботи є практичне освоєння операційної системи Windows 7 – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі.. Зміст Апаратура і пр...
12621. Практичне вивчення системи Windows Mobile 776 KB
  Лабораторна работа5: Практичне вивчення системи Windows Mobile Метою лабораторної роботи є практичне освоєння операційної системи для мобільних пристроїв Windows Mobile – її графічної оболонки входу і виходу структури робочого столу основних дій і настройок при роботі в системі. ...
12622. Практичне вивчення Windows Azure 1.63 MB
  Лабораторна работа6: Практичне вивчення Windows Azure Метою лабораторної роботи є практичне освоєння Windows Azure– новітньої платформи Microsoft для хмарних обчислень cloud computing.. Робота в Windows Azure вимагає наявності академічного доступу до Windows Azure або платної реєстрації в ній. Альтернат...
12623. Практичне вивчення Windows Research Kernel 310 KB
  Лабораторна работа7: Практичне вивчення Windows Research Kernel Метою лабораторної роботи є практичне освоєння Windows Research Kernel WRK – початкових кодів дослідницького ядра Windows призначених для більш глибокого вивчення архітектури Windows і досліджень в області операційних систем. Пакет W...
12624. Знайомство з 1С: Бухгалтерія 397.91 KB
  Звіт з лабораторноі роботи №1 Знайомство з 1С: Бухгалтерія з предмета САОЕІ Мета: Налаштувати параметри програми скласти проводки записати їх в журнал операцій і сформувати оборотносальдову відомість по матеріалам з допомогою програми 1С Бухгалтерія 7.7. Хі...