C# Windows Form Stok Takip Programı

Bu proje, temel bir stok takip sistemi oluşturmak için C# Windows Forms kullanımını gösterir. Program, ürün ekleme, stok durumunu takip etme ve filtreleme özelliklerini içerir.

Program Özellikleri

İstatistikler: Toplam ürün sayısı, stokta olan/olmayan ürün sayıları

Ürün Ekleme: Kullanıcılar ürün adı, kategori, fiyat ve stok miktarı girebilir

Stok Durumu Takibi: Stokta olan ve olmayan ürünler ayrı ayrı listelenir

Filtreleme: Sadece stokta olmayan ürünleri görüntüleme özelliği

using System;
using System.Windows.Forms;

namespace UrunStokTakip
{
    public partial class Form1 : Form
    {
        // Ürün bilgilerini tutacak diziler
        private string[] urunAdlari = new string[100];
        private string[] kategoriler = new string[100];
        private decimal[] fiyatlar = new decimal[100];
        private int[] stokAdetleri = new int[100];
        private int urunSayisi = 0;

        public Form1()
        {
            InitializeComponent();
            
            // DataGridView sütunlarını ayarla
            dataGridView1.Columns.Add("UrunAdi", "Ürün Adı");
            dataGridView1.Columns.Add("Kategori", "Kategori");
            dataGridView1.Columns.Add("Fiyat", "Fiyat");
            dataGridView1.Columns.Add("Stok", "Stok Adeti");
            
            // Başlangıçta 3 örnek ürün ekle
            urunAdlari[0] = "Biskini";
            kategoriler[0] = "Gıda";
            fiyatlar[0] = 30;
            stokAdetleri[0] = 500;
            
            urunAdlari[1] = "Telefon";
            kategoriler[1] = "Teknoloji";
            fiyatlar[1] = 48000;
            stokAdetleri[1] = 10;
            
            urunAdlari[2] = "TV";
            kategoriler[2] = "Teknoloji";
            fiyatlar[2] = 30000;
            stokAdetleri[2] = 0;
            
            urunSayisi = 3;
            
            // DataGridView'i güncelle
            for (int i = 0; i < urunSayisi; i++)
            {
                dataGridView1.Rows.Add(urunAdlari[i], kategoriler[i], fiyatlar[i], stokAdetleri[i]);
            }
            
            // İstatistikleri güncelle
            int stoktaOlan = 0;
            int stoktaOlmayan = 0;
            
            for (int i = 0; i < urunSayisi; i++)
            {
                if (stokAdetleri[i] > 0)
                {
                    stoktaOlan++;
                }
                else
                {
                    stoktaOlmayan++;
                }
            }
            
            lblToplamUrun.Text = urunSayisi.ToString();
            lblStoktaOlan.Text = stoktaOlan.ToString();
            lblStoktaOlmayan.Text = stoktaOlmayan.ToString();
        }

        private void btnEkle_Click(object sender, EventArgs e)
        {
            try
            {
                if (urunSayisi < urunAdlari.Length)
                {
                    urunAdlari[urunSayisi] = txtUrunAdi.Text;
                    kategoriler[urunSayisi] = txtKategori.Text;
                    fiyatlar[urunSayisi] = Convert.ToDecimal(txtFiyat.Text);
                    stokAdetleri[urunSayisi] = Convert.ToInt32(txtStok.Text);
                    urunSayisi++;
                    
                    // DataGridView'i güncelle
                    dataGridView1.Rows.Clear();
                    for (int i = 0; i < urunSayisi; i++)
                    {
                        dataGridView1.Rows.Add(urunAdlari[i], kategoriler[i], fiyatlar[i], stokAdetleri[i]);
                    }
                    
                    // İstatistikleri güncelle
                    int stoktaOlan = 0;
                    int stoktaOlmayan = 0;
                    
                    for (int i = 0; i < urunSayisi; i++)
                    {
                        if (stokAdetleri[i] > 0)
                        {
                            stoktaOlan++;
                        }
                        else
                        {
                            stoktaOlmayan++;
                        }
                    }
                    
                    lblToplamUrun.Text = urunSayisi.ToString();
                    lblStoktaOlan.Text = stoktaOlan.ToString();
                    lblStoktaOlmayan.Text = stoktaOlmayan.ToString();
                    
                    // Formu temizle
                    txtUrunAdi.Clear();
                    txtKategori.Clear();
                    txtFiyat.Clear();
                    txtStok.Clear();
                }
                else
                {
                    MessageBox.Show("Maksimum ürün sayısına ulaşıldı!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Hata: " + ex.Message);
            }
        }

        private void btnStoktaOlanlar_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            
            for (int i = 0; i < urunSayisi; i++)
            {
                if (stokAdetleri[i] > 0)
                {
                    dataGridView1.Rows.Add(urunAdlari[i], kategoriler[i], fiyatlar[i], stokAdetleri[i]);
                }
            }
        }

        private void btnStoktaOlmayanlar_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            
            for (int i = 0; i < urunSayisi; i++)
            {
                if (stokAdetleri[i] <= 0)
                {
                    dataGridView1.Rows.Add(urunAdlari[i], kategoriler[i], fiyatlar[i], stokAdetleri[i]);
                }
            }
        }

        private void btnTumunuGoster_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            
            for (int i = 0; i < urunSayisi; i++)
            {
                dataGridView1.Rows.Add(urunAdlari[i], kategoriler[i], fiyatlar[i], stokAdetleri[i]);
            }
        }
    }
}

Kod Açıklaması:

  1. Diziler ve Değişkenler:
    • urunAdlari: Ürün adlarını tutan string dizisi
    • kategoriler: Kategori bilgilerini tutan string dizisi
    • fiyatlar: Fiyat bilgilerini tutan decimal dizisi
    • stokAdetleri: Stok miktarlarını tutan int dizisi
    • urunSayisi: Mevcut ürün sayısını tutan sayaç
  2. Form Load (Başlangıç):
    • DataGridView sütunları oluşturuluyor
    • 3 örnek ürün dizilere ekleniyor
    • DataGridView ve istatistikler güncelleniyor
  3. Ekle Butonu:
    • TextBox’lardan alınan veriler dizilere ekleniyor
    • DataGridView ve istatistikler yenileniyor
    • Hata kontrolü yapılıyor
  4. Filtreleme Butonları:
    • btnStoktaOlanlar: Sadece stok > 0 olan ürünleri gösterir
    • btnStoktaOlmayanlar: Sadece stok = 0 olan ürünleri gösterir
    • btnTumunuGoster: Tüm ürünleri gösterir
  5. İstatistik Güncelleme:
    • Her değişiklikte stok durumları yeniden hesaplanır
    • Toplam ürün, stokta olan ve olmayan sayıları güncellenir

Not: Bu kod, fonksiyon kullanmadan doğrudan buton click olaylarının içine yazılmıştır. Daha temiz bir kod için fonksiyonlara bölmek ve tekrar kullanılabilir hale getirmek önerilir.

Geliştirme Önerileri

  1. Veritabanı Entegrasyonu: SQL Server veya SQLite ile verilerin kalıcı olarak saklanması
  2. Kategori Yönetimi: Kategorilerin ayrı bir tabloda tutulması ve combobox’tan seçilmesi
  3. Ürün Güncelleme/Silme: Mevcut ürünlerin düzenlenebilmesi ve silinebilmesi
  4. Raporlama: Stok raporlarının oluşturulabilmesi
  5. Kullanıcı Yönetimi: Farklı yetkilerle kullanıcı girişi

Nasıl Kullanılır?

  1. Ürün bilgilerini ilgili alanlara girin
  2. “Ekle” butonuna basarak ürünü listeye ekleyin
  3. “Stokta Olmayanlar” butonu ile sadece stokta olmayan ürünleri görüntüleyin
  4. “Tümünü Göster” butonu ile tüm ürünleri görüntüleyin

Bu temel yapıyı geliştirerek daha kapsamlı bir stok takip sistemi oluşturabilirsiniz.

guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments