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ı:
- Diziler ve Değişkenler:
urunAdlari
: Ürün adlarını tutan string dizisikategoriler
: Kategori bilgilerini tutan string dizisifiyatlar
: Fiyat bilgilerini tutan decimal dizisistokAdetleri
: Stok miktarlarını tutan int dizisiurunSayisi
: Mevcut ürün sayısını tutan sayaç
- Form Load (Başlangıç):
- DataGridView sütunları oluşturuluyor
- 3 örnek ürün dizilere ekleniyor
- DataGridView ve istatistikler güncelleniyor
- Ekle Butonu:
- TextBox’lardan alınan veriler dizilere ekleniyor
- DataGridView ve istatistikler yenileniyor
- Hata kontrolü yapılıyor
- Filtreleme Butonları:
btnStoktaOlanlar
: Sadece stok > 0 olan ürünleri gösterirbtnStoktaOlmayanlar
: Sadece stok = 0 olan ürünleri gösterirbtnTumunuGoster
: Tüm ürünleri gösterir
- İ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
- Veritabanı Entegrasyonu: SQL Server veya SQLite ile verilerin kalıcı olarak saklanması
- Kategori Yönetimi: Kategorilerin ayrı bir tabloda tutulması ve combobox’tan seçilmesi
- Ürün Güncelleme/Silme: Mevcut ürünlerin düzenlenebilmesi ve silinebilmesi
- Raporlama: Stok raporlarının oluşturulabilmesi
- Kullanıcı Yönetimi: Farklı yetkilerle kullanıcı girişi
Nasıl Kullanılır?
- Ürün bilgilerini ilgili alanlara girin
- “Ekle” butonuna basarak ürünü listeye ekleyin
- “Stokta Olmayanlar” butonu ile sadece stokta olmayan ürünleri görüntüleyin
- “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.