Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Писар_текст КР.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
411.65 Кб
Скачать

2.4. Тестування програмного продукту та його результати

На етапі тестування визначаються споживчі властивості програмного продукту. Успішне проведення повномасштабного тестування є запорукою його якості та ефективного використання під час експлуатації.

План тестування програмного продукту складено з наступних міркувань:

  • визначення повноти реалізації всіх функціональних вимог;

  • перевірка виконання критеріїв безпеки;

  • доведення його працездатності, стійкого виконання та коректного завершення всіх операцій незалежно від дій користувача.

Тестування програмного продукту складалося з таких кроків:

  1. Контроль коректності керування станом інтерфейсу головного вікна.

  2. Контроль коректності авторизації доступу.

  3. Контроль коректності налаштування параметрів тестування.

  4. Контроль коректності реєстрації студента перед тестуванням.

  5. Контроль коректності виконання процедури тестування та визначення його результатів.

  6. Контроль коректності відображення списку результатів тестування.

Результати тестування підтвердили коректність виконання всіх функціональних та кваліфікаційних вимог. Вони відображені на рис. 1-6 пункту 2.3 цього розділу.

Висновки

Підсистема «Підсумкові тести» АІС «Тести 2013» розроблена на основі індивідуального завдання до курсової роботи. Вона реалізує проведення підсумкового контролю знань студентів по декількох або всіх темах (розділах) навчальної дисципліни методом тестування з використанням пакетів тестів, створених підсистемою «Формування пакету тестів» АІС «Тести 2013».

Програмний продукт розроблено з використанням в якості інструментальних засобів інтерактивного об’єктно-орієнтованого середовища програмування C++-Builder та СКБД MS Access, що відповідає сучасним тенденціям розвитку технологій розробки системного програмного забезпечення.

Випробування програмного продукту продемонстрували його працездатність та відповідність заданим функціональним, кваліфікаційним та експлуатаційним вимогам.

Перелік використаної літератури та інформаційних ресурсів

  1. Архангельський А.Я. Программирование в C++Builder. – M. БИНОМ, 2012, 1162с.

  2. Герберт Шилд. С++ для начинающих. Москва-2007, с.485 с.

  3. Глинський Я.М та ін. С++ і С++Builder. Навчальний посібник. - Львів, 2004. Х.:Фоліо, 2004, 189с..

  4. Кораблев В.С. С и С++. - К.: BHV, 2002, 251с..

  5. Сопронюк С.М. Системне програмування: Методичні рекомендації та завдання для лабораторних робіт. – Чернівці: ЧНУ, 2003, 142с.

  6. Стенли Б. Липпман. Основы программирования на С++. – М.-СПб.-К. Вильямс, 2002, 631с.

  7. http://www.e-reading.org.ua/bookreader.php/141823/Hart_- _Sistemnoe_programmirovanie_v_srede_Windows.html

  8. http://www.helloworld.ru/texts/comp/lang/c/c4/index.htm

  9. http://lib.rus.ec/b/183565

Додаток Програмний код

//Тематичні тести - головний модуль

#include <vcl.h>

#pragma hdrstop

#include "UnitMain.h"

#include "UnitTools.h"

#include "UnitAvtor.h"

#include "UnitReestr.h"

#include "UnitTest.h"

#include "UnitInfo.h"

#include "UnitData.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormMain *FormMain;

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

__fastcall TFormMain::TFormMain(TComponent* Owner)

: TForm(Owner)

{

}

//Контроль коректності тестів

void __fastcall TFormMain::InterfaceControl()

{

//1-й рівень - кількість тестів по кожній темі повинна бути >4;

Memo->Lines->Clear();

FormData->TabTM->First();

while (!FormData->TabTM->Eof)

{

if (FormData->TabTS->RecordCount<4)

Memo->Lines->Add("Тема: "+FormData->TabTMDSDesigner->AsString+" тестів: "+IntToStr(FormData->TabTS->RecordCount));

FormData->TabTM->Next();

}

//2-й рівень - кількість варіантів відповідей для кожного тесту повинна дорівнювати 4

FormData->TabTM->First();

while (!FormData->TabTM->Eof)

{

FormData->TabTS->First();

while (!FormData->TabTS->Eof)

{

if (FormData->TabVD->RecordCount!=4)

{

Memo->Lines->Add("Тема: "+FormData->TabTMDSDesigner->AsString);

Memo->Lines->Add(" Тест: "+FormData->TabTSDSDesigner->AsString);

Memo->Lines->Add(" Кількість варіантів відповідей: "+IntToStr(FormData->TabVD->RecordCount));

}

//3-й рівень - кожний тест повинен мати хоча б один варіант вірної відповіді

FormData->TabVD->First();

int k=0;

while (!FormData->TabVD->Eof)

{

if (FormData->TabVD_4->AsBoolean)

{

k++;

break;

}

FormData->TabVD->Next();

}

if (k==0)

{

Memo->Lines->Add("Тема: "+FormData->TabTMDSDesigner->AsString);

Memo->Lines->Add(" Тест: "+FormData->TabTSDSDesigner->AsString);

Memo->Lines->Add(" немає жодного вірного варіанту відповіді ");

}

FormData->TabTS->Next();

}

FormData->TabTM->Next();

}

TBTools->Visible=Memo->Lines->Count==0;

if (!TBTools->Visible)

FormMain->StatusBar1->Panels->Items[1]->Text="Помилки в структурі пакету";

}

//Відкриття вікна "Авторизація доступу"

void __fastcall TFormMain::TBavtClick(TObject *Sender)

{

FormAvtor->ShowModal();

if (FormMain->TBTools->Visible) InterfaceControl();

}

//Відкриття вікна "Налаштування"

void __fastcall TFormMain::TBToolsClick(TObject *Sender)

{

FormTools->ShowModal();

}

//Відкриття вікна "Реєстрація"

void __fastcall TFormMain::TBReestClick(TObject *Sender)

{

FormReestr->ShowModal();

}

//Відкриття вікна "Тестування"

void __fastcall TFormMain::TBtestClick(TObject *Sender)

{

FormTest->ShowModal();

}

//Відкриття вікна "Інформація"

void __fastcall TFormMain::TBinfoClick(TObject *Sender)

{

FormInfo->ShowModal();

}

//Завершення роботи проекту

void __fastcall TFormMain::TBexitClick(TObject *Sender)

{

Close();

}

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

//Тематичні тести - модуль авторизації

#include <vcl.h>

#include <fstream.h>

#pragma hdrstop

#include "UnitAvtor.h"

#include "UnitData.h"

#include "UnitMain.h"

#include "UnitInfo.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormAvtor *FormAvtor;

AnsiString L="", P="";

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

__fastcall TFormAvtor::TFormAvtor(TComponent* Owner): TForm(Owner)

{

}

//Встановлення параметрів інтерфейсу головного вікна "Авторизація доступу"

void __fastcall TFormAvtor::FormActivate(TObject *Sender)

{

SBopen->Enabled=false;

//Завантаження пароля та логіна з файлу

if (FileExists("Person.txt"))

{

char par[6], log[6];

ifstream f; f.open("Person.txt",0);

f.getline(log,7);

f.getline(par,7);

f.close();

//Розшифрування логіна

L=log;

AnsiString LL=L.SubString(4,3);

L.Delete(4,3);

L=LL+L;

//Розшифрування пароля

P=par;

AnsiString PP=P.SubString(4,3);

PP==P.SubString(4,3);

P.Delete(4,3);

P=PP+P;

}

else

{

SBopen->Enabled=true;

ShowMessage("Файл параметрів доступу відсутній. Доступ вільний");

}

//Login->OnChange(Sender);

}

//Керування доступом до кнопки підтвердження авторизації

void __fastcall TFormAvtor::LoginChange(TObject *Sender)

{

SBok->Enabled=(Login->Text!="") && (Password->Text!="");

SBclear->Enabled=(Login->Text!="") || (Password->Text!="");

}

//Підтвердження прав доступу

void __fastcall TFormAvtor::SBokClick(TObject *Sender)

{

SBopen->Enabled=(L==Login->Text) && (P==Password->Text);

if (!SBopen->Enabled)

{

ShowMessage("Доступ скасовано");

FormMain->StatusBar1->Panels->Items[0]->Text="Доступ скасовано";

}

}

//Очищення полів логіна та пароля

void __fastcall TFormAvtor::SBclearClick(TObject *Sender)

{

Login->Clear();

Password->Clear();

}

//Завантаження пакету тестів

void __fastcall TFormAvtor::SBopenClick(TObject *Sender)

{

if (OpenDialog1->Execute())

{

FormData->ConnectBD(OpenDialog1->FileName);

if (FormData->TabTM->Active)

{

if (FormData->TabTM->RecordCount==0)

{

ShowMessage("Пакет тестів порожній");

FormMain->StatusBar1->Panels->Items[0]->Text="Пакет тестів порожній";

}

else

{

FormMain->TBTools->Visible=true;

FormMain->StatusBar1->Panels->Items[0]->Text="Доступ надано";

//Завантаження списку попередніх результатів тестування

if (FileExists("Info.txt"))

FormInfo->ListRez->Items->LoadFromFile("Info.txt");

FormMain->TBinfo->Visible=true;

}

}

else

{

ShowMessage("Пакет тестів має некоректну структуру");

FormMain->StatusBar1->Panels->Items[0]->Text="Доступ скасовано";

}

}

Login->Clear();

Password->Clear();

Close();

}

//Закриття вікна "Авторизація доступу"

void __fastcall TFormAvtor::SBexitClick(TObject *Sender)

{

Login->Clear();

Password->Clear();

Close();

}

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

//Тематичні тести - модуль налаштуваня тестів

#include <vcl.h>

#pragma hdrstop

#include "UnitTools.h"

#include "UnitData.h"

#include "UnitMain.h"

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

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma resource "*.dfm"

TFormTools *FormTools;

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

__fastcall TFormTools::TFormTools(TComponent* Owner): TForm(Owner)

{

}

//Встановлення параметрів інтерфейсу вікна "Налаштування" під час його відкриття

void __fastcall TFormTools::FormActivate(TObject *Sender)

{

int k, m=-1, c=100;

ListTem->Items->Clear();

FormData->TabTM->First();

while (!FormData->TabTM->Eof)

{

m++;

int k=FormData->TabTS->RecordCount;

if (k<c) c=k;

ListTem->Items->Add(FormData->TabTMDSDesigner->AsString+" тестів: "+IntToStr(k));

ListTem->State[m]=true;

FormData->TabTM->Next();

}

StatusBar1->Panels->Items[1]->Text=IntToStr(FormData->TabTM->RecordCount);

CSpinEdit1->MaxValue=c;

CSpinEdit1->Value=c;

}

//Заборона введення кількості тестів та тривалості тестування з клавіатури

void __fastcall TFormTools::CSpinEdit1KeyPress(TObject *Sender, char &Key)

{

switch (Key)

{

case '0':;

case '1':;

case '2':;

case '3':;

case '4':;

case '5':;

case '6':;

case '7':;

case '8':;

case '9':;

default: Key=0;

}

}

//Заборона видалення кількості тестів

void __fastcall TFormTools::CSpinEdit1Change(TObject *Sender)

{

if (CSpinEdit1->Text=="") CSpinEdit1->Value=CSpinEdit1->MinValue;

}

//Заборона видалення тривалості тестування

void __fastcall TFormTools::CSpinEdit2Change(TObject *Sender)

{

if (CSpinEdit2->Text=="") CSpinEdit1->Value=CSpinEdit2->MinValue;

}

//Підтвердження налаштувань

void __fastcall TFormTools::SBokClick(TObject *Sender)

{

//Обчислення кількості та позначення обраних тем

int k=0;

FormData->TabTM->First();

while (!FormData->TabTM->Eof)

{

FormData->TabTM->Edit();

FormData->TabTMDSDesigner2->AsString="-";

FormData->TabTM->Post();

FormData->TabTM->Next();

}

for (int i=0; i<ListTem->Count; i++)

if (ListTem->State[i])

{

k++;

FormData->TabTM->RecNo=i+1;

FormData->TabTM->Edit();

FormData->TabTMDSDesigner2->AsString="+";

FormData->TabTM->Post();

}

if (k==0) ShowMessage("Вибір тем не здійснено");

else

{

k*=CSpinEdit1->Value;

FormMain->StatusBar1->Panels->Items[1]->Text="Кількість тестів: "+IntToStr(k);

FormMain->StatusBar1->Panels->Items[2]->Text="Тривалість тестування: "+CSpinEdit2->Text+" хвилин";

FormMain->TBReest->Visible=true;

Close();

}

}

//Скасування налаштувань

void __fastcall TFormTools::SBclearClick(TObject *Sender)

{

FormMain->StatusBar1->Panels->Items[1]->Text="Налаштування скасовані";

Close();

}

//Вибрати всі теми

void __fastcall TFormTools::SBSelectAllClick(TObject *Sender)

{

for (int i=0; i<ListTem->Count; i++) ListTem->State[i]=true ;

}

//Скасувати вибір будь-яких тем

void __fastcall TFormTools::SBSelectCancelClick(TObject *Sender)

{

for (int i=0; i<ListTem->Count; i++) ListTem->State[i]=false;

CSpinEdit1->Value=1;

}

//Обчислення мінімальної кількості тестів серед обраних тем під час зміни їх вибору

void __fastcall TFormTools::ListTemClickCheck(TObject *Sender)

{

int k=0, m=-1, c=100;

FormData->TabTM->First();

while (!FormData->TabTM->Eof)

{

m++;

if (ListTem->State[m])

{

k=FormData->TabTS->RecordCount;

if (k<c) c=k;

}

FormData->TabTM->Next();

}

if (k==0) CSpinEdit1->Value=1;

else {CSpinEdit1->Value=k; CSpinEdit1->MaxValue=k;}

}

//Тематичні тести - модуль реєстрації

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

#include <vcl.h>

#pragma hdrstop

#include "UnitReestr.h"

#include "UnitMain.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormReestr *FormReestr;

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

__fastcall TFormReestr::TFormReestr(TComponent* Owner) : TForm(Owner)

{

}

//Встановлення параметрів інтерфейсу вікна "Реєстрація" під час його відкриття

void __fastcall TFormReestr::FormActivate(TObject *Sender)

{

priz->Clear();

grypa->Clear();

prizChange(Sender);

}

//Керування доступом до кнопки "Зареструвати" вікна "Реєстрація"

void __fastcall TFormReestr::prizChange(TObject *Sender)

{

SBok->Enabled=(priz->Text!="") && (grypa->Text!="");

}

//Рєстрація студента

void __fastcall TFormReestr::SBokClick(TObject *Sender)

{

FormMain->StatusBar1->Panels->Items[3]->Text=priz->Text+" група "+grypa->Text;

FormMain->TBtest->Visible=true;

Close();

}

//Скасування реєстрації

void __fastcall TFormReestr::SpeedButton1Click(TObject *Sender)

{

FormMain->StatusBar1->Panels->Items[3]->Text="Реєстрацію скасовано";

Close();

}

//Тематичні тести - модуль тестування

//Тематичні тести - модуль тестування

#include <vcl.h>

#pragma hdrstop

#include "UnitTest.h"

#include "UnitData.h"

#include "UnitReestr.h"

#include "UnitTools.h"

#include "UnitMain.h"

#include "UnitInfo.h"

#include "UnitAvtor.h"

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

#pragma package(smart_init)

#pragma link "CGAUGES"

#pragma resource "*.dfm"

TFormTest *FormTest;

AnsiString num; //рядок порядкових номерів відображення варіантів відповідей

int tt,tm; //тривалість та поточний час тестування

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

__fastcall TFormTest::TFormTest(TComponent* Owner): TForm(Owner)

{

}

//Завантаження теста та варіантів відповідей

void __fastcall TFormTest::LoadTest()

{

//Завантаження теста

GroupZaput->Caption=" Тест "+IntToStr(FormData->TabTS->RecNo);

Test->Caption=FormData->TabTSDSDesigner->AsString;

//Визначення порядку відображення варіантів відповідей

AnsiString numbeg="1234";

num="";

int n;

Randomize();

n=random(3)+1; num=num+numbeg[n]; //№ 1-го тесту

numbeg.Delete(n,1);

n=random(2)+1; num=num+numbeg[n]; //№ 2-го тесту

numbeg.Delete(n,1);

n=random(1)+1; num=num+numbeg[n]; //№ 3-го тесту

numbeg.Delete(n,1);

num=num+numbeg[1]; //№ 4-го тесту

//Завантаження варіантів відповідей у визначеній посліовності

FormData->TabVD->RecNo=StrToInt(num[1]);

V1->Caption=FormData->TabVDDSDesigner->AsString;

if (FormData->TabVD_3->AsBoolean) V1->Color=0x00408080;

else V1->Color=0x005A5A2E;

FormData->TabVD->RecNo=StrToInt(num[2]);

V2->Caption=FormData->TabVDDSDesigner->AsString;

if (FormData->TabVD_3->AsBoolean) V2->Color=0x00408080;

else V2->Color=0x005A5A2E;

FormData->TabVD->RecNo=StrToInt(num[3]);

V3->Caption=FormData->TabVDDSDesigner->AsString;

if (FormData->TabVD_3->AsBoolean) V3->Color=0x00408080;

else V3->Color=0x005A5A2E;

FormData->TabVD->RecNo=StrToInt(num[4]);

V4->Caption=FormData->TabVDDSDesigner->AsString;

if (FormData->TabVD_3->AsBoolean) V4->Color=0x00408080;

else V4->Color=0x005A5A2E;

}

//Підсумки тестування

void __fastcall TFormTest::RezTest()

{

int n=FormData->TabTS->RecordCount;

int k=0;

FormData->TabTS->First();

while (!FormData->TabTS->Eof)

{

FormData->TabVD->First();

bool y=true;

while (!FormData->TabVD->Eof)

{

if (FormData->TabVD_3->AsBoolean!=FormData->TabVD_4->AsBoolean)

{y=false; break;}

else FormData->TabVD->Next();

}

if (y) ++k;

FormData->TabTS->Next();

}

k=k*100/n;

tema->Caption="Ваш результат - "+IntToStr(k)+"%";

Timer->Enabled=false;

Navigator->Visible=false;

Panel4->Visible=false;

Panel3->Visible=false;

Start->Visible=false;

Gauge->Visible=false;

for (int i=0; i<=4; i++) StatusBar1->Panels->Items[i]->Text="";

FormMain->StatusBar1->Panels->Items[4]->Text=tema->Caption;

FormInfo->ListRez->Items->Add(FormMain->StatusBar1->Panels->Items[3]->Text+" - "+IntToStr(k)+"%");

FormData->TabTS->Filter="";

FormData->TabTS->Filtered=false;

FormData->TabTS->Active=false;

FormData->TabTS->MasterSource=FormData->SourceTM;

FormData->TabTS->MasterFields="Код_теми";

FormData->TabTS->Active=true;

FormMain->TBtest->Visible=false;

}

//Очищення бази даних від попередніх результатів тестування

void __fastcall TFormTest::ClearTest()

{

FormData->TabTM->First();

while (!FormData->TabTM->Eof)

{

FormData->TabTS->First();

while (!FormData->TabTS->Eof)

{

FormData->TabTS->Edit();

FormData->TabTSDSDesigner2->AsString="-";

FormData->TabTS->Post();

FormData->TabTS->Next();

FormData->TabVD->First();

while (!FormData->TabVD->Eof)

{

FormData->TabVD->Edit();

FormData->TabVD_3->AsBoolean=false;

FormData->TabVD->Post();

FormData->TabVD->Next();

}

}

FormData->TabTM->Next();

}

}

//Випадковий вибір тесту

int __fastcall TFormTest::SelTest()

{

randomize();

int x=random(List->Count-1);

int y=StrToInt(List->Items->Strings[x]);

List->Items->Delete(x);

return y;

}

//Встановлення параметрів інтерфейсу головного вікна "Тестування"

void __fastcall TFormTest::FormActivate(TObject *Sender)

{

FormMain->StatusBar1->Panels->Items[4]->Text="";

tema->Caption="";

StatusBar1->Panels->Items[0]->Text=FormReestr->priz->Text;

StatusBar1->Panels->Items[1]->Text="Група "+FormReestr->grypa->Text;

StatusBar1->Panels->Items[2]->Text=FormMain->StatusBar1->Panels->Items[1]->Text;

StatusBar1->Panels->Items[3]->Text="Надано "+FormTools->CSpinEdit2->Text+" хв";

Navigator->Visible=false;

Panel4->Visible=false;

Panel3->Visible=false;

Start->Caption="Розпочати тестування";

//Очищення тестів після попередніх використань

ClearTest();

//Вибір тестів

FormData->TabTM->First();

while (!FormData->TabTM->Eof)

{

if (FormData->TabTMDSDesigner2->AsString=="+")

{

List->Items->Clear();

for (int i=1; i<=FormData->TabTS->RecordCount; i++)

List->Items->Add(IntToStr(i)); //Список номерів тестів

for (int i=1; i<=FormTools->CSpinEdit1->Value; i++)

{

int k=SelTest();

FormData->TabTS->RecNo=k;

FormData->TabTS->Edit();

FormData->TabTSDSDesigner2->AsString="+";

FormData->TabTS->Post();

}

}

FormData->TabTM->Next();

}

FormData->TabTS->Active=false;

FormData->TabTS->MasterFields="";

FormData->TabTS->MasterSource=NULL;

FormData->TabTS->Active=true;

FormData->TabTS->Filtered=false;

FormData->TabTS->Filtered=true;

FormData->TabTS->Filter="Плюс='+'";

Start->Visible=true;

}

//Початок тестування

void __fastcall TFormTest::StartClick(TObject *Sender)

{

if (Start->Caption=="Розпочати тестування")

{

Start->Caption="Завершити тестування";

Panel4->Visible=true;

Panel3->Visible=true;

FormData->TabTS->First();

Gauge->Progress=0;

Gauge->Visible=true;

tt=FormTools->CSpinEdit2->Value*60;

tm = 0;

Timer->Enabled=true;

Navigator->Visible=true;

LoadTest();

}

else

{

//Рузультат

RezTest();

ShowMessage("Тестування завершене достроково!");

}

}

//Вибір правильних відповідей

void __fastcall TFormTest::V1Click(TObject *Sender)

{

TLabel* V1 = dynamic_cast<TLabel*>(Sender);

if (V1)

{

//Зміна кольору відповіді

if (V1->Color==0x005A5A2E) V1->Color=0x00408080;

else V1->Color=0x005A5A2E;

AnsiString nm=V1->Name;

nm.Delete(1,1); //виділення № з імені компонентів: V<№>

int n=StrToInt(nm); //№ розташування компонента (згори вниз)

int k=StrToInt(num[n]); //№ обраної відповіді

//Запис наданої відповіді в БД

FormData->TabVD->RecNo=k;

FormData->TabVD->Edit();

FormData->TabVD_3->AsBoolean=V1->Color==0x00408080;

FormData->TabVD->Post();

}

}

//Відлік та контроль часу тестування

void __fastcall TFormTest::TimerTimer(TObject *Sender)

{

++tm;

if (tm<=tt) //Якщо термін тестування ще не завершився

{

int g=tm*100/tt;

Gauge->Progress=g;

int xv=(tt-tm)/60;

int sc=(tt-tm)%60;

StatusBar1->Panels->Items[4]->Text="Залишилось "+IntToStr(xv)+" хв "+IntToStr(sc)+" c ";

}

else //Якщо термін тестування завершився

{

//Результат

RezTest();

ShowMessage("Час вийшов! Тестування завершене");

}

}

//Завантаження іншого тесту після натискання кнопки навігатора

void __fastcall TFormTest::NavigatorClick(TObject *Sender, TNavigateBtn Button)

{

LoadTest();

}

//Збереження списку результатів у файлі при закритті вікна "Тестування"

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

{

FormInfo-> ListRez->Items->SaveToFile("Info.txt");

}

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

//Тематичні тести - модуль відображення списку результатів тестування

#include <vcl.h>

#pragma hdrstop

#include "UnitInfo.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormInfo *FormInfo;

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

__fastcall TFormInfo::TFormInfo(TComponent* Owner)

: TForm(Owner)

{

}

//Очищення списку результатів

void __fastcall TFormInfo::SBclearClick(TObject *Sender)

{

ListRez->Items->Clear();

}

//Закриття вікна "Реєстр результатів". Запис списку в файл

void __fastcall TFormInfo::SBCloseClick(TObject *Sender)

{

ListRez->Items->SaveToFile("Info.txt");

Close();

}

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

//Тематичні тести - модуль зв"язку з БД

#include <vcl.h>

#pragma hdrstop

#include "UnitData.h"

#include "UnitTools.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TFormData *FormData;

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

__fastcall TFormData::TFormData(TComponent* Owner) : TDataModule(Owner)

{

}

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

void __fastcall TFormData::ConnectBD(AnsiString filename)

{

try

{

Connect->Connected=false;

Connect->ConnectionString=filename;

Connect->Connected=true;

TabTM->Active=true;

TabTM->TableName="Теми";

TabTS->Active=true;

TabTS->TableName="Тести";

TabVD->Active=true;

TabVD->TableName="Відповіді";

}

catch (...)

{

ShowMessage("База даних відсутня або пошкоджена");

}

}

//Відображення на панелі стану вікна "Налаштування" кількості тестів по темі під час навігації по таблиці тем

void __fastcall TFormData::TabTMAfterScroll(TDataSet *DataSet)

{

if (FormTools->Visible)

FormTools->StatusBar1->Panels->Items[1]->Text=IntToStr(TabTS->RecordCount);

}