C# Otopark Otomasyonu

C# Otopark Takip Otomasyonu Access Versiyonu Kodları

C# Access ile örnekler arayanlar.Otopark otomasyonu kaynak kodlarıyla beraber sizlerle. Projeler için fikir edinmek isteyenler için kullanışlı bir uygulama.Basit kodlama ile sizlerin gelişimine yardımcı bir örnek.


Proje de kullanılanlar

  • Access veri tabanı
  • Araç çıkışı için listeleme yapan Combobox ve park edilecek yeri seçmek için combobox
  • Araçların yerlerini ve park yerlerinini numaraların gösteren butonlar
  • Plaka ve araç sahibi girişi için textboxlar
  • Aracın giriş saatini listeleyen label
  • Kodların açıklaması mevcuttur.

Dikkat : Bu uygulama geliştirme amacındadır.Herkes kullanabilir ve kodlamasını çözebilir düzeydedir.Programın başka bir web sitesi,kurum ve kuruluşta paylaşılması durumunda kaynak belirtilmesi gerekmektedir.Programın paylaşım amacı eğitim amaçlıdır.

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 Otopark_Otomasyonu
{
    public partial class Form_Otopark : Form
    {
        public Form_Otopark()
        {
            InitializeComponent();
        }
        string bagcum = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=c:otoparkotomasyonu.mdb"; // otoparkotomasyonu.mdb veri tabanımızı tanımladık
        // global bağlantı değişkenlerimiz
        OleDbConnection bag;
        OleDbConnection con;
        OleDbDataAdapter da;
        OleDbCommand cmd;
        OleDbDataReader dr;
        DataTable dt;
        void listele() // comboboxlara veri tabanından verileri çekiyoruz
        {
            bag = new OleDbConnection(bagcum);  // burada bağlantıyı oluşturduk ve açtık
            bag.Open();
            da = new OleDbDataAdapter("select * from parkyerleri where durum = 'Boş'", bag); // park yerleri tablosunda durumu boş olanları
            dt = new DataTable();
            da.Fill(dt);
            comboBox_Nereye.DataSource = dt; // comboBox_Nereye adlı comboya getiriyoruz
            comboBox_Nereye.ValueMember = "id";
            comboBox_Nereye.DisplayMember = "id";
            bag.Close();
            bag = new OleDbConnection(bagcum);  // burada bağlantıyı oluşturduk ve açtık
            bag.Open();
            // Burda da durumu dolu olanları ve park_edilen_yeri park yerleri tablosunda id ye eşit olanları comboBox_Cikan_Arac combosuna listeledik.
            da = new OleDbDataAdapter("select * from parkyerleri,arac where parkyerleri.durum = 'Dolu' and arac.park_edilen_yer=parkyerleri.id", bag);
            dt = new DataTable();
            da.Fill(dt);
            comboBox_Cikan_Arac.DataSource = dt;
            comboBox_Cikan_Arac.ValueMember = "id";
            comboBox_Cikan_Arac.DisplayMember = "arac_plaka";
            bag.Close();
        }
        void yenile() // yenile fonksiyonumuz
        {
            foreach (Control item in panel3.Controls) // panel3 teki tüm elemanları gez
            {
                if (item is Button) // buton olanların
                {
                    if (item.Name.ToString()!= "button_programi_kapat") // Sağ üstteki kapat butonu hariç
                    {
                        item.BackColor = Color.DarkSlateGray; // arkaplanını DarkSlateGray
                        item.ForeColor = Color.DarkGray; // yazı rengini DarkGray
                        item.Text = item.Name.ToString(); // üstündeki yazıyı namesi olarak değiştir.
                        // namesi dediğim burda park yerleri tablosunda ki A1,A2 gibi numaralar
                    }
                }
            }
            con = new OleDbConnection(bagcum);
            con.Open();
            cmd = new OleDbCommand("select * from arac", con); // arac tablosundaki bilgileri getir
            dr = cmd.ExecuteReader(); // bilgileri datareader ile oku
            while (dr.Read())// bilgileri datareader ile oku
            {
                foreach (Control item in panel3.Controls) // panel3 teki her iteme bak
                {
                    if (item is Button)
                    {
                        if (dr["park_edilen_yer"].ToString() == item.Name.ToString()) // eğer veritabanında park_edilen_yer ekrandaki butonlardan birinin namesine eşitse
                        {
                            item.BackColor = Color.Maroon; // arkaplanını Maroon
                            item.ForeColor = Color.FloralWhite; // arkaplanını Maroon
                            item.Text = dr["arac_plaka"].ToString(); //o butonunu üstündeki yazıyı plakaya çevir
                        }
                    }
                }
            }
            con.Close();
        }
        private void Form_Otopark_Load(object sender, EventArgs e)
        {
            listele();
            // form açılırken listele ve yenile fonk. çağırdık
            yenile();
            foreach (Control item in panel3.Controls) // panel 3 te ki butonlara tıklama eventı verdik
            {
                if (item is Button)
                {
                    if (item.Name.ToString() != "button_programi_kapat") // kapat butonu hariç
                    {
                        item.Click += butonlara_tıklanınca; // tüm butonlara tıklama eventı verdik
                    }
                }
            }
        }
        private void butonlara_tıklanınca(object sender, EventArgs e) // butonlara tıklanınca
        {
            Button b = sender as Button; // hangi butona tıklantığını tespit ettik
            if (b.BackColor==Color.DarkSlateGray) // arkaplanı DarkSlateGray yani oraya park edilmemişse
            {
                for (int i = 0; i < comboBox_Nereye.Items.Count; i++) // combobox_nereye combosunda
                {
                    comboBox_Nereye.SelectedIndex = i;
                    if (b.Name.ToString() == comboBox_Nereye.SelectedValue.ToString()) //seçilen butonun namesi atıyorum A1 comboboxta varsa onu seçili hale getiriyoruz
                    {
                        comboBox_Nereye.SelectedIndex = i;
                        break;
                    }
                } // yani bu komut tıkladığın butonu comboboxta seçiyor
            }
            else
            {
                for (int i = 0; i < comboBox_Cikan_Arac.Items.Count; i++)
                {
                    comboBox_Cikan_Arac.SelectedIndex = i;
                    if (b.Name.ToString() == comboBox_Cikan_Arac.SelectedValue.ToString())
                    {
                        comboBox_Cikan_Arac.SelectedIndex = i;
                        break;
                    }
                }// yani bu komut tıkladığın butonu comboboxta seçiyor tabi buda sadece arkaplanı Maroon olanlar için
            }
        }
        private void button_aracgirisi_Click(object sender, EventArgs e) // araç girişi yap butonuna tıklandığında
        {
            if (textBox_plaka.Text != "" || textBox_arac_sahibi.Text != "") // textboxlar boş değilse
            {
                try
                {
                    con = new OleDbConnection(bagcum);
                    con.Open();
                    cmd = new OleDbCommand("insert into arac(arac_plaka, arac_sahibi, arac_giris_saati, park_edilen_yer)values('" + textBox_plaka.Text.Trim() + "','" + textBox_arac_sahibi.Text.Trim() + "','" + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + "','" + comboBox_Nereye.SelectedValue.ToString() + "')", con);
                    cmd.ExecuteNonQuery();
                    // veri tabanına ekle textboxtaki bilgileri
                    con.Close();
                    con = new OleDbConnection(bagcum);
                    con.Open();
                    // eklediğimiz yerin yani park edilen numaranın boş mu dolu mu durumunu dolu yaptık
                    cmd = new OleDbCommand("update parkyerleri set durum='Dolu' where id='" + comboBox_Nereye.SelectedValue.ToString() +"'", con);
                    cmd.ExecuteNonQuery();
                    con.Close();
                 }
                  catch (Exception ex)
                  {
                      MessageBox.Show("Hata oluştu" + ex);
                  }
                textBox_arac_sahibi.Text = "";
                textBox_plaka.Text = "";
                yenile();
                listele();
            }
            else MessageBox.Show("Boş alan bırakmayınız. ");
            listele();
            yenile();
        }
        private void button_arac_cikisi_Click(object sender, EventArgs e)
        {
            con = new OleDbConnection(bagcum);
            con.Open();
            cmd = new OleDbCommand("delete from arac where arac_plaka='" + comboBox_Cikan_Arac.Text + "'", con);
            cmd.ExecuteNonQuery();
            //arac tablosundan çıkış yaptığımız plakalı aracı sildik
            con.Close();
            con = new OleDbConnection(bagcum);
            con.Open();
            // park çıkışı yapılan yerin boş mu dolu mu durumunu Boş yaptık
            cmd = new OleDbCommand("update parkyerleri set durum='Boş' where id='" + comboBox_Cikan_Arac.SelectedValue.ToString() + "'", con);
            cmd.ExecuteNonQuery();
            con.Close();
            yenile();
            listele();
        }
        private void comboBox_Cikan_Arac_SelectedIndexChanged(object sender, EventArgs e)
        {
            con = new OleDbConnection(bagcum);
            con.Open();
            //arac saatini getirmek için aracların bilgilerini çektik
            cmd = new OleDbCommand("select * from arac where arac_plaka='" + comboBox_Cikan_Arac.Text + "'", con);
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                label_arac_giris_saati.Text = "Araç Giriş Saati \n" + dr["arac_giris_saati"].ToString(); // label arac saatine aracın saatini çektik
            }
            con.Close();
        }
        private void button_programi_kapat_Click(object sender, EventArgs e)
        {
            this.Dispose(); // programı kapat butonu
        }
    }
}


C# Otopak otomasyonu için geliştirilmesi gereken yerleri bildirmek için yorum yapabilirsiniz.

Yorumlar