stok takip logo

Merhaba arkadaşlar, C# form serimize devam ediyor ve Stok Takip Uygulaması Geliştiriyoruz. Tabi çok teferruatlı olmayacak giriş seviyesi biri için güzel bir proje olabilir.

Öncelikle şunu belirtmek istiyorum. Proje ilk başta Firebase ile olacaktı. Fakat karşılaştığım hatalar ve firebase tarafındaki kısıtlamalardan dolayı Sql‘e geçiş yapmak zorunda kaldım. Bu projemizde MsSql üzerinde gerçekleşecektir. Bu yüzden MsSql kurulu olmalıdır. Kuramaz iseniz yazın yardımcı olurum 🙂

Uygulama Arayüzü

İlk olarak uygulama ne iş yapıyor ona bakalım. Daha sonra kodlama tarafına geçeriz. Ana Form üzerinde 4 buton bulunmaktadır. Formları eklemek için Solution penceresinden add –> Windows Form seçerek yapabilirsiniz.

Ana Form

C# form stok takip uygulaması ana ekranı

Ana form üzerinde 4 tane buton bulunuyor. Bunların 3 tanesi yeni bir form penceresi açıyor.

Stok Ekle

stok ekle formu

Burada bazı alanlar bulunuyor ,stok eklerken kullanılacağımız. Burada Ürün Kodunu Barkod gibi düşünebilirsiniz. Sql tarafında ek olarak ID’de tutacağız. Ürün alış ve satış fiyatlarında dilerseniz arka tarafta kod yazarak düzgün şekilde tutulmasını sağlayabilirsiniz. Ben firebase kullanırken nokta(.) kullandığımda onu kaldırararak ürün eklemesi yapıyordu bende alt kısıma label atıp kontrolünü sağladım.

Formu Temizle butonunu da ayrıca koydum. Bunu da dilerseniz stok ekleme işlemi bittikten sonra otomatik olarak silebilirsiniz.

Stoklar

stok takip formu

En kolay yapacağımız kısım burası. DataGridView‘ın özelliğini kullanarak direkt veri tabanını bağlayacağız.

Stok Güncelle

stok sil ve güncelle formu

Bu kısımda da ürün koduna göre o ürünün bilgilerini listeleyip güncelleme veya silme işlemi yapacağız. Aynı şekilde burada da formu temizle butonu bulunmaktadır.

Uygulamayı Kapat

Butona basınca uygulamayı kapatıyor.

Tasarım içerisinde daha önce anlattığım nesneleri kullandık. Harici bir şey DataGridView kullandık. Onu da kodlama kısmında anlatacağım.

Uygulama Kodları

Formları oluşturduğunuzu ve name alanlarını mantıklı şekilde doldurduğunuzu var sayıyorum ve butonlarla formları birleştirme kısmına geliyorum.

Her bir butona çift tıklayarak kod tarafında metotlarının açılmasını sağlıyorum. Ardından da formları örnekleyip ekranda göstermesi için ShowDialog() metodunu kullanıyoruz.

Form çağırma ve ekranda gösterme kodları

private void BtnStokEkle_Click(object sender, EventArgs e)
        {
            frmStokEkle stokEkle = new frmStokEkle(); //örnekleme
            stokEkle.ShowDialog(); //ekranda gösterme
        }

        private void BtnStoklar_Click(object sender, EventArgs e)
        {
            frmStoklar stoklar = new frmStoklar();
            stoklar.ShowDialog();
        }

        private void BtnStokGuncelle_Click(object sender, EventArgs e)
        {
            frmStokGuncelle stokGuncelle = new frmStokGuncelle();
            stokGuncelle.ShowDialog();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
// uygulama kapatma kodu
            Application.Exit();
        }

Bunları yaptıktan sonra sql bağlantıları için bir class(sınıf) oluşturuyoruz. Bunu da Solution penceresinde add –> Class diyerek açabilirsiniz. Ben adına sqlBaglanti adını verdim. Sizde istediğiniz adı verebilirsiniz.

Buradaki kodların tamamı aşağıda yer almaktadır. Anlatımına kodların altında devam edeceğim.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using stokTakipBasit_vs2019.Model;

namespace stokTakipBasit_vs2019.Baglanti
{
    public class SqlBaglanti
    {

        SqlConnection baglanti = new SqlConnection("Data Source=DESKTOP-ATHREF5;Initial Catalog=stokTakip;Integrated Security=True");


        public void sqlUrunEkle(int urunKod, string urunAdi, int adet, double alisfiyat, double satisFiyat)
        {
            string ekle = "INSERT INTO stoklar(urunKod,urunAdi,adet,alisFiyat,satisFiyat) " +
                "values (@urunKod, @urunAdi, @adet, @alisFiyat, @satisFiyat)";

            baglanti.Open();
            SqlCommand komut = new SqlCommand();
            komut = new SqlCommand(ekle, baglanti);

            komut.Connection = baglanti;
            komut.Parameters.AddWithValue("@urunKod", urunKod);
            komut.Parameters.AddWithValue("@urunAdi", urunAdi);
            komut.Parameters.AddWithValue("@adet", adet);
            komut.Parameters.AddWithValue("@alisFiyat", alisfiyat);
            komut.Parameters.AddWithValue("@satisFiyat", satisFiyat);

            komut.ExecuteNonQuery();
            baglanti.Close();


        }

        public void sqlUrunGuncelle(int urunKod, string urunAdi, int adet, double alisfiyat, double satisFiyat)
        {
            baglanti.Open();
            string guncelle = "Update stoklar set urunAdi= @urunAdi, adet = @adet, alisFiyat = @alisFiyat, " +
                "satisFiyat = @satisFiyat Where urunKod=@urunKod";

            SqlCommand komut = new SqlCommand();
            komut = new SqlCommand(guncelle, baglanti);

            komut.Connection = baglanti;
            komut.Parameters.AddWithValue("@urunKod", urunKod);
            komut.Parameters.AddWithValue("@urunAdi", urunAdi);
            komut.Parameters.AddWithValue("@adet", adet);
            komut.Parameters.AddWithValue("@alisFiyat", alisfiyat);
            komut.Parameters.AddWithValue("@satisFiyat", satisFiyat);

            komut.ExecuteNonQuery();
            baglanti.Close();
        }

        public void sqlUrunSil(int urunKod)
        {
            baglanti.Open();

            string sil = "DELETE stoklar Where urunKod = @urunKod";
            SqlCommand komut = new SqlCommand();
            komut = new SqlCommand(sil, baglanti);

            komut.Connection = baglanti;
            komut.Parameters.AddWithValue("@urunKod", urunKod);

            komut.ExecuteNonQuery();
            baglanti.Close();
        }


    }
}

İlk olarak SqlConnection sınıfı ile sql bağlantımızı ekliyoruz. Bunu daha önce burada  detaylı şekilde anlattım. Tekrar bağlantı string’i çekmeyi göstermeyeceğim.

Daha sonra; Ekle, sil ve güncelle metotlarını oluşturduktan sonra sql sorgusunu bir string ile tutuyoruz. Daha sonra SqlCommand yardımı ile bu komutları ilk başta oluşturduğumuz bağlantıya çalıştırmak üzere gönderiyoruz. Burada ‘@’ ile verdiğimiz parametreleri düzgün bir şekilde girmeniz gerekmektedir. Eğer bir harf hatası yaparsanız bulmanız biraz zaman alabilir.

Şimdi de Stok Ekleme formuna geçelim.

Stok Ekleme Kodları

Oluşturmuş olduğumuz sqlBaglanti sınıfından yeni bir örnek oluşturup onun içerisinden urunEkle metodunu çağırıp içine sadece textbox’larda bulunan verileri göndermek kalıyor. Kodları aşağıda görsel olarak verilmiştir.

ürün ekle butonu kodları

Yukarıdaki görselde formu temizle butonunun içeriği de görülmektedir. Burada kodlarınızı try-catch blokları arasında yazarsanız uygulamanın patlamasına engel olabilirsiniz.

Stok Güncelleme Formu Kodları

Burada bir ürünKodu girildiğinde ürün bilgilerini getirip daha sonra üzerinde değişikler yapmamız gerek. Bunun içinde metotların üst kısmında yine bağlantı yapmamız gerekiyor. Bunu da sqlBaglanti sınıfında yapabilirsiniz. Yapacağımız iş basit olduğundan ben burada çağırmak istedim.

SqlConnection sqlBaglanti = new SqlConnection(“__sql bağlantınızı buraya ekleyiniz__”);

Bunu da form üzerinde bulunan getir butonu ile çağırıp ürünleri listeleyelim. Görseli aşağıda verilmiştir.

ürün koduna göre ürün bilgilerini getirme

Veritabanımızdan verileri okumak için burada SqlDataReader sınıfını kullandık. Daha sonra Read() metodu ile sorgu sonucunu textbox’lara döndük.

Güncelle butonunun kodları da aşağıdaki görselde mevcuttur.

stok güncelle butonu

Burada da sqlBaglanti sınıfını örnekleyip oradan urunGuncelle metoduna parametreleri gönderdik.

Sil butonuna gelirsek orada da aynı şekilde sqlBaglanti sınıfından urunSil metodunu çağırıp içerisine urunkodunu veriyoruz. Görseli aşağıdaki gibidir.

sil butonu kodları

Güncelle formumuz da bu kadar. Şimdi son olarak ürünleri dataGridView ile göstermek kaldı.

Stoklar Listesi Formu

DataGridView’ı ekledikten sonra sağ üst kısmında bulunan küçük ok’a bastıktan sonra Choose Data Source (Veri Kaynağı Seç) kısmına gelip açılan pencerede en alt kısımda Add Project Data Source‘a tıklıyoruz.

Database –> Dataset –> Burada eklemek istediğiniz veritabanını seçiniz.

Eğer gözükmüyor ise New Connection’a tıklayıp devam ediniz. Açılan pencereden Server Name kısmına server adınızı yazınız. Eğer bilmiyorsanız Sql üzerinden Properties kısmından bulabilirsiniz. Bu aşamadan sonra alt kısımda bulunan ‘Select or enter a database name’ yazan yerden kullanmak istediğiniz veritabanını seçiniz. Sonra önceki adıma geri gelebilirsiniz.

 

Veritabanınızı seçtikten sonra Next’e basınız. Gelen sayfadan Tables –> stoklar –> ‘hepsini seçebilirsiniz’

datagrid'e veri çekme

Kullanmak istediğiniz alanları seçtikten sonra Finish’e tıklayınız. İşlem bu kadar. Kod yazmadan stokları çekebiliyoruz bu sayede.

Şimdi gelelim Programın çalışır haline. Bu kısmı video halinde youtube’a ekleyeceğim. Aşağıdaki bağlantı ile izleyebilirsiniz.

Umarım faydalı olmuştur. Anlamadığınız yeri sorabilirsiniz.

Bunlara Göz Atmak İsteyebilirsiniz

14 thoughts on “Stok Takip Uygulaması

  1. epostanıza yazdım iletişim için uygulamayı atarsanız sevinirim teşekkürler dosya halinde iletirseniz cok sevinirim

    1. Merhaba kardeşim, e-postana geri dönüş yapıldı mı acaba? Ben de bu konuda yardım istedim ama.

  2. İyi günler bana yardımcı olursanız çok sevinirim final ödevi olarak stok takip otomasyonu verildi ve ben tasarimini yapıyorum fakat kodlmada hep hata veriyor sizden bu projeyi nasıl temin edebilirim

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir