C# Windows Forms ile Net Hesaplama Uygulaması | 4 Yanlış 1 Doğruyu Götürür
C# Windows Forms uygulamalarında TextBox, Label, Button ve GroupBox kontrollerini kullanarak sınavlarda doğru ve yanlış sayılarına göre net hesaplayan bir program geliştirebiliriz. Bu uygulamada Türkçe ve Matematik dersleri için ayrı ayrı doğru ve yanlış sayıları girilecek, 4 yanlış 1 doğruyu götürür kuralına göre netler hesaplanacaktır.
Bu örnek, Nesne Tabanlı Programlama dersinde Windows Forms arayüz tasarımını, kullanıcıdan veri almayı, sayısal dönüşümleri ve butonun Click olayını öğrenmek için hazırlanmıştır.

1. Net Hesaplama Uygulamasının Amacı
Programda iki ders bulunacaktır: Türkçe (40 soru) ve Matematik (40 soru). Kullanıcı her ders için doğru ve yanlış sayılarını girecek, NET HESAPLA butonuna tıklayarak sonuçları görecektir.
- Her ders için toplam soru sayısı 40'tır.
- 4 yanlış cevap, 1 doğru cevabı götürür.
- Boş bırakılan sorular net hesabını değiştirmez.
- Doğru ve yanlış sayılarının toplamı 40'ı geçmemelidir.
- Net sonuçları ilgili kutularda gösterilecektir.
2. Net Hesaplama Formülü
Net hesaplama işleminde yanlış sayısı 4'e bölünür ve elde edilen değer doğru sayısından çıkarılır.
Net = Doğru Sayısı - (Yanlış Sayısı / 4)
Örnek 1 – Türkçe: 35 doğru, 5 yanlış için:
Net = 35 - (5 / 4) = 33,75
Örnek 2 – Matematik: 30 doğru, 7 yanlış için:
Net = 30 - (7 / 4) = 28,25
3. Visual Studio'da Windows Forms Projesi Oluşturma
Visual Studio'da yeni bir Windows Forms App (C#) projesi oluşturun. Formun başlığını Net Hesaplama olarak değiştirin. Ardından Toolbox panelinden gerekli kontrolleri forma sürükleyerek yerleştirin.
Formun üst kısmına GroupBox ekleyip Text özelliğini Sınav 1.Oturum olarak ayarlayın. İçerisine Türkçe ve Matematik satırlarını, DOĞRU, YANLIŞ ve NET başlıklarını yerleştirin. En alta NET HESAPLA butonunu ekleyin.
4. Kullanılacak Form Elemanları ve Name Özellikleri
| Kontrol |
Name |
Text / Görevi |
| GroupBox |
groupBox1 |
Sınav 1.Oturum |
| Label |
label1 |
TÜRKÇE (40 SORU) |
| Label |
label2 |
MATEMATİK (40 SORU) |
| Label |
label3 |
DOĞRU |
| Label |
label4 |
YANLIŞ |
| Label |
label5 |
NET |
| TextBox |
turd |
Türkçe doğru sayısı |
| TextBox |
tury |
Türkçe yanlış sayısı |
| TextBox |
turn |
Türkçe net sonucu |
| TextBox |
matd |
Matematik doğru sayısı |
| TextBox |
maty |
Matematik yanlış sayısı |
| TextBox |
matn |
Matematik net sonucu |
| Button |
button1 |
NET HESAPLA |
Sonuçların kullanıcı tarafından değiştirilmesini önlemek için txtTurkceNet ve txtMatematikNet kutularının ReadOnly özelliğini True yapın. Formun renklerini ve yazı tiplerini Properties panelinden istediğiniz gibi düzenleyebilirsiniz.
5. NET HESAPLA Butonunun C# Kodları
Form tasarımında NET HESAPLA butonuna çift tıklayın. Visual Studio, butonun Click olayını oluşturacaktır. Aşağıdaki kodu oluşan button1_Click metodunun içine yazın.
private void button1_Click(object sender, EventArgs e)
{
if (matd.Text == "" || maty.Text == "" || turd.Text == ""
|| tury.Text == "")
{
MessageBox.Show("Lütfen tüm alanları " +
"doldurun!;");
}
else
{
double mat_dogru = Convert.ToDouble(matd.Text);
double mat_yanlis = Convert.ToDouble(maty.Text);
double tur_dogru = Convert.ToDouble(turd.Text);
double tur_yanlis = Convert.ToDouble(tury.Text);
if (mat_dogru + mat_yanlis > 40 || tur_dogru + tur_yanlis > 40)
{
MessageBox.Show("Derslerin toplam soru sayısı 40'ı" +
" gecemez");
}
else {
double mat_net = mat_dogru - (mat_yanlis / 4);
double tur_net = tur_dogru - (tur_yanlis / 4);
matn.Text = Convert.ToString(mat_net);
turn.Text = Convert.ToString(tur_net);
}
}
}
Not: Bu örnekte kod, butonun Click olayının içine yazılmaktadır. Formun tamamını veya otomatik oluşturulan Designer kodlarını değiştirmeniz gerekmez. TextBox kontrollerinin Name özellikleri tabloda verilen isimlerle aynı olmalıdır.
6. Kodların Çalışma Mantığı
double değişkenleri: Doğru ve yanlış sayıları hesaplamasında ondalılık sayı çıkabilme ihtimali için DOUBLE veri türü kullanılmıştır.
Text özelliği: Kullanıcının TextBox içine yazdığı değerler Text özelliğiyle alınır. TextBox verileri başlangıçta metin türündedir.
if koşulu: Girilen sayıların negatif olmaması ve bir derste doğru ile yanlış toplamının 40'ı geçmemesi kontrol edilir.
4.0 ile bölme: Yanlış sayısını 4.0'a bölmek ondalıklı bölme yapılmasını sağlar. Örneğin 5 / 4.0 işleminin sonucu 1,25'tir. Sadece tam sayı türündeki 5 / 4 işlemi ise 1 sonucunu üretir.
Convert.ToString: Hesaplanan double net değerini, metne dönüştürür. .
7. Programın Örnek Çalışması
Kullanıcı Türkçe için 35 doğru ve 5 yanlış, Matematik için 30 doğru ve 7 yanlış girdiğinde NET HESAPLA butonuna tıklanır.
| Ders |
Doğru |
Yanlış |
Net |
| Türkçe |
35 |
5 |
33,75 |
| Matematik |
30 |
7 |
28,25 |
Türkçe neti 35 - 1,25 = 33,75, Matematik neti ise 30 - 1,75 = 28,25 olarak hesaplanır. İki dersin toplam neti 62 olur. Bu uygulamada toplam net için ayrı bir alan bulunmadığından yalnızca derslerin net sonuçları gösterilir.
8. Sık Yapılan Hatalar
- 4 yerine 4.0 kullanmamak: Tam sayı bölmesi nedeniyle yanlış net hesaplanabilir.
- TextBox adlarını farklı yazmak: Kodda kullanılan kontrol adları ile formdaki Name özellikleri eşleşmelidir.
- Geçersiz girişleri kontrol etmemek: Boş kutular veya harf girişleri hesaplamayı engelleyebilir.
- 40 soru sınırını unutmamak: Bir derste doğru ve yanlış toplamı 40'tan büyük olmamalıdır.
- Net kutularını düzenlenebilir bırakmak: Sonuç kutularında ReadOnly özelliği True yapılmalıdır.
9. Öğrenciler İçin Geliştirme Etkinlikleri
Uygulamayı tamamladıktan sonra aşağıdaki geliştirmeleri deneyebilirsiniz:
- Türkçe ve Matematik netlerinin toplamını gösteren yeni bir TextBox ekleyin.
- Doğru ve yanlış sayılarına göre boş bırakılan soru sayısını hesaplayın.
- Bir TEMİZLE butonu ekleyerek tüm TextBox alanlarını sıfırlayın.
- Net değerleri için farklı renkler kullanın.
- Net hesaplama işlemini ayrı bir metot hâline getirerek iki ders için yeniden kullanın.
10. Sonuç
C# Windows Forms ile hazırladığımız bu net hesaplama uygulamasında kullanıcıdan TextBox aracılığıyla veri aldık, girilen değerleri kontrol ettik ve Button kontrolünün Click olayında matematiksel hesaplama yaptık. 4 yanlış 1 doğruyu götürür kuralını kullanarak Türkçe ve Matematik derslerinin netlerini ayrı ayrı hesapladık.
Bu uygulama, Windows Forms üzerinde olay tabanlı programlama, değişkenler, veri türleri, koşullar, veri dönüşümü ve form kontrolleri konularını pekiştirmek için uygun bir örnektir.