Site simgesi Akbuz

C# Benzin istasyonu otomasyonu Kaynak Kodları Proje Dosyası Access veritabanı

C# Benzin İstasyonu Otomasyonu

C# Benzin İstasyonu Otomasyonu Kaynak Kodları ve Access Veritabanı projesi, Windows Forms (WinForms) mimarisini öğrenmek ve dönem ödevlerini tamamlamak isteyen yazılım öğrencileri için pratik bir masaüstü referansıdır. Bu çalışmada, akaryakıt otomasyonu süreçlerinde yer alan CRUD (Ekle, Sil, Güncelle, Listele) operasyonlarının C# ve yerel Access veritabanı entegrasyonu ile nasıl yapıldığını teknik boyutuyla ele alıyoruz. Harici bir DLL bağımlılığı barındırmayan ve tamamen açık kaynak kodlu olarak paylaşılan bu benzin istasyonu otomasyonu kaynak kodları, dinamik fiyat hesaplama ve depo stok takibi gibi temel yazılım mantıklarını kavramak için ideal bir eğitim materyalidir.

C# Benzin İstasyonu Otomasyonu Kaynak Kodları ve Access Veritabanı Projesi

Özellikle dönem ödevi hazırlayan öğrenciler ve masaüstü yazılım mimarisini öğrenmek isteyen geliştiriciler için hazırlanan C# Benzin İstasyonu Otomasyonu kaynak kod projesi, Windows Forms tabanlı pratik çözümler sunmaktadır. Bu çalışmada, bir akaryakıt otomasyonu mimarisinde bulunması gereken CRUD (Ekle, Sil, Güncelle, Listele) süreçlerinin Access veritabanı ile entegre bir şekilde C# dili üzerinden nasıl kurgulandığını teknik hatlarıyla ele alıyoruz. Tamamen açık kaynaklı paylaşılan bu benzin istasyonu otomasyonu kaynak kodları, sade tasarımı ve harici kütüphane (DLL) bağımlılığı bulundurmayan yapısıyla temel programlama mantığı için kusursuz bir eğitim materyalidir.

Açık Kaynak Proje Paylaşımının Amaçları

Bu tarz otomasyon ve kaynak kod yapılarının açık kaynak olarak topluluğa sunulmasının temel nedenleri şunlardır:

  • Yazılım öğrencilerine güvenilir ve çalışan alternatif referans mimariler sunarak hatalı kodlama alışkanlıklarının önüne geçmek.
  • Masaüstü otomasyon projelerinin mantıksal süreçlerinin sanıldığı kadar karmaşık olmadığını pratik örneklerle göstermek.
  • Geliştirici topluluklarına ücretsiz ve doğrudan entegre edilebilir eğitim dökümanları kazandırmak.
⚡

Öne Çıkan Modüller

Proje bünyesinde temel veri yönetim işlemlerine ek olarak şu fonksiyonlar yer almaktadır:

  • Alınan litreye göre dinamik fiyat hesaplama
  • Toplam ücrete göre yakıt miktarı analizi
  • Anlık depo kalan yakıt miktarı takibi
💾

Kaynak Kod İndir

Windows Forms dosyası, tasarım arayüzü ve MS Access (.accdb) veritabanı paket halindedir.

Otomasyonu İndir (Yandex.Disk)
Destek Rica: Paylaşımların kesintisiz devam edebilmesi adına, web sitemizi ziyaret ederken reklam engelleyici (AdBlock) yazılımlarınızı devre dışı bırakarak destek sağlayabilirsiniz.

Teknik Altyapı ve Veri Erişim Katmanı

Framework / UI .NET Framework / Windows Forms (WinForms)
Veri Kütüphanesi System.Data.OleDb Sınıfı
Yerel Depolama benzin_istasyonu.accdb (Microsoft Access)

Akaryakıt İşlemleri Çirdek Kod Yapısı (C#)

Depo kontrolü, akaryakıt ekleme, silme ve güncelleme operasyonlarını yöneten akaryakit_islemleri.cs dosyasına ait arka plan kaynak kodları:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Benzin_istanyonu_otomasyonu
{
    public partial class akaryakit_islemleri : Form
    {
        public akaryakit_islemleri()
        {
            InitializeComponent();
        }

        // StartupPath kullanılarak veritabanı dosyasının taşınabilirliği optimize edilmiştir
        OleDbConnection baglan = new OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" + Application.StartupPath + "\\benzin_istasyonu.accdb");
        DataTable tablo = new DataTable();

        public void listele()
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            
            tablo.Clear();
            baglan.Open();
            OleDbDataAdapter adtr = new OleDbDataAdapter("select * from depo", baglan);
            adtr.Fill(tablo);
            dataGridView1.DataSource = tablo;
            dataGridView1.Columns[0].Visible = false; // ID sütununu gizleme
            baglan.Close();
        }

        private void akaryakit_islemleri_Load(object sender, EventArgs e)
        {
            listele();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Yeni Akaryakıt Kayıt İşlemi
            if (baglan.State == ConnectionState.Open)
            {
                baglan.Close();
            }
            baglan.Open();

            OleDbCommand kmt;
            kmt = new OleDbCommand("INSERT INTO depo(akaryakit_adi,litre_fiyati,depo_kalan) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')", baglan);
            kmt.ExecuteNonQuery();
            baglan.Close();
            
            MessageBox.Show("Kayıt Başarılı", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
            listele();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // Seçili Akaryakıt Kayıt Silme İşlemi
            OleDbCommand kmt;
            baglan.Open();
            kmt = new OleDbCommand("Delete from depo where akaryakit_adi = '" + dataGridView1.CurrentRow.Cells[1].Value.ToString() + "'", baglan);
            kmt.ExecuteNonQuery();
            kmt.Dispose();
            baglan.Close();
            
            MessageBox.Show("İşleminiz başarılı", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
            listele();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            // Akaryakıt Fiyat ve Stok Güncelleme İşlemi
            OleDbCommand kmt;
            baglan.Open();
            kmt = new OleDbCommand("UPDATE depo SET akaryakit_adi='" + textBox1.Text + "',litre_fiyati='" + textBox2.Text + "',depo_kalan='" + textBox3.Text + "' where akaryakit_adi='" + dataGridView1.CurrentRow.Cells[1].Value.ToString() + "'", baglan);
            kmt.ExecuteNonQuery();
            baglan.Close();
            
            MessageBox.Show("İşleminiz başarılı", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
            listele();
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            // Tablodan tıklanan satır verilerini form alanlarına otomatik doldurma
            textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
            textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
            textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            this.Hide(); // Pencereyi gizleme
        }

        private void button5_Click(object sender, EventArgs e)
        {
            // Akaryakıt Adına Göre Filtreleme ve Arama İşlemi
            tablo.Clear();
            baglan.Open();
            OleDbDataAdapter adtr = new OleDbDataAdapter("select * from depo where akaryakit_adi='" + textBox4.Text + "'", baglan);
            adtr.Fill(tablo);
            dataGridView1.DataSource = tablo;
            dataGridView1.Columns[0].Visible = false;
            baglan.Close();
            textBox4.Text = "";
        }
    }
}

Teknik Kod Analizi ve Refaktör Önerileri

1. SQL Injection Güvenlik Açığı

Projedeki arama ve kayıt sorgularında uygulanan inline metot birleştirmeleri ('" + textBox1.Text + "'), SQL Injection zafiyetine zemin hazırlar. Kurumsal ve güvenli yapılarda bunun yerine kesinlikle Parameters.AddWithValue() yapısı kullanılmalıdır.

2. Kaynak Yönetimi ve Blok Yapısı

Oluşturulan OleDbCommand ve bağlantı nesneleri istisnai bir hata durumunda bellek üzerinde açık kalabilir. Garbage Collector’ın (Bellek Boşaltıcı) bu nesneleri runtime esnasında otomatik imha edebilmesi adına veri tabanı bağlantı süreçleri using() blokları içine taşınmalıdır.

Açık kaynak kodlu yeni otomasyon serileri, C# Windows Forms projeleri ve güncel yazılım dökümanları için sitemizin Otomasyon Projeleri kategorisini takip etmeye devam edin.

Mobil sürümden çık