Bu makalede, Windows Forms kullanarak bir TabControl örneği üzerinden basit bir yemek sipariş sistemi oluşturacağız. Projede, müşteri bilgilerinin alındığı ve sipariş özetinin hesaplandığı bir yapı geliştirilmiştir.
Projenin Amacı
TabControl bileşenini kullanarak:
- Yemek siparişlerini listelemek,
- Sipariş adedi ve fiyat bilgisini göstermek,
- Hesap özetini dinamik olarak oluşturmak.
TabPage1: Müşteri Bilgileri sayfası

TabPage2: Sipariş Bilgileri sayfası

TabPage3: Sipariş özeti sayfası

Kullanılan Teknolojiler
- C#: İş mantığının oluşturulması.
- Windows Forms: Grafiksel arayüz tasarımı.
- TabControl: Çoklu sekme düzeni.
Projenin Kod Yapısı
1. Genel Kodlar ve Tanımlar
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 42 43 44 45 46 47 48 49 50 | using System; using System.Windows.Forms; namespace TabControlOrnek { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private readonly decimal[] yemekFiyatlari = { 20m, 50m, 40m, 10m, 25m }; private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { // TabPage3'e geçildiğinde hesap özeti oluşturulur if (tabControl1.SelectedIndex == 2) { string musteriAdi = textBox1.Text; decimal toplamTutar = 0; string[] yemekler = { "Çorba", "İskender", "Köfte", "Ayran", "Tatlı" }; string hesapOzeti = $"Müşteri Adı: {musteriAdi}\n\nSipariş Özeti:\n----------------------\n"; // NumericUpDown bileşenlerini kullanarak adet bilgisi alınıyor NumericUpDown[] adetler = { numericUpDownCorba, numericUpDownIskender, numericUpDownKofte, numericUpDownAyran, numericUpDownTatli }; for (int i = 0; i < yemekler.Length; i++) { int adet = (int)adetler[i].Value; decimal tutar = adet * yemekFiyatlari[i]; toplamTutar += tutar; if (adet > 0) { hesapOzeti += $"{yemekler[i]} x {adet} adet = {tutar:C}\n"; } } hesapOzeti += $"\nToplam Tutar: {toplamTutar:C}"; // Hesap özetini label1'e yazdır label1.Text = hesapOzeti; } } } } |


Bu kod, bir Windows Forms uygulamasında TabControl bileşeni kullanılarak yemek sipariş özetini hesaplamak ve görüntülemek için yazılmıştır. Kodun amacı, üçüncü sekmeye (TabPage3) geçildiğinde sipariş edilen yemeklerin özetini ve toplam tutarını oluşturup kullanıcıya sunmaktır. İşlevsel detaylar şu şekildedir:
Kod Detaylı Açıklaması
1. Yemek Fiyatlarının Tanımlanması
1 2 3 | private readonly decimal[] yemekFiyatlari = { 20m, 50m, 40m, 10m, 25m }; |
decimal
tipinde bir dizi olarak yemeklerin birim fiyatları tanımlanmıştır.- Örneğin, Çorba: 20 TL, İskender: 50 TL gibi sıralanmıştır.
- Bu fiyatlar, sipariş toplamını hesaplamak için kullanılacaktır.
2. TabControl’deki Sekme Değişim Olayı
1 2 3 4 5 6 7 8 9 | private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { if (tabControl1.SelectedIndex == 2) { // Hesap özeti oluşturulacak } } |
tabControl1_SelectedIndexChanged
metodu, TabControl üzerindeki sekme değişikliklerini algılar.- Eğer kullanıcı 3. sekmeye (TabPage3,
SelectedIndex
= 2) geçiş yaparsa, hesap özeti oluşturma işlemi başlar.
3. Müşteri Adının Alınması
1 2 3 | string musteriAdi = textBox1.Text; |
textBox1
bileşeninde kullanıcının girdiği müşteri adı alınır.- Bu bilgi hesap özetinde başlık olarak kullanılacaktır.
4. Sipariş Özeti için Hazırlık
1 2 3 | string hesapOzeti = $"Müşteri Adı: {musteriAdi}\n\nSipariş Özeti:\n----------------------\n"; |
- Hesap özeti, müşteri adını içeren ve altına bir tablo başlığı ekleyen bir metin değişkeniyle başlatılır.
5. NumericUpDown ile Sipariş Adetlerinin Alınması
1 2 3 | NumericUpDown[] adetler = { numericUpDownCorba, numericUpDownIskender, numericUpDownKofte, numericUpDownAyran, numericUpDownTatli }; |
- Her bir yemek için NumericUpDown bileşenleri sipariş adetlerini almak için kullanılmıştır.
Value
özelliği, kullanıcının belirlediği miktar değerini alır.
6. Yemek Tutarlarının Hesaplanması
1 2 3 4 5 6 7 8 9 10 11 12 13 | for (int i = 0; i < yemekler.Length; i++) { int adet = (int)adetler[i].Value; decimal tutar = adet * yemekFiyatlari[i]; toplamTutar += tutar; if (adet > 0) { hesapOzeti += $"{yemekler[i]} x {adet} adet = {tutar:C}\n"; } } |
- Döngü, her yemek için:
- Sipariş adedini (
adet
) alır. - Toplam tutarı (
tutar
) hesaplar:adet * fiyat
. - Genel toplamı (
toplamTutar
) biriktirir. - Eğer yemek adedi sıfırdan büyükse, hesap özetine o yemek eklenir.
:C
formatı, para birimi şeklinde yazdırır (örneğin “50,00 TL”).
- Sipariş adedini (
7. Toplam Tutar ve Özetin Yazdırılması
1 2 3 4 | hesapOzeti += $"\nToplam Tutar: {toplamTutar:C}"; label1.Text = hesapOzeti; |
- Döngü tamamlandıktan sonra:
- Toplam tutar, hesap özetine eklenir.
- Özet bilgisi
label1
bileşeninde kullanıcıya gösterilir.
Kodun Çalışma Akışı
- Kullanıcı ilk sekmede müşteri adını girer.
- İkinci sekmede yemekler ve adetlerini belirler.
- Üçüncü sekmeye geçtiğinde, hesap özeti otomatik olarak oluşturulur ve toplam tutarla birlikte görüntülenir.