Ii. Berilgan testlardan test variantlarini shakllantiruvchi dastur yaratish


Test variantini formalari va uning modullari



Download 2,69 Mb.
bet5/7
Sana18.02.2022
Hajmi2,69 Mb.
#455343
1   2   3   4   5   6   7
Bog'liq
2-laboratoriya IOM

2.3. Test variantini formalari va uning modullari.


Biz tayyorlagan dasturimizda bitta forma joylashtirilgan bo`lib, formaning ko`rinishi (2.3.1-chizma) da ko`rsatilgan.

2.3.1-chizma. Dasturning ko`rinish oynasi.
Dasturimizda 1 ta formadan foydalangan bo`lib ko`p formali matn yozishni oldini oldik. Lekin ko`p oynali formalar o`rniga PageControl komponentasidan foydaladik. Bu PageControl komponentasiga 6 ta bo`lim yaratdik va har bir bo`lim bitta page bo`lib ular quyidagilardan iborat:

  1. Test fayllari

  2. Tasdiqlash

  3. Yordam

  4. Talaba uchun testni generatsiyalash

  5. Mualliflar

  6. Testni shakllantirish

Test fayllari deb nomlangan Pageda, quyidagi komponentlarni joylashtirdik. Label, SpeenEdit, SpeedButton, ScrollBox va Edit komponentalar pagega bor (2.3.2-chizma). Bularning vazifasi quyidagidan iboratdir.

2.3.2-chizma. Dasturning test fayllari qismi.
Formadagi va ScrollBox dagi Labellarda izoh sifatida foydalanilgan. Formadagi SpeenEdit komponenti- testdagi fayllarni soni, Variantdagi savollar sonini olish uchun ishlatilgan. Natural son qabul qila oladi. Test fayllaro soni 10 tagacha olsak yetarli deb o`yladim.

2.3.3-chizma. Test fayllari bo`limi 10 ta fayl tanlashning ko`rinishi.
SpeenEdit komponentasining qiymati orqali test fayllar sonini boshqariladi va fayllarni sonini kamaytirish imkoniyati mavjuddir. Buning uchun quyidagi change procedura hodisasi yoziladi:

procedure TForm1.TestFaylCountChange(Sender: TObject);
var
n,i:integer;
begin
n:=TestFaylCount.Value;
For i:=1 to 10 do
begin

if i>n then


begin
(FindComponent('F'+IntToStr(i)) As TEdit).Visible:=False;
(FindComponent('B'+IntToStr(i)) As TSpeedButton).Visible:=False;
(FindComponent('UT'+IntToStr(i)) As TEdit).Visible:=False;
(FindComponent('T'+IntToStr(i)) As TSpinEdit).Visible:=False;
(FindComponent('L'+IntToStr(i)) As TLabel).Visible:=False;
(FindComponent('F'+IntToStr(i)) As TEdit).Text:='';
end
else
begin
(FindComponent('F'+IntToStr(i)) As TEdit).Visible:=True;
(FindComponent('B'+IntToStr(i)) As TSpeedButton).Visible:=True;
(FindComponent('UT'+IntToStr(i)) As TEdit).Visible:=True;
(FindComponent('T'+IntToStr(i)) As TSpinEdit).Visible:=True;
(FindComponent('L'+IntToStr(i)) As TLabel).Visible:=True;
end;
end;
end;

ScrollBoxda mos ravishda faylning joylashgan manzilini qabul qilish uchun Edit komponentasiga olishimiz uchun SpeedButton komponetasining OnClick hodisasidan foydalanganmiz, ammo faylni tanlashimiz uchun esa OpenDialog komponentasi kerak bo`ladi. Dastur matni quyidagicha:



procedure TForm1.B1Click(Sender: TObject);
var
B:TSpeedButton;
F:TEdit;
Num,name1,s:String;
begin
if (Sender is TSpeedButton) then B:=(Sender as TSpeedButton);
Name1:=B.Name;
Num:=Copy( Name1, 2, (Length(Name1)-1) );
F:=(FindComponent('F'+Num) As TEdit);
if OD.Execute then
begin s:=F.Text;
F.Text:=OD.FileName;
if s=F.Text then
F1Change(F);
end;
end;

Fayl tanlangandan keyin esa, U fayl bizning talabga javob berishini tekshirishimiz zarur bo`ladi. Bu ishni qachon bajarishimiz kerak deb o`ylaysiz? Albatta fayl manzili aniq bo`lgandan keyin. Bu hodisa fayl manzili yozilgandan Edit komponentasi Qiymati o`zgargan paytda bajarilishi kerak va u quyidagicha:



procedure TForm1.F1Change(Sender: TObject);
var L:TLabel;
F,UT:TEdit;
Num,name1:String;
W,D,Table:Variant;
i,n,r,c:integer;
ch:boolean;
begin
if (Sender is TEdit) then F:=(Sender as TEdit);
Name1:=F.Name;
Num:=Copy( Name1, 2, (Length(Name1)-1) );
UT:=(FindComponent('UT'+Num) As TEdit);
L:=(FindComponent('L'+Num) As TLabel);
if F.Text<>'' then
begin
if FileExists(F.Text) then
begin
// fayldagi wordda jadvallar to`griligini aniqlash
try
try
ch:=false;
W:=CreateOleObject('Word.Application');
//ShowMessage(F.Text);
W.Documents.Open(FileName:=F.Text,ReadOnly:=true);
//W.Visible:=true;
n:=W.ActiveDocument.Tables.Count;
//ShowMessage(IntToStr(n));
if n<=0 then
begin UT.Text:='0'; L.Caption:=''; end
else
begin
for i:=1 to n do
begin
r:=W.ActiveDocument.Tables.item(i).Rows.Count;
c:=W.ActiveDocument.Tables.item(i).Columns.Count;
if not((r=5) and (c=1)) then
begin
ch := true;
break;
end;
end;
if ch then
begin
L.Caption:=IntToStr(i)+' - jadvalda xatolik';
UT.Text:='';
end
else
begin
L.Caption:='OK';
UT.Text:=IntToStr(n);
end;
end;

except
L.Caption:='Fayl bilan ishlashga xatolik';


UT.Text:='';
end;
finally
W.Quit;
W:=UnAssigned;
end;

end
else


begin
UT.Text:='';
L.Caption:='Fayl mavjud emas';
end;
end
else
begin
L.Caption:='';
UT.Text:='';
end;
end;

Test faylidagi test jadvallari tekshirilgandan so`ng umumiy testlar soni aniqlanadi va Editga yoziladi. Bundan so`ng siz umumiy testlar sonidan ko`p qiymat olsihga ruxsat bermasligingiz kerak bo`ladi. Buning uchun quyidagi kod berilishi kerak



procedure TForm1.UT1Change(Sender: TObject);
var L:TLabel;
UT:TEdit;
T:TSpinEdit;
Num,name1:String;
begin

if (Sender is TEdit) then UT:=(Sender as TEdit);


Name1:=UT.Name;
Num:=Copy( Name1, 3, (Length(Name1)-2) );
if (Num<>'11') then
T:=(FindComponent('T'+Num) As TSpinEdit);
L:=(FindComponent('L'+Num) As TLabel);
//showmessage('L'+Num);
if UT.Text<>'' then
begin
//
end
else
begin
if (Num<>'11') then
T.Value:=0;
L.Caption:='';
end;
end;

Bunda testlar soni aniq bo`ldi va har biriga nechta testligi ko`rsatildi. Buning natijasi Variantdagi testlar soniga bo`rib tushishi kerak. Bu quyidagicha

procedure TForm1.T1Change(Sender: TObject);
var T:TSpinEdit;
UT:TEdit;
Num,name1:String;
i,s:integer;
begin
if (Sender is TSpinEdit) then T:=(Sender as TSpinEdit);
Name1:=T.Name;
Num:=Copy( Name1, 2, (Length(Name1)-1) );
UT:=(FindComponent('UT'+Num) As TEdit);
if (UT.Text<>'') then
begin
if T.Value>StrToInt(UT.Text) then
T.Value:=0;
if T.Value<0 then T.Value:=0;
end
else
begin
T.Value:=0;
end;
s:=0;
For i:=1 to 10 do
s:=s+(FindComponent('T'+IntToStr(i)) As TSpinEdit).Value;
TestCount.Value:=s;
End;

Bu jarayonni 10 yoki 11 marta yozmaslik uchu bizlar dastur matnini umulashtirganmiz sababi qaysi obyekt kelishi oldindan aniqmasligidadir. Bundan so`ng esa Qolgan komponentalarning xuddi shu hodisasiga joriy hodisani uladik.
Agar biz testlar faylini tanlaganimizdan so`ng, u biz qo`ygan fayl tayyorlash talabiga to`g`ri kelsa, “OK” degan qiymat Label komponentasiga namoyish etiladi. Aks holda, qaysi tartib nomeridagi fayl bo`lsa, o`sha faylning tartib raqami bilan shu jadvalda xatolik mavjud degan yozuv “Fayl to`g`riligining tasdig`i” sohasida ko`rinadi. Masalan: birinchi faylga talabga mos tarzdagi faylni tanlasak, bizga “OK” yozuvi va ikkinchi faylga noto`g`ri faylni joylashtirsak, “n-jadvalda xatolik ” yozuvi Labelda ko`rinadi (2.3.4-chizma).

2.3.4-chizma. Test fayllariga misol dasturi.
Variantdagi savollar soniga umumiy savollardan nechtasi tanlangan bo`lsa, shu qiymatlarning yig`indisi natija sifatida kelib tushadi. 2.3.3-rasmda ko`ringanidek, “umumiy savollar soni = 11”, “nechta test = 0” va “Variantdagi savollar soni =0” . Agar “nechta test =4” deb bersak, avtomatik tarzda “Variantdagi savollar soni = 4” bo`ladi (2.3.5-chizma).

2.3.5-chizma. Test fayliga test sonini aniqlash.
Agar dasturda nechta fayl tanlangan bo`lsa ularni ishlatish majburiydir. Ya`ni test fayli tanlangandan keyin, shu faylning umumiy testlar sonidan nechta test deb nomlanuvchi sohasining qiymati nolga teng bo`lishi mumkin emas .

Download 2,69 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©www.hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish