MASIGNASUKA101
3556188086790554623

C# Otopark Otomasyonu

C# Otopark Otomasyonu
22 Mayıs 2016 Pazar
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.
Ali Köklü

Üç yılı aşkın süredir projevekod blogum da c# programlama örnek kodları paylaşıyorum. Yazı yazmaktan ve bilgi paylaşmaktan büyük keyif alırım. Çok sakin ve eğlenceli biriyimdir. Sürekli kendimi geliştirmek için çaba sarf ederim. Her türlü olumlu, olumsuz eleştirilere açık bir insanımdır. Beni sosyal medya'da takip etmek isterseniz : @alikoklu254

Konu hakkında yorumlarınızı bekliyorum teşekkürler.