Basit C# Otopark Otomasyonu Access Veritabanı Proje Dosyası ve Kaynak Kodu

Bu yazıda, daha önce geliştirdiğim basit bir C# Otopark Otomasyonu projesini paylaşıyorum. Proje eski bir çalışmadır ve bazı eksikleri/hataları bulunabilir. Ancak özellikle lise ve üniversite seviyesinde proje yapanlar için referans alınabilecek temel bir örnek olması amacıyla paylaşılmıştır.

C# Otopark Otomasyonu (Access Veritabanlı Örnek Proje)

📌 Proje Hakkında

  • Programlama dili: C#
  • Veritabanı: Microsoft Access
  • Yapı: Windows Forms
  • Amaç: Araç giriş-çıkış takibi ve saat bazlı ücret hesaplama

Bu sistem, araçların giriş ve çıkış saatlerini kaydederek geçen süreye göre ücret hesaplaması yapar.

Örneğin:

  • Araç giriş: 13:00
  • Araç çıkış: 00:00
  • Süre: 11 saat
  • Saatlik ücret: 5 TL
  • Toplam ücret: 55 TL

Not: Saatlik ücret bilgisi veritabanı üzerinden değiştirilebilir.


⚙️ Proje Özellikleri

  • Araç giriş kaydı ekleme
  • Plaka üzerinden araç arama
  • Araç çıkış işlemi
  • Saat bazlı ücret hesaplama
  • Microsoft Access veritabanı ile veri saklama
  • DataGridView ile kayıt listeleme

🧠 Çalışma Mantığı

Sistem temel olarak şu şekilde çalışır:

  1. Araç girişinde kayıt oluşturulur.
  2. Giriş saati veritabanına kaydedilir.
  3. Araç çıkışında mevcut saat alınır.
  4. Giriş ve çıkış saatleri arasındaki fark hesaplanır.
  5. Geçen süre × saatlik ücret = toplam tutar.

💻 Örnek C# Kodları

Aşağıda projenin temel fonksiyonlarını içeren örnek kodlar bulunmaktadır:

DateTime deger;
OleDbConnection con;
OleDbDataAdapter adap;
OleDbCommand cmd;
DataSet dset;

📊 Verileri Listeleme

void griddoldur()
{
con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=otopark.accdb");
adap = new OleDbDataAdapter("select * from otomasyon", con);
dset = new DataSet();

con.Open();
adap.Fill(dset, "otomasyon");
con.Close();

dataGridView1.DataSource = dset.Tables["otomasyon"];

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.Columns[0].Visible = false;
dataGridView1.RowHeadersVisible = false;
}

🔍 Plaka ile Arama

private void textBox1_TextChanged(object sender, EventArgs e)
{
con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=otopark.accdb");
con.Open();

DataTable dt = new DataTable();
OleDbDataAdapter ad = new OleDbDataAdapter(
"SELECT * FROM otomasyon WHERE plaka LIKE '%" + textBox1.Text + "%'", con);

ad.Fill(dt);
dataGridView1.DataSource = dt;

con.Close();
button1.Enabled = true;
}

🚗 Araç Çıkış ve Ücret Hesaplama

private void button1_Click(object sender, EventArgs e)
{
DateTime zaman = DateTime.Now;

int tutar = deger.Hour - zaman.Hour;
tutar = Math.Abs(tutar);

int fiyat = tutar * 5;

cmd = new OleDbCommand();
con.Open();
cmd.Connection = con;

cmd.CommandText =
"UPDATE otomasyon SET ucret='" + fiyat +
"', cikis_saati='" + zaman +
"' WHERE plaka='" + textBox1.Text + "'";

cmd.ExecuteNonQuery();
con.Close();

griddoldur();

MessageBox.Show(tutar + " saat kalmıştır", "Bilgilendirme");
label8.Text = fiyat + " TL tutmuştur, " + tutar + " saat hesaplanmıştır";
}

➕ Araç Giriş Kaydı

private void button4_Click_1(object sender, EventArgs e)
{
DateTime zaman = DateTime.Now;
bsaat.Text = zaman.ToShortTimeString();

cmd = new OleDbCommand();
con.Open();
cmd.Connection = con;

cmd.CommandText =
"INSERT INTO otomasyon (adi_soyadi, plaka, telno, giris_saati, cikis_saati) " +
"VALUES ('" + adtxt.Text + "','" + textBox3.Text + "','" +
maskedTextBox1.Text + "','" + bsaat.Text + "','" + textBox2.Text + "')";

cmd.ExecuteNonQuery();
con.Close();

griddoldur();
}

🖱️ Grid Üzerinden Veri Seçme

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
deger = DateTime.Parse(
dataGridView1.CurrentRow.Cells["giris_saati"].Value.ToString()
);

textBox1.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
}

⚠️ Geliştirme Notları

Bu proje eğitim amaçlıdır ve geliştirmeye açıktır:

  • SQL Injection riski mevcut
  • Saat hesaplama sadece “Hour” bazlı (dakika yok)
  • Kod yapısı modern değil (MVC / Layered architecture yok)
  • Veritabanı bağlantıları optimize edilebilir
  • Exception handling eksik

🚀 Sonuç

Bu proje, özellikle C# Windows Forms ve Access veritabanı öğrenenler için iyi bir başlangıç örneğidir. Basit mantığı sayesinde:

  • CRUD işlemleri
  • Event tabanlı programlama
  • Veritabanı bağlantısı
  • Temel iş mantığı

konularını öğrenmek için kullanılabilir.

İndirme Linki: https://yadi.sk/d/ixh49ZjBBLwvGA