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;

}

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


 

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

34162. Рынок капиталов 20.33 KB
  На спрос воздействуют рыночные факторы прежде всего цена на средства производства. Чем выше цена средств производства тем меньше спрос на них со стороны покупателя. Среди них важную роль играет цена на средства производства. Чем выше цена средств производства тем выше предложение на них со стороны продавцов.
34163. Движение капитала и его структура 14.25 KB
  Движение капитала и его структура. Движение капитала – миграция капиталов между странами приносящее доход их собственникам. В свою очередь международная миграция капитала включает экспорт импорт капитала и его функционирование за рубежом. Мировое движение капитала в современных условиях служит фактором усиления интернационализации производства увеличения темпов экономического роста и уровня занятости развития передовых отраслей промышленности и превращает финансовые рынки в важнейший стимул развития мирового хозяйства.
34164. Доход на капитал. Прибыль и норма прибыли 31.19 KB
  Прибыль и норма прибыли Доходы денежные поступления от продажи производственных ресурсов и готовой продукции. От размера полученной прибыли зависят финансовое поло жение предприятия возможности формирования фондов раз вития производства и социальной сферы материального поощ рения работников. Различают полную общую валовую балансовую чистуюостающуюся после уплаты налога с прибыли бухгалтерскуюразница между доходами от продаж и бухгалтерскими издерж ками и экономическую учитывающую вмененные альтернативные издержки прибыль....
34165. Оценка капитала и инвестиционные решения 15.86 KB
  Оценка капитала и инвестиционные решения. Оценка капитала. Оценка стоимости капитала представляет собой одну из ключевых предпосылок управления компанией и её капиталом на высоком уровне эффективности. Стоимость капитала – это цена которую компания оплачивает за привлечение капитала из разнообразных источников.
34166. Рабочая сила и труд. Наемный труд 15.76 KB
  Но под рабочей силой и до Маркса и в его время и после него понимали также разные категории людей. Иногда под рабочей силой понимают также работников какоголибо предприятия зачастую за исключением административного персонала. НАЕМНЫЙ ТРУД передача продажа работником своей рабочей силы во временное пользование собственнику средств производства в обмен на заработную плату. В большинстве стран мира используются два основных способа куплипродажи рабочей силы: индивидуальные трудовые контракты и коллективные договора соглашения.
34167. Структура рынка труда. Безработица: виды и показатели измерения 31.1 KB
  Безработица: виды и показатели измерения. По выбранному нами критерию можно выделить следующие компоненты: 1 субъекты рынка труда; 2 экономические программы решения и юридические нормы принятые субъектами; 3 рыночный механизм спрос и предложение рабочей силы цена рабочей силы конкуренция; 4 безработица и социальные выплаты связанные с ней; 5 рыночная инфраструктура. Существовавшая ранее в нашей стране административно командная система управления при которой государство как собственник основных средств производства...
34168. Сущность и организация заработной платы 21.48 KB
  Важный элемент рынка труда заработная плата т. 2Сдельная форма оплаты труда имеет четыре системы. Прямая сдельная оплата труда производится по неизменным расценкам и независимо от степени выполнения нормы выработки. Аккордная оплата труда от лат.
34169. Земля как экономический ресурс. Рента и арендная плата 26.34 KB
  Поскольку предложение земли совершенно неэластично ее цена полностью определяется спросом на землю. В связи с ограниченностью земельных участков предложение земли совершенно неэластично. Земельная рента часть прибыли возникающей при использовании невоспроизводимого производственного фактора земли. Рента экономика регулярно получаемый доход с капитала облигаций имущества земли.
34170. Дифференциальная, абсолютная и монопольная рента 20.4 KB
  Дифференциальная абсолютная и монопольная рента. Рента это регулярно получаемый доход с капитала имущества или земли не требующий предпринимательской деятельности. Экономисты используют термин Рента в более узком значении: экономическая рента это цена уплачиваемая за использование земли и других природных ресурсов количество запасы которых строго ограничено. Земельная рента часть прибыли возникающей при использовании невоспроизводимого производственного фактора земли.