C# • C# Windows Form Örnekleri

C# Windows Forms ile Araç Kiralama ve Fiyat Hesaplama Otomasyonu

Bu makalede, meslek lisesi Bilişim Teknolojileri alanı programlama dersleri kapsamında öğrencilerin kazandığı temel programlama becerilerini pekiştirmek amacıyla tasarlanan Araç Kiralama ve Fiyat Hesaplama Otomasyonu projesini ele alacağız.

Proje; kullanıcı arayüzü tasarımı (Form Controls), veri türü dönüşümleri (Convert), mantıksal operatörler (&&, <), koşullu dallanma yapıları (if-else) ve veri raporlama (ListBox) bileşenlerinin gerçek hayat senaryosunda nasıl bir araya getirildiğini göstermektedir.

2. Kullanılan Form Denetimleri (Controls) ve Özellikleri

Uygulamanın arayüzü, kullanıcıdan girdileri en hatasız şekilde alacak ve sonuçları düzenli sunacak biçimde tasarlanmıştır:

  • Label (Etiketler): Kullanıcıyı yönlendirmek için kullanılan sabit metin alanları (Araç Sınıfı:, Gün Sayısı:, Sürücü Yaşı:).
  • ComboBox (Açılır Liste – cmbAracSinifi): Araç sınıflarının seçilmesini sağlar. İçerisinde “Ekonomik (500 TL/gün)” ve “Lüks (1200 TL/gün)” seçenekleri DropDownList modunda barındırılır.
  • NumericUpDown (nudGunSayisi): Kiralama gün sayısının alınmasında kullanılır. Kullanıcının negatif veya 0 gün girmesini engellemek için Minimum değeri 1 olarak ayarlanmıştır.
  • TextBox (txtYas): Sürücü yaşının dışarıdan metin olarak alınıp sayısal türe dönüştürüldüğü alandır.
  • CheckBox (chkKasko): Günlük ek kasko/sigorta talebinin (+100 TL/gün) seçilmesi için kullanılan onay kutusudur.
  • Button (btnHesapla): Tüm hesaplama ve kontrol mantığının tetiklendiği ana işlem düğmesidir.
  • ListBox (lstOzet): Hesaplanan ara toplamların, indirimlerin, kasko ücretlerinin ve ödenecek genel tutarın alt alta detaylı bir şekilde listelendiği rapor ekranıdır.

3. İş Kuralları ve Algoritma Mantığı

Programın arka planında (Form1.cs), kullanıcının form üzerine girdiği verilere göre şu adımlar sırasıyla işletilir:

  1. Veri Alma ve Dönüşüm: TextBox ve diğer kontrollerden gelen veriler int ve double türlerine dönüştürülür. Hatalı girişlere karşı kod bloğu try-catch yapısı ile güvence altına alınmıştır.
  2. Kısıtlama ve Mantıksal Kontrol (if): Sistem güvenlik ve kural gereği, eğer seçilen araç “Lüks” sınıfına aitse ve sürücünün yaşı 25’ten küçükse (yas < 25), işlem anında durdurulur (return). ListBox üzerine “HATA: Lüks araç kiralayabilmek için en az 25 yaşında olmalısınız!” uyarısı yazdırılır.
  3. Taban Ücret ve İndirim Hesaplamaları:
    • Seçilen araca göre günlük taban ücret (500 TL veya 1200 TL) belirlenir ve gün sayısı ile çarpılarak hamTutar elde edilir.
    • Kiralama süresi 7 gün ve üzerindeyse, mantıksal şart sağlanarak ham tutar üzerinden %15 uzun dönem indirimi hesaplanır.
    • Kasko kutucuğu işaretliyse, Gün Sayısı x 100 TL formülüyle ek kasko maliyeti eklenir.
  4. Genel Toplam: Ödenecek son tutar; (Ham Tutar - İndirim) + Kasko Ücreti aritmetik formülüyle hesaplanır ve formatlı bir şekilde ListBox bileşenine aktarılır.

4. Kaynak Kodlar

Araç Kiralama ve Fiyat Hesaplama Otomasyonu’na ait Form1.cs arka plan kodları, kullanıcı etkileşiminden verilerin işlenmesine ve ekrana raporlanmasına kadar mantıksal bir akış izler. Program, kullanıcı arayüzündeki “Toplam Tutarı Hesapla” butonuna tıkladığında tetiklenen btnHesapla_Click metodu ile çalışmaya başlar. İşlem başladığı anda, daha önceki hesaplamalardan kalan eski verilerin ekranda üst üste binmesini önlemek amacıyla lstOzet.Items.Clear() komutu ile liste ekranı temizlenir. Ardından, kullanıcının metin kutularına harf girmesi veya boş bırakması gibi durumlarda uygulamanın hata verip kapanmasını engellemek için tüm kod bloğu güvenli bir try-catch yapısı içine alınmıştır.

try bloğunun ilk aşamasında, form üzerindeki denetimlerden gerekli veriler toplanır ve uygun veri tiplerine dönüştürülür. ComboBox üzerinden seçilen araç türü string bir değişkene atanırken, NumericUpDown ve TextBox denetimlerindeki değerler tam sayıya (int) çevrilir. Kasko seçimi ise bool türünde bir mantıksal değişken ile takip edilir. Hesaplamalarda kullanılacak ara toplam, indirim miktarı ve kasko ücreti gibi değişkenler ise başlangıçta sıfırlanarak tanımlanır.

Programın karar mekanizması, iş kurallarını hayata geçirmek için if-else koşul yapılarından faydalanır. İlk olarak kullanıcının araç seçimi yapıp yapmadığı kontrol edilir. Ardından seçilen aracın adına göre günlük taban ücret (Ekonomik için 500 TL, Lüks için 1200 TL) belirlenir. Mantıksal operatörlerin (&&) en kritik kullanıldığı yer ise yaş kısıtlamasıdır; eğer seçilen araç “Lüks” sınıfına aitse ve sürücünün yaşı 25’ten küçükse, işlem return komutu ile anında durdurulur ve listeye bir hata mesajı yazdırılır.

Şartlar sağlandığında aritmetik işlemler devreye girer. Günlük taban ücret ile toplam gün sayısı çarpılarak ham kiralama tutarı elde edilir. Eğer kiralama süresi 7 gün ve üzerindeyse, mantıksal koşul sağlanarak ham tutar üzerinden %15 uzun dönem indirimi hesaplanır. Benzer şekilde, kasko kutucuğu işaretlenmişse gün sayısı ile 100 TL çarpılarak kasko maliyeti bulunur. Son aşamada ise ham tutardan indirim düşülür ve kasko ücreti eklenerek ödenecek net genel toplam hesaplanır.

Tüm bu hesaplama adımları tamamlandıktan sonra, elde edilen veriler lstOzet.Items.Add() metodu ile rapor ekranına aktarılır. Araç sınıfı, gün sayısı, sürücü yaşı, indirim tutarı ve kasko durumu gibi detaylar alt alta sıralanırken, parasal değerler ToString("0.00") formatıyla virgülden sonra iki basamaklı olarak düzenlenir. Böylece kullanıcıya son derece şık, anlaşılır ve profesyonel bir kiralama ve fatura özeti sunulmuş olur.

Örnek Çıktılar:

Yorum yap

Web Tasarım & Programlama sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya Devam Edin