C# ön muhasebe programı geliştirme süreci, özellikle masaüstü uygulama mimarisini ve veri tabanı yönetimini öğrenmek isteyen yazılımcılar için harika bir temel oluşturur. Bu makalede paylaştığım Access veritabanı proje dosyası sayesinde, temel stok takip işlemlerinden cari hesap yönetiminde kullanılan kod yapılarına kadar dinamik bir otomasyon sisteminin işleyiş mantığını adım adım inceleyebilirsiniz.
C# ile Ön Muhasebe Programı Yapımı (Access Veritabanı Proje Dosyası)
Merhaba değerli yazılımcılar ve programlama meraklıları,
Uzun bir aradan sonra, arşivimde yer alan ve özellikle masaüstü uygulama geliştirmeye (Windows Forms) yeni başlayanların veya kendisini bu alanda geliştirmek isteyenlerin çok işine yarayacağını düşündüğüm kapsamlı bir projeyi sizlerle paylaşıyorum: C# Ön Muhasebe Otomasyonu.
Bu makalede, veri tabanı mimarisi olarak MS Access kullanan, tamamen açık kaynak kodlu ve geliştirilmeye açık bu ön muhasebe projesinin detaylarını inceleyeceğiz. Amacım, kod yapılarını inceleyerek kendi projelerinize entegre edebileceğiniz mantığı kavramanıza yardımcı olmak.
Projenin Öne Çıkan Özellikleri ve Modülleri
Geliştirdiğim bu ön muhasebe otomasyonu, bir işletmenin temel finansal ve stok operasyonlarını yönetebilecek esneklikte tasarlanmıştır. İhtiyacınıza göre kodlar üzerinde ekleme-çıkarma yapabilir, veri tabanı mimarisini Access’ten SQL Server’a kolayca taşıyabilir ya da projeyi tamamen VB.NET (Visual Basic) diline dönüştürebilirsiniz.
Proje içerisinde yer alan temel modüller şunlardır:
- Kullanıcı Giriş Sistemi (Login): Yetkisiz erişimleri engellemek amacıyla güvenli giriş paneli.
- Stok Kontrol Yönetimi: Stok ekleme, silme, güncelleme ve detaylı arama (filtreleme) fonksiyonları.
- Hareketler (Log Sistemi): Sistem üzerinde yapılan işlemlerin geçmişe dönük takibi.
- Cari İşlemler Yönetimi: Müşteri ve tedarikçi hesaplarının yönetimi (Ekle, Sil, Güncelle, Ara).
- Gelişmiş Ajanda ve Not Sistemi: Aylık bazda dinamik not alma ve hatırlatıcı paneli.
- Raporlama Modülü: Verilerin analiz edilmesi ve çıktıya hazır hale getirilmesi.
- Entegre Araçlar: Sistem içerisinden çağrılabilen Hesap Makinesi.
- Canlı Döviz Takibi: Merkez Bankası (TCMB) XML servisinden anlık olarak Dolar ve Euro kurlarını çekme özelliği.
Öne Çıkan Teknik Yapı: C# Örnek Kod Analizi
Projenin ana yönetim formunda (Form2), MS Access veri tabanı bağlantısı (OleDbConnection), verilerin DataGridView üzerinde listelenmesi ve XML servisleri ile döviz kuru çekilmesi gibi kritik işlemler yer almaktadır.
Aşağıdaki kod bloğundan projenin kodlama standardını ve işleyiş mantığını inceleyebilirsiniz:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Diagnostics;
using System.Xml;
namespace OnMuhasebeOtomasyonu
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
// Dinamik tablolarımızı ve MS Access bağlantı dizesini tanımlıyoruz
public DataTable tablo = new DataTable();
public DataTable tablo2 = new DataTable();
public OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=datam.accdb");
private void button1_Click(object sender, EventArgs e)
{
// Anasayfadaki panel geçişlerinin ayarlanması
panel2.Hide();
panel1.Show();
panel3.Hide();
}
private void button2_Click(object sender, EventArgs e)
{
// Stok kayıt formuna geçiş
Form3 FRM3 = new Form3();
FRM3.Show();
}
// Stok Bilgilerini Veritabanından Çekip Listeleme Fonksiyonu
public void listele()
{
try
{
tablo.Clear(); // Tabloyu temizle
bag.Open(); // Bağlantıyı aç
OleDbDataAdapter adtr = new OleDbDataAdapter("select * From stokbil", bag);
adtr.Fill(tablo); // Stok verilerini DataTable'a doldur
dataGridView1.DataSource = tablo; // DataGridView'e aktar
adtr.Dispose();
bag.Close(); // Bağlantıyı güvenli şekilde kapat
try
{
// DataGridView Tasarım ve Başlık Düzenlemeleri
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.Columns[1].HeaderText = "STOK ADI";
dataGridView1.Columns[2].HeaderText = "STOK MODELİ";
dataGridView1.Columns[3].HeaderText = "STOK SERİNO";
dataGridView1.Columns[4].HeaderText = "STOK ADEDİ";
dataGridView1.Columns[5].HeaderText = "STOK TARİH";
dataGridView1.Columns[6].HeaderText = "KAYIT YAPAN";
dataGridView1.Columns[7].HeaderText = "DOSYA ADI";
dataGridView1.Columns[8].HeaderText = "ÖLÇÜ BİRİMİ";
dataGridView1.Columns[9].HeaderText = "ALIŞ FİYAT";
dataGridView1.Columns[10].HeaderText = "SATIŞ FİYAT";
dataGridView1.Columns[0].Visible = false; // ID kolonunu gizle
dataGridView1.Columns[1].Width = 120;
dataGridView1.Columns[2].Width = 120;
dataGridView1.Columns[3].Width = 120;
dataGridView1.Columns[4].Width = 80;
dataGridView1.Columns[5].Width = 100;
dataGridView1.Columns[6].Width = 120;
}
catch { ; }
}
catch (Exception hata)
{
MessageBox.Show(hata.ToString());
}
}
// Aktif Ayın Notlarını Listeleme Fonksiyonu
void listeleNOT()
{
tablo2.Clear();
bag.Open();
OleDbDataAdapter adtr = new OleDbDataAdapter("select * From notlar WHERE month(gtarih)='" + DateTime.Now.Month + "'", bag);
adtr.Fill(tablo2);
dataGridView2.DataSource = tablo2;
adtr.Dispose();
bag.Close();
dataGridView2.Columns[1].HeaderText = "NOT ADI";
dataGridView2.Columns[2].HeaderText = "NOT İÇERİĞİ";
dataGridView2.Columns[3].HeaderText = "NOT KAYIT TARİHİ";
dataGridView2.Columns[4].HeaderText = "NOT GÖSTERİM TARİHİ";
dataGridView2.Columns[2].Width = 300;
dataGridView2.Columns[4].Width = 140;
dataGridView2.Columns[3].Width = 140;
dataGridView2.Columns[0].Visible = false;
}
// TCMB Üzerinden Canlı Döviz Kuru Çekme Fonksiyonu
void dovizdoldur()
{
try
{
XmlDocument xmlVerisi = new XmlDocument();
xmlVerisi.Load("http://www.tcmb.gov.tr/kurlar/today.xml");
decimal dolar = Convert.ToDecimal(xmlVerisi.SelectSingleNode("Tarih_Date/Currency[@Kod='USD']/ForexSelling").InnerText.Replace('.', ','));
decimal Euro = Convert.ToDecimal(xmlVerisi.SelectSingleNode("Tarih_Date/Currency[@Kod='EUR']/ForexSelling").InnerText.Replace('.', ','));
label1.Text = dolar.ToString("C2");
label2.Text = Euro.ToString("C2");
}
catch
{
label1.Text = "Bağlantı Hatası";
label2.Text = "Bağlantı Hatası";
}
}
private void Form2_Load(object sender, EventArgs e)
{
dovizdoldur();
listeleNOT();
listele();
// Geçmiş hareketleri log listesine doldurma
OleDbCommand cmd = new OleDbCommand();
bag.Open();
cmd.Connection = bag;
cmd.CommandText = "SELECT * FROM hareket";
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
listBox1.Items.Add(dr["hareket"].ToString() + " - " + dr["tarih"].ToString() + " - " + dr["kullanici"].ToString());
}
bag.Close();
}
// Windows Hesap Makinesini Çağırma Fonksiyonu
private void button8_Click(object sender, EventArgs e)
{
Process process = new Process();
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", "/C calc");
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
process = Process.Start(processInfo);
process.WaitForExit();
process.Close();
}
private void çıkışToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Bizi Tercih Ettiğiniz İçin Teşekkür Ederiz!");
Application.Exit();
}
// Form Geçişleri ve Menü Yönetimleri...
private void button3_Click(object sender, EventArgs e) { Form4 frm4 = new Form4(); frm4.Show(); }
private void button4_Click(object sender, EventArgs e) { Form5 frm5 = new Form5(); frm5.Show(); }
private void button6_Click(object sender, EventArgs e) { Form6 frm6 = new Form6(); frm6.Show(); }
private void button7_Click(object sender, EventArgs e) { Form7 frm7 = new Form7(); frm7.Show(); }
private void stokEklemeToolStripMenuItem_Click(object sender, EventArgs e) { Form3 frm3 = new Form3(); frm3.Show(); }
private void cariİşlemlerToolStripMenuItem_Click(object sender, EventArgs e) { Form5 frm5 = new Form5(); frm5.Show(); }
private void ajandaToolStripMenuItem_Click(object sender, EventArgs e) { Form6 frm6 = new Form6(); frm6.Show(); }
private void raporlarToolStripMenuItem_Click(object sender, EventArgs e) { Form7 frm7 = new Form7(); frm7.Show(); }
private void button11_Click(object sender, EventArgs e) { kullanici musteri = new kullanici(); musteri.Show(); this.Hide(); }
private void button10_Click_1(object sender, EventArgs e) { kasa_Hesap_takip kasa = new kasa_Hesap_takip(); kasa.Show(); this.Hide(); }
private void button12_Click(object sender, EventArgs e) { cek_Senet cek = new cek_Senet(); cek.Show(); this.Hide(); }
}
}
Proje Kaynak Kodlarını İndir
Uygulamanın tam kaynak kodlarını, MS Access veritabanı şemasını (.accdb dosyası) ve açıklama satırları eklenmiş tüm form dosyalarını aşağıdaki güvenli bağlantı üzerinden indirebilirsiniz.
Proje üzerinde dilediğiniz gibi değişiklik yapabilir, ticari ya da akademik çalışmalarınızda altyapı olarak kullanabilirsiniz.
🔗 C# Ön Muhasebe Otomasyonu Proje Dosyasını İndir (Yandex Disk)
Proje ile ilgili sorularınızı, takıldığınız yerleri veya eklenmesini istediğiniz özellikleri bana aşağıdaki yorumlar bölümünden iletebilirsiniz. İyi çalışmalar ve bol kodlu günler dilerim!