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:
- Araç girişinde kayıt oluşturulur.
- Giriş saati veritabanına kaydedilir.
- Araç çıkışında mevcut saat alınır.
- Giriş ve çıkış saatleri arasındaki fark hesaplanır.
- 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