Online Çoktan Seçmeli Sınav
Askerliğimi; KİEM (Kamu İnternet eğitim merkezi) sorumlusu olarak ve erlere bilgisayar öğreterek geçirdim. Bilgisayar nedir? Nasıl çalışır? Gibi temel soruların cevaplarını öğrettim diyebilirim.
Eğitim sonunda askerlere birde seviye tespit sınavı yapıyorduk. Her 2 hafta da bir 120 askere sınav yapıp onların kağıtlarını okumak ve o kağıtlara notlar verip birde o notları excel tablosunda raporumsulamak gerekiyordu.
Bir programcı olarak durumdan kendime vazife çıkardım ve intranetten askerlere bir sınav hazırladım. Herkes oturduğu yerden 5 dakikada sınav oluyordu. Ve anında kaç aldığını öğreniyordu. Ben anında herkesin sonuçlarını görüyordum ve excel’e kaydediyordum. Excel’de de bir pivottable ile işimi bitiriyordum.
Yurdum insanı çakal olduğu için kopya çekmesin diye de her öğrenciye veritabanından rasgele çoktan seçmeli 5 soru geliyordu.
Sınav sorularının tam olarak bilgiyi ölçmesinin arkasında değilim. Çok iyi sorular değil ama içinde bulunduğum koşullar içinde son derece yeterli olduğunu söyleyebilirim :)
Sınav sistemini asp.net ile Visual Studio 2008 de hazırladım.
Benzer bir durumda askerliğini KİEM sorumlusu olarak yapacak arkadaşlara armağanımdır. :)
Visual Studio 2008 ile Hazırlandı
Kodları İndirmek İçin Tıklayınız
private void SorulariOlustur() { try { ScriptManager sm = new ScriptManager(); sm.ID = "sm1"; Page.Form.Controls.Add(sm); UpdatePanel up1 = new UpdatePanel(); up1.ID = "UpdatePanel1"; up1.UpdateMode = UpdatePanelUpdateMode.Conditional; Session.Add("Not", 0); Soru[] _Sorular = new Soru[5]; try { _Sorular = (Soru[])Session["SorularNesnesi"]; } catch (Exception ex) { try { Session.Remove("Hata"); } catch (Exception) { } finally { Session.Add("Hata", ex.Message); Response.Redirect("Hata.aspx", false); } } Literal ltr; Random rnd = new Random(); for (int i = 0; i < _Sorular.Length; i++) { ltr = new Literal(); ltr.ID = "ltr" + i.ToString(); ltr.Text = "<br/><b>Soru " + Convert.ToString(i + 1) + " : </b>" + _Sorular[i].SoruMetni + "<br/><br/>"; up1.ContentTemplateContainer.Controls.Add(ltr); if (_Sorular[i].IsCoktanSecmeli) { RadioButtonList rbl = new RadioButtonList(); rbl.ID = "rbl" + i.ToString(); //Şıkları Karıştıma Kısmısı ArrayList _cevaplar = new ArrayList(); int _uzunluk = _Sorular[i].Cevaplar.Length; int _taban = 0; for (int j = 0; j < _uzunluk; j++) { _cevaplar.Add(_Sorular[i].Cevaplar[j]); } Session.Add(rbl.ID, _Sorular[i].DogruCevap); int _sayi = rnd.Next(_taban, _uzunluk); ArrayList _rasgeleSayilar = new ArrayList(); ArrayList _yeniArray = new ArrayList(); for (int k = 0; k < _cevaplar.Count; k++) { _yeniArray.Add(_cevaplar[_sayi].ToString()); _rasgeleSayilar.Add(_sayi); do { if (_yeniArray.Count != _cevaplar.Count) { if (_sayi == _taban) { _taban++; } if (_sayi == _uzunluk - 1) { _uzunluk--; } _sayi = rnd.Next(_taban, _uzunluk); } else { break; } } while (_rasgeleSayilar.Contains(_sayi)); } for (int l = 0; l < _yeniArray.Count; l++) { rbl.Items.Add(_yeniArray[l].ToString()); } ///////////////////////////////////////////////// up1.ContentTemplateContainer.Controls.Add(rbl); } else { TextBox txt = new TextBox(); txt.ID = "txt" + i.ToString(); txt.TextMode = TextBoxMode.MultiLine; txt.Width = 250; txt.Height = 60; Session.Add(txt.ID, _Sorular[i].DogruCevap); up1.ContentTemplateContainer.Controls.Add(txt); } ltr = new Literal(); ltr.ID = "ltr2" + i.ToString(); ltr.Text = "<br/><br/>"; up1.ContentTemplateContainer.Controls.Add(ltr); } Button button1 = new Button(); button1.ID = "Button1"; button1.Text = "Sınavı Bitir"; button1.Click += new EventHandler(Button_Click); ConfirmButtonExtender cbe = new ConfirmButtonExtender(); cbe.ID = "cbe1"; cbe.ConfirmText = "Sınavı Bitirmek İstediğine Emin Misin?"; cbe.TargetControlID = "Button1"; Page.Form.Controls.Add(cbe); Page.Form.Controls.Add(up1); Page.Form.Controls.Add(button1); } catch (Exception ex) { try { Session.Remove("Hata"); } catch (Exception) { } finally { Session.Add("Hata", ex.Message); Response.Redirect("Hata.aspx", false); } } }
Category: Asp.Net - 7 comments »






January 15th, 2010 at 11:53 am
güzel bir iş çıkarmışsın.
January 15th, 2010 at 4:12 pm
teşekkür ederim.
January 30th, 2010 at 6:57 am
Öncelikle bilgiler için teşekkürler fakat aklıma takılan bir konu çoktan seçmeli 5 soru değilde 7 soru olsa 4 soru olsa yani bir konuda kaç adet soru varsa o soruları ekranda görüntülese ne yapılması gerekiyor? Yani soru sayısının değişken olduğu durumlarda ne yapılabilir?
February 1st, 2010 at 5:53 am
Veritabanında tanımlı sorulardan rasgele seçiyor. (Soru[] _Sorular = new Soru[5];) dizideki 5 rakamını değişince farklı sayıda soru getirmeli… tam kodu hatırlamıyorum.
February 1st, 2010 at 5:58 am
teşekkürler cevap için
March 10th, 2011 at 2:46 pm
Çok Teşekkürler güzel bilgiler vermişsiniz
April 1st, 2011 at 7:09 am
hocam koduna sağlık güzel bir proje olmuş…