Visual Basic ile Sınav Otomasyon

mtsahin
09-07-2007, 23:49   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
19 mesaj
Kayıt Tarihi:Kayıt: May 2007


Visual Basic ile Sınav Otomasyon sistemi oluşturulacaktır.
• Sınav otomasyon sistemi 2 bölümden oluşur.
o Öğretmenin soruları (1 sınav 10 sorudan oluşur), şıkları (5 şık) ve doğru cevabı girdiği form: (tüm bu bilgiler veritabanına kaydedilecek)
o Öğrencinin kendisi için hazırlanmış sınavlardan birini seçmesi ile 60 dakikalık süre içerisinde kendisi için hazırlanan 10 soruluk sınavı cevapladığı form. (Öğrenci aynı anda sadece 1 soru görebilir).
o Program çalıştığına öğrenci mi öğretmen olarak mı kullanacağını soran bir pencere ekrana gelecek, öğrenci tıklanırsa sınav ekranı açılacak


Bu ödevle ilgili yardımcı olabilecek arkadaşların yardımlarını bekliyorum.Şimdden tşk.

Caner Güral
10-07-2007, 00:12   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
663 mesaj
Kayıt Tarihi:Kayıt: Şub 2006

Ben olsam, projeye başlar, takıldığım yerleri sorardım.Haksız mıyım ? Ya da ne kadar haklıyım sizce ?

(Öyle daha fazla yardım alırsınız, şimdi size bir sürü alternatif çıkacak, aklınızdaki tasarım gidecek.Biri öyle yapalım, biri böyle yapalım derken siz bu işten zevk alamayacaksınız.Biliyorum  da söylüyorum; inanın.)

Bence siz neler yapmak istediğinizi kafanızda bir planlayın.Hatta kağıda da yazın, şöyle madde madde.Sonra başlayın kodlamaya.Eğer orasını nasıl yapacağınızı dahi kestiremiyorsanız, sıkmayın canınızı; sorun foruma, sorun foruma.Yeter ki siz başlayın, siz takılın kodlarda, o zaman yardım tam gelecektir.

Böyle ormanın ne kadar yandığını bilmeden, kovalarla su götürmek pek söndürmez ateşinizi :)

Hoşçakalın.Size iyi günler, iyi çalışmalar dilerim...

mtsahin
11-07-2007, 12:03   |  #3  
OP Taze Üye
Teşekkür Sayısı: 0
19 mesaj
Kayıt Tarihi:Kayıt: May 2007

Evt. form'a şifreli giriş yapıcam;

Private Sub Command1_Click()

If Text1.Text = "celal" Then
Form2.Show
Else
MsgBox "Kullanıcı adı yanlış"
End If


If Text2.Text = "123456" Then
Form2.Show
Else
MsgBox "Şifre yanlış"
End If

End Sub


kodları bu ama kulanıcı adı doğu şifre yanlış olunca yine giriş yapmış gibi oluyor.
tam terside şifre doğu kullanıcı adı yanlış ise yine girişyapıyor.
Bu sorunu nasıl çözerim

Caner Güral
11-07-2007, 13:22   |  #4  
Yıllanmış Üye
Teşekkür Sayısı: 0
663 mesaj
Kayıt Tarihi:Kayıt: Şub 2006

Merhaba Şahin,

O zaman if koşulunu kullanırken VE karşılaştırma operatörünü de kullanman gerekir.Yani şöyle yaparsan sorun hâl olacaktır:

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
private sub command2_click() if (text1.text="celal") and(text2.text="1234") then form2.show '* else msgbox "Girdiğiniz bilgilerden en az birisi yanlış.Lütfen tekrar kontrol ediniz" end if end sub
*-
Bunun yerine şöyle bir ifade kullanmanı öneririm:
[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
form2.load form2.visible=true unload me
Unload ettiğin bu formunu Unload olayına da
[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
form1.visible=false
yazman yerinde olacaktır.

Ayrıca bu bilgiler böyle celal ve 123456 olmamış.Bunları bir veritabanından çekmek ve karşılaştırmak istemez misin (: ?

Hoşçakal.İyi günler, iyi çalışmalar...

(Forum sistemi [ kod ][ /kod ] bölümü içinde renk kullanmaya izin vermiyormuş.Görüntü karıştığından tekrar düzenledim)

Son Düzenleme: Caner Güral ~ 11 Temmuz 2007 13:24
mtsahin
11-07-2007, 15:43   |  #5  
OP Taze Üye
Teşekkür Sayısı: 0
19 mesaj
Kayıt Tarihi:Kayıt: May 2007

Mrb Caner;

   Gösterdiğin ilgiye çok teşekkür ederim veritabanı ile ilgili biraz sorunum var office 2007 kullanıyorum 97 database e çeviremiyorum :S malesef biraz daha çalışmamgerek.

KuaforPlus
12-07-2007, 23:19   |  #6  
KuaforPlus avatarı
Yıllanmış Üye
Teşekkür Sayısı: 1
223 mesaj
Kayıt Tarihi:Kayıt: Nis 2007

Aşağıdaki kod her ne kadar sağlam gibi gözükse, kullanım esasında bir açık yaratmakta ve buda bir hatayı tetiklemektedir.

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
private sub command2_click() if (text1.text="celal") and(text2.text="1234") then form2.show '* else msgbox "Girdiğiniz bilgilerden en az birisi yanlış.Lütfen tekrar kontrol ediniz" end if end sub
Şu unutulmamalıdır. String değer kullanımı sırasında Textboxlar içine girilen bilgi kodlarımız arasında şu şekilde kullanılmalıdır.
[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
private sub command2_click() if trim(text1.text)="celal" and val(text2.text) = 1234 then form2.show '* else msgbox "Girdiğiniz bilgilerden en az birisi yanlış.Lütfen tekrar kontrol ediniz" end if end sub
şimdi ne yaptık onu açıklamak istiyorum.
Text1.text içine girilen bilgi string bir bilgi, bu tip bilgiler karşılaştırma sırasında text1.text içine girilen bilginin önce başındaki ve sonundaki boşlukların alınması gerekmektedir. bunuda Trim() ifadesi ile yapıyoruz.

Şifre kısmında ise girilen bilgi sayısal değerdir. bu durumda bilgiyi val() ile almamız ve karşılaştırmamız gerekir. Çünki rakam...

dikkat ederseniz burda
val(text2.text) = 1234
şöle bir ifade kullandım ve bu sayıları kesinlikle bir string bilgiymiş gibi "" tırnak içine almadım.

şimdi benim verdiğim kod buraya kadar yazım mantığında sağlam iken form kısmının declarasyon kısmına
option explicit altına option compare text ifadesini giresiye kadar gene hata üretir.

burdaki sorunumuzda şu...
trim(text1.text)="celal"  bu ifadeyi yazdık fakat form declarasyon kısmına option compare text yazmadık...

text1.text içine girişlerde özellikle türkçe karakter kullanımlarında büyük küçük harf duyarlılığında sorunlar yaşardık.

örnek:
If Trim(Text1.Text) = "İSTANBUL" Then
MsgBox "İSTANBUL büyük harfle girdiniz"
End If

yukarıdaki kodu projenize ekleyin. text1.text içine küçük harf le istanbul yazın karşılaştırma işlemi başarısız olucaktır.
umarım yardımcı olabilmişimdir.

[/kod]

Son Düzenleme: KuaforPlus ~ 12 Temmuz 2007 23:22
blackhawkmilan31
12-07-2007, 23:24   |  #7  
Yıllanmış Üye
Teşekkür Sayısı: 1
1,472 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

Caner yazılım üstüne okuduğunu 30 km'den belli ediyosun.

Caner Güral
12-07-2007, 23:31   |  #8  
Yıllanmış Üye
Teşekkür Sayısı: 0
663 mesaj
Kayıt Tarihi:Kayıt: Şub 2006

@Girilmez

Gerçekten haklısın.

Herhalde kafam C++'taki fonksiyonlara aşırı yüklenmeye karıştı.Dediğin kesinlikle doğru, her zaman için sayısal girilen bir değeri tırnak içerisinde almak yerine val() ile integer olarak almak en iyisi.

Buna ek olarak ne yalan söyleyeyim Visual Basic ile uğraşırken bu login kısımlarında hiç böyle şeyler denememiştim.Yani şu büyük-küçük harf durumunu.Daha çok veritabanıyla karşılaştırma yaptığımdan ve veritabanının zaten büyük-küçük harf duyarlı olmasından hiç general declaration kısmına böyle şeyler denemedim.

Her ne kadar Visual Basic ile artık ilgilenmesem de bunu öğrenmem çok iyi oldu.

Şahin ve kendi adıma teşekkür ederim.

Hoşçakal.İyi günler, iyi çalışmalar...

Caner Güral
12-07-2007, 23:31   |  #9  
Yıllanmış Üye
Teşekkür Sayısı: 0
663 mesaj
Kayıt Tarihi:Kayıt: Şub 2006
blackhawkmilan31
Caner yazılım üstüne okuduğunu 30 km'den belli ediyosun.
Efendim ?

blackhawkmilan31
12-07-2007, 23:36   |  #10  
Yıllanmış Üye
Teşekkür Sayısı: 1
1,472 mesaj
Kayıt Tarihi:Kayıt: Haz 2007
Caner Güral
blackhawkmilan31
Caner yazılım üstüne okuduğunu 30 km'den belli ediyosun.
Efendim ?
Yeme beni.Anladın sen onu da birde benim ağzımdan duymak için yapıyon dimi.seni gidi seniGülüş

Son Düzenleme: blackhawkmilan31 ~ 12 Temmuz 2007 23:40
Caner Güral
12-07-2007, 23:41   |  #11  
Yıllanmış Üye
Teşekkür Sayısı: 0
663 mesaj
Kayıt Tarihi:Kayıt: Şub 2006
blackhawkmilan31
Caner Güral
blackhawkmilan31
Caner yazılım üstüne okuduğunu 30 km'den belli ediyosun.
Efendim ?
Yema beni.Anladın sen onu da birde benim ağzımdan duymak için yapıyon dimi.seni gidi seniGülüş
blackhawkmilan31,

Kardeşim ne demeye çalışıyorsun ? Benden hiç tanımadığım birinin, kendince üstü kapalı laflarlarını anlamamı mı bekliyorsun ? Madem bir laf attın ortaya, sorulunca, niye dediğini, hangi amaçla söylediğini de söyleyiver bir zahmet.
Ve lütfen bana bu sıfatınızla sıra arkadaşım gibi davranmayın.En azından ilk karşılaşmada.

blackhawkmilan31
12-07-2007, 23:42   |  #12  
Yıllanmış Üye
Teşekkür Sayısı: 1
1,472 mesaj
Kayıt Tarihi:Kayıt: Haz 2007

özür dilerim.yani yazılımdan anladığı ifade etmek istemiştim.

Caner Güral
12-07-2007, 23:48   |  #13  
Yıllanmış Üye
Teşekkür Sayısı: 0
663 mesaj
Kayıt Tarihi:Kayıt: Şub 2006

Öyle söylesene baştan be kardeşim. (niyetini)

Ben de diyorum, birisi yine oyun oynuyor.
Yanlış anlama ama bu kalıpla birgün fena işletilmiştim, şimdi görünce yine kendinibilmezin biri aklı sıra eğleniyor sandım.

Ben de seni gerdiysem özür dilerim.

Hoşçakal.İyi günler, iyi çalışmalar...