İnternet Üzerinden Sınav Yapabilen Applet Uygulaması
Bir dizi ile soruların belirlendiği ve dizideki elemanları sıra ile kullanıcı ekranına getirip, cevaba göre dizide belirtilen doğru cevapla kıyaslayıp, yine dizide belirtilen puanı kullanıcıya veren uygulama örneği
Applet class dosyası
import java.applet.Applet;
import java.awt.Button;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
//import java.awt.Graphics;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class NewApplet extends Applet implements ActionListener {
Label Soru = new Label();
Label PuanDurumu = new Label();
//Checkboxlar Radio button olsunlar diye
CheckboxGroup Cevaplar = new CheckboxGroup();
Checkbox Acevap = new Checkbox("", Cevaplar, false);
Checkbox Bcevap = new Checkbox("", Cevaplar, false);
Checkbox Ccevap = new Checkbox("", Cevaplar, false);
Checkbox Dcevap = new Checkbox("", Cevaplar, false);
Checkbox Ecevap = new Checkbox("", Cevaplar, false);
Button Tamam = new Button("Tamam");
String Sorular[][] = {
{"4+2 Kaç eder2", "5", "6", "7", "8", "9", "2", "5"},
{"Türkiyenin baş kenti neresidir?", "Ankara", "İstanbul", "İzmir", "Bursa", "Edirne", "1", "10"}
};
int SuankiSoru = 0;
int Puan = 0;
int DogruSayisi=0;
public void init() {
setLayout(null);
PuanDurumu.setLocation(250, 5);
PuanDurumu.setSize(200, 20);
add(PuanDurumu);
Soru.setLocation(10, 10);
Soru.setSize(200, 20);
add(Soru);
Acevap.setLocation(10, 40);
Acevap.setSize(200, 20);
add(Acevap);
Bcevap.setLocation(10, 60);
Bcevap.setSize(200, 20);
add(Bcevap);
Ccevap.setLocation(10, 80);
Ccevap.setSize(200, 20);
add(Ccevap);
Dcevap.setLocation(10, 100);
Dcevap.setSize(200, 20);
add(Dcevap);
Ecevap.setLocation(10, 120);
Ecevap.setSize(200, 20);
add(Ecevap);
SorulariYaz(SuankiSoru);
Tamam.setLocation(10, 140);
Tamam.setSize(60, 20);
add(Tamam);
Tamam.addActionListener(this);
}
public void actionPerformed(ActionEvent Olay) {
if (SuankiSoru <Sorular.length) {
CevabiKontrolEt(SuankiSoru);
}
SuankiSoru++;
if (SuankiSoru < Sorular.length) {
SorulariYaz(SuankiSoru);
} else {
SinaviBitir();
}
}
public void SorulariYaz(int SoruNo) {
Cevaplar.setSelectedCheckbox(null);
Soru.setText(Sorular[SoruNo][0]);
Acevap.setLabel(Sorular[SoruNo][1]);
Bcevap.setLabel(Sorular[SoruNo][2]);
Ccevap.setLabel(Sorular[SoruNo][3]);
Dcevap.setLabel(Sorular[SoruNo][4]);
Ecevap.setLabel(Sorular[SoruNo][5]);
}
public void CevabiKontrolEt(int SoruNosu) {
int VerilenCevapIndex = 0;
if (Acevap.getState()) {
VerilenCevapIndex = 1;
} else if (Bcevap.getState()) {
VerilenCevapIndex = 2;
} else if (Ccevap.getState()) {
VerilenCevapIndex = 3;
} else if (Dcevap.getState()) {
VerilenCevapIndex = 4;
} else if (Ecevap.getState()) {
VerilenCevapIndex = 5;
}
if (Integer.valueOf(Sorular[SoruNosu][6]) == VerilenCevapIndex) {
//String tip integera dönüştürülüyor
Puan += Integer.valueOf(Sorular[SoruNosu][7]);
DogruSayisi++;
//Integer deger stringe donusuyor
PuanDurumu.setText(Integer.toString(Puan));
}
}
public void SinaviBitir() {
//Var olan nesneleri gizliyoruz
Soru.setVisible(false);
Acevap.setVisible(false);
Bcevap.setVisible(false);
Ccevap.setVisible(false);
Dcevap.setVisible(false);
Ecevap.setVisible(false);
Tamam.setVisible(false);
Label Sonuc=new Label(Sorular.length + " soru içerisinden "+DogruSayisi+" doğru cevap ile "+ Puan+ " puan aldınız.");
Sonuc.setLocation(10, 30);
Sonuc.setSize(400, 20);
add(Sonuc);
}
}
Kodlarla İlgili Açıklamalar :
Filiz EMİR'in isteği ile aşağıdaki açıklamaları yapma gereği duyduk.
if (Acevap.getState()) {
VerilenCevapIndex = 1;
} else if (Bcevap.getState()) {
VerilenCevapIndex = 2;
} else if (Ccevap.getState()) {
VerilenCevapIndex = 3;
} else if (Dcevap.getState()) {
VerilenCevapIndex = 4;
} else if (Ecevap.getState()) {
VerilenCevapIndex = 5;
}
Yukardaki kodda kullanıcının şeçtiği Checkbox'a göre bir index ataması yapıyoruz. Bu atama 1 den 5'e kadar VerilenCevapIndex değişkeni içerisine yapılıyor.
{"4+2 Kaç eder2", "5", "6", "7", "8", "9", "2", "5"},
{"Türkiyenin baş kenti neresidir?", "Ankara", "İstanbul", "İzmir", "Bursa", "Edirne", "1", "10"}
};
Yukardaki Sorular dizisisinde 0. Eleman soruyu 1 den 5'e kadar olan elemanlar cevap şıklarını, 6. değer doğru cevabın olduğu dizi index numarasını, 7. değerde puanı tutuyor.
Yani Sorular dizisi bellekte şu şekilde duruyor
Sorular[0][1] = "5"
Sorular[0][2] = "6"
Sorular[0][3] = "7"
Sorular[0][4] = "8"
Sorular[0][5] = "9"
Sorular[0][6] = "2"
Sorular[0][7] = "5"
Sorular[1][0] = "Türkiyenin baş kenti neresidir?"
Sorular[0][1] = "Ankara"
Sorular[0][2] = "İstanbul"
Sorular[0][3] = "İzmir"
Sorular[0][4] = "Bursa"
Sorular[0][5] = "Edirne"
Sorular[0][6] = "1"
Sorular[0][7] = "10"
Seçilen cevabın index numarası ile benim soruyu yazarken belirttiğim doğru cevap index numarası tutuyorsa, Sorular[SoruNosu] dizisinin 7. elemanındaki puan değerini kullanıcıya veriyoruz..
Kısaca soruları yazarken doğru şıkkın numarasınıda giriyorum. Kullanıcının cevap indexi ile benim soruyu yazarken belirttiğim doğru cevap indexi tutarsa soruyu doğru cevaplamıştır diyoruz...
Soruların Ekrana Yazılmasını Saylayan Fonksiyon:
Cevaplar.setSelectedCheckbox(null);
Soru.setText(Sorular[SoruNo][0]);
Acevap.setLabel(Sorular[SoruNo][1]);
Bcevap.setLabel(Sorular[SoruNo][2]);
Ccevap.setLabel(Sorular[SoruNo][3]);
Dcevap.setLabel(Sorular[SoruNo][4]);
Ecevap.setLabel(Sorular[SoruNo][5]);
}
Checkbox Grubumuzun adı Cevaplar olduğundan Ekrana soruları basarken tüm Checkboxların selected özelliğini boşa alıyoruz.
Ekranda daha önce konumlarını belirlediğim alanlara SoruNo ile index'i gelen dizi eleman değerlerinin gelmesini sağlıyoruz
Acevap.setLabel(Sorular[SoruNo][1]);
Bcevap.setLabel(Sorular[SoruNo][2]);
Ccevap.setLabel(Sorular[SoruNo][3]);
Dcevap.setLabel(Sorular[SoruNo][4]);
Ecevap.setLabel(Sorular[SoruNo][5]);
Mesela SoruNo=1 ise Soru Label değerini Sorular[1][0] = "Türkiyenin baş kenti neresidir?" yapıyoruz.
-
filiz emir
public void SorulariYazint SoruNo Cevaplar.setSelectedCheckboxnull; Soru.setTextSorular[SoruNo][0]; Acevap.setLabelSorular[SoruNo][1]; Bcevap.setLabelSorular[SoruNo][2]; Ccevap.setLabelSorular[SoruNo][3]; Dcevap.setLabelSorular[SoruNo][4]; Ecevap.setLabelSorular[SoruNo][5]; public void CevabiKontrolEtint SoruNosu int VerilenCevapIndex 0; if Acevap.getState VerilenCevapIndex 1; else if Bcevap.getState VerilenCevapIndex 2; else if Ccevap.getState VerilenCevapIndex 3; else if Dcevap.getState VerilenCevapIndex 4; else if Ecevap.getState VerilenCevapIndex 5; if Integer.valueOfSorular[SoruNosu][6] VerilenCevapIndex //String tip integera dönüştürülüyor Puan + Integer.valueOfSorular[SoruNosu][7]; DogruSayisi++; //Integer deger stringe donusuyor PuanDurumu.setTextInteger.toStringPuan; Kodun bu kısmında ne yapıldığını ayrıntılı anlatabilirmisiniz çözmekte zorlandım bayağı bi programlama öğrencisi olarak :13 Nisan 2014 16:34:01, Pazar -
Admin
if Acevap.getState [Hangi şık seçiliyse onun getStatesi true olacağından, VerilenCevapIndexine ona göre bir değer attım. Yani A için 1, B için 2, C için 3 gibi... Hangi şık seçiliyse, seçili şıkkın indexini aldım. Integer.valueOfSorular[SoruNosu][6] VerilenCevapIndex Sorular sıra ile sorulduğundan sıradaki sorunun doğru cevabının olduğu index numarasını 6. değerde tutuyorum. Yani sorunun doğru cevap şıkkının index numarasını 6. dizi değeri belirtiyor. Seçilen cevabın index numarası ile benim soruyu yazarken belirttiğim doğru cevap index numarası tutuyorsa, Sorular[SoruNosu] dizisinin 7. elemanındaki puan değerini kullanıcıya veriyorum.. Kısaca soruları yazarken doğru şıkkın numarasınıda giriyorum. Kullanıcının cevap indexi ile benim soruyu yazarken belirttiğim doğru cevap indexi tutarsa soruyu doğru cevaplamıştır diyorum...14 Nisan 2014 00:39:01, Pazartesi -
filiz emir
Teşekkürler Peki bu kod bloğu ? public void SorulariYazint SoruNo Cevaplar.setSelectedCheckboxnull; Soru.setTextSorular[SoruNo][0]; Acevap.setLabelSorular[SoruNo][1]; Bcevap.setLabelSorular[SoruNo][2]; Ccevap.setLabelSorular[SoruNo][3]; Dcevap.setLabelSorular[SoruNo][4]; Ecevap.setLabelSorular[SoruNo][5]; Özellikle Cevaplar.setSelectedCheckboxnull; bu kod satırının açılımı nedir ?14 Nisan 2014 02:04:06, Pazartesi