Yazılım geliştirme eğitiminde temel programlama mantığının (koşullar, karar yapıları ve aritmetik işlemler) pekiştirilmesi, gerçek hayattan senaryolarla çok daha kalıcı hale gelir.
Bu makalede; C# Windows Forms ortamında geliştirilen, kullanıcı girdilerine göre sepet tutarını, kargo ücretini ve VIP üyelik indirimlerini dinamik olarak hesaplayan örnek bir uygulama senaryosunu inceleyeceğiz.
Bu proje özellikle;
if-elsekarar yapıları,- Mantıksal ve aritmetik operatörler
- Form bileşenleri (TextBox, RadioButton, CheckBox vb.) arasındaki etkileşim konularını uygulamalı olarak öğrenmek isteyenler için ideal bir laboratuvar çalışmasıdır.
2. Proje Senaryosu ve İş Kuralları
Uygulamanın temel amacı, bir e-ticaret sitesinin ödeme ekranını simüle etmek ve belirlenen kurallara göre sepetin son tutarını hesaplamaktır.
Temel İş Kuralları:
- Kargo Seçimi: Normal kargo ücreti 50 TL, Hızlı kargo ücreti ise 100 TL olarak belirlenmiştir.
- İstisna Kuralı (Ücretsiz Kargo): Sepet tutarı 500 TL ve üzerindeyse, kargo ücreti alınmaz (0 TL yapılır).
- VIP İndirimi: Kullanıcı “VIP Üye” seçeneğini işaretlediyse, sepetindeki toplam ürün tutarı üzerinden %10 indirim uygulanır.
- Çıktı Gereksinimleri: Tüm hesaplamalar sonucunda ara toplam, indirim miktarı, kargo ücreti ve ödenecek genel toplam ekrana düzenli bir şekilde yazdırılmalıdır.
3. Arayüz Tasarımı (Windows Forms)
Form üzerinde kullanılacak bileşenler :

- Sepet Tutarı:
Labelve kullanıcıdan değer almak için birTextBox. - VIP Üye Durumu: Durumu kontrol etmek için bir
CheckBoxveyaRadioButton. - Kargo Seçimi:
GroupBoxiçerisinde kargo türlerini seçmek için iki adetRadioButton(Normal Kargo – 50 TL, Hızlı Kargo – 100 TL). - Hesaplama Butonu: İşlemi tetiklemek için bir
Button(Ödeme Hesapla). - Bilgi / Sonuç Alanı: Kuralların ve hesaplama detaylarının gösterileceği bir label denetimi
C# Kodları:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | private void btnHesapla_Click(object sender, EventArgs e) { bool vipDurumu = chkVip.Checked; double kargoUcreti = 0; double indirimMiktari = 0; double genelToplam = 0; double sepetTutari = Convert.ToDouble(txtSepetTutari.Text); if (rbNormal.Checked) { kargoUcreti = 50; } else { kargoUcreti = 100; } // 2. İstisna Kuralı: Sepet tutarı 500 TL ve üzeriyse kargo ücretsiz (0 TL) if (sepetTutari >= 500) { kargoUcreti = 0; } // 3. VIP Üye İndirim Kuralı (%10 İndirim) if (vipDurumu == true) { indirimMiktari = sepetTutari * 0.10; // Sepet tutarının %10'i } // 4. Genel Toplam Hesaplama (Aritmetik ve Mantıksal İşlemler) // İndirimli tutar üzerinden kargo ücreti eklenir genelToplam = (sepetTutari - indirimMiktari) + kargoUcreti; // Sonuçları ekrana yazdırma lblOdenecekTutar.Text = "Kargo Ücreti: " + kargoUcreti.ToString("C2")+"\n"; lblOdenecekTutar.Text += "İndirim Miktarı: " + indirimMiktari.ToString("C2") + "\n"; lblOdenecekTutar.Text += "Genel Toplam: " + genelToplam.ToString("C2"); } |
Kodların Detaylı Açıklaması
Yukarıdaki kod bloğu, e-ticaret ödeme senaryosundaki iş kurallarını mantıksal ve aritmetik operatörler kullanarak hayata geçirmektedir. Kodun mantıksal adımları sırasıyla şunlardır:
- Girdi ve Durum Değişkenleri (
btnHesapla_Click):- Kullanıcının arayüzde seçtiği VIP üyelik durumu
chkVip.Checkedyardımıyla birbool(mantıksal) değişkene aktarılır. txtSepetTutarialanına girilen metinsel ifade,Convert.ToDouble()fonksiyonu ile sayısal (double) bir değere dönüştürülereksepetTutarideğişkenine atanır.
- Kullanıcının arayüzde seçtiği VIP üyelik durumu
- Kargo Ücreti Belirleme Yapısı (
if-else):- İlk aşamada kullanıcının tercih ettiği kargo türüne bakılır. Eğer
rbNormalseçiliyse kargo ücreti 50 TL, aksi takdirde (hızlı kargo seçilmişse) 100 TL olarak başlangıç değeri alır.
- İlk aşamada kullanıcının tercih ettiği kargo türüne bakılır. Eğer
- İstisna Kuralı (Ücretsiz Kargo Barajı):
- İş kurallarında belirtilen “Sepet tutarı 500 TL ve üzeriyse kargo ücretsiz yapılmalıdır” kuralı[cite: 1],
sepetTutari >= 500koşuluyla kontrol edilir. Bu şart sağlanıyorsa, daha önce belirlenen kargo ücreti0yapılarak istisna uygulanır.
- İş kurallarında belirtilen “Sepet tutarı 500 TL ve üzeriyse kargo ücretsiz yapılmalıdır” kuralı[cite: 1],
- VIP İndirim Mantığı:
- Kullanıcının VIP üye olup olmadığı (
vipDurumu == true) kontrol edilir[cite: 1]. Eğer kullanıcı VIP ise, sepet tutarı üzerinden%10luk indirim tutarı (sepetTutari * 0.10) hesaplanarakindirimMiktarideğişkenine aktarılır.
- Kullanıcının VIP üye olup olmadığı (
- Aritmetik Genel Toplam Hesabı:
- Toplam tutar; sepet tutarından indirim miktarı çıkarıldıktan sonra, güncel kargo ücretinin eklenmesiyle (
(sepetTutari - indirimMiktari) + kargoUcreti) dinamik olarak hesaplanır.
- Toplam tutar; sepet tutarından indirim miktarı çıkarıldıktan sonra, güncel kargo ücretinin eklenmesiyle (
- Sonuçların Formatlanarak Aktarılması:
- Hesaplanan kargo ücreti, indirim miktarı ve genel toplam,
ToString("C2")metodu sayesinde yerel para birimi formatına (TLsimgesi ve kuruş gösterimiyle) dönüştürülerek alt altalblOdenecekTutarbileşeni üzerine yazdırılır.
- Hesaplanan kargo ücreti, indirim miktarı ve genel toplam,
Örnek Çıktı:

