C# Windows Application ile Örnek Sipariş Modülü Anlatımı



Selamlar, C# windows application ile basit bir sipariş alma modülü örneği yapacağız. Yazdığım kodlar hakkında açıklamalar yapıcam, aynı zamanda verdiğim link üzerinden indirebilirsiniz. Proje linki : İndirmek için tıklayınız
Solution'u açtığınızda Sale.Library ve Sale.Windows olmak üzere iki adet projeye görüceksiniz. C# sipariş modülü uygulması yaparken biraz olsun nesneye dayalı programlama mantığı ile ilerliyelim istedim. Library kısmında sipariş modülümüz ile alakalı classlarımızı oluşturacağız. SaleModel.cs classını görüceksiniz.


 public class SaleModel
    {
        public SaleModel()
        {
            Products = new List();
        }
        public string Code { get; set; }
        public List Products { get; set; }
        public decimal GrandTotal
        {
            get
            {
                return Products.Sum(s => s.Price);
            }
        }
        public decimal TotalQuantity
        {
            get
            {
                return Products.Sum(s => s.Quantity);
            }
        }
    }

Class içerisinde Code, Products, GrandTotal ve TotalQuantity adlarında propertylerimiz var. Bunlardan yalnız Code ve Products set edilebilir. GrandTotal ve TotalQuantity readonly'dir. Code alanına istediğimiz bir string değer girebiliriz. Products nesnesi ise bir Product classının list halidir.


public class Product
    {
        public string Name { get; set; }
        public string Barcode { get; set; }
        public decimal Price { get; set; }
        public int Quantity { get; set; }
    }
	

SaleModel içindeki Products List tipinde aldık. İçinde birden fazla Product classı tutabilmek için buda bizim ürünlerimizi belirliycek. Görüldüğü üzere ürünün adını, barkod bilgisi, fiyat bilgisi ve adetini oluşturan propertylerimiz mevcut. Biraz önce SaleModel üzerinde bulunan "GrandTotal" ve "TotalQuantity" properylerinin sadece readonly yani sadece okunabilir olduğunu söylemiştim. Bir propery yani özellik cağırıldığında ilk olarak {get} bloğuna girer. Bizde burda bu özelliğe bir değer atıyabiliriz. SaleModel üzerinde bulunan Products nesnesine eklenmiş ürünlerin fiyat toplamını ve ürün adet toplamını ürün eklendikçe otomatik olarak güncellenmesini bu şekilde sağlamış olduk. İşin library kısmı bu şekilde.

Bir diğer göreceğiniz proje ise Sale.Windows projesi. Bu proje üzerinde açtığımız formdan Product nesnesine ait tüm bilgilerin textboxlardan geldiğini görüceksiniz. Ve bir adette ürün ekle butonumuz var. Bu butonun üzerine iki kere tıkladığımız default event olarak click eventını code behind tarafına yazdığını görüceksiniz. Bu kod bloğu içerisinde ürün ekleme işlemlerimizi yapacağız. Code behind tarafının en üstünde SaleModel nesnemizi tanımlıyoruz. Bu bizim form kapanmadıkça SaleModel nesnesine eklediğim ürünlere sıfırlanmadan ulaşmamızı sağlıycak.

  	SaleModel saleModel = new SaleModel();
        public Form1()
        {
            InitializeComponent();
        }
 private void btnAddProduct_Click(object sender, EventArgs e)
        {
            try
            {
                //SaleModel üstünde ki Products nesnesine bir item eklenir..
                saleModel.Products.Add(new Product
                {
                    Barcode = txtProductBarcode.Text,
                    Quantity = Convert.ToInt32(txtProductQuantity.Text),
                    Price = Convert.ToDecimal(txtProductPrice.Text),
                    Name = txtProductName.Text
                });

                //Genel toplamları yazması için yeniden hesapla methodumuz..
                ReCalculete();
                //Girmiş olduğumuz verilerin temizlenmesi methodumuz..
                Clear();

            }
            catch (Exception)
            {

                MessageBox.Show("Ürün eklerken hata oluştu");
            }

        }

Yukarda görüldüğü gibi Products nesnesimize Product tipinde bir item ekliyoruz. Bu itemların eklenmesi sonucunda çıkan listenin toplamları bizim ürünlerimizi yani sepetimizi oluşturuyor. Aynı zamanda ilave olarak kullandığımız iki tane methodu var. Bu methodlarında işlevleri summery halinde yazılı.

  	
        // SaleModel üzerine eklenilen ürünlerin toplamlarını ilgili kontrollere yazar..
        public void ReCalculete()
        {
            lblTotalQuantity.Text = saleModel.TotalQuantity.ToString();
            lblGrandTotal.Text = saleModel.GrandTotal.ToString();
            lblProductNames.Text = string.Join(",", saleModel.Products.Select(v => v.Name));

        }
        // Ürün eklendikten sonra dataların girildiği Textboxları temizler..
        public void Clear()
        {

            txtProductBarcode.Text = string.Empty;
            txtProductName.Text = string.Empty;
            txtProductPrice.Text = string.Empty;
            txtProductQuantity.Text = string.Empty;
        }

Windows Application'da postback sorunu olmadığı için nesnemiz sürekli elimizde. Ürün ekleme işlemlerimden sonra istersek sayfaya yazdırırız. İstersek server tarafına gönderip veritabanına kayıt işlemi yapabiliriz.

 

Yorum Yaz