kodlarım
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Windows.Forms;
using MaterialSkin;
using MaterialSkin.Controls;
namespace Apart_Kiralama
{
public partial class Form1 : MaterialForm
{
// Veritabanına bağlanmak için kullanıyorum
private readonly string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\ApartKiralama.accdb";
// Seçilen kayıtları saklıyorum
private int secilenApartID = -1;
private int secilenMusteriID = -1;
private int secilenOdemeID = -1;
// Arayüz bileşenlerini tanımlıyorum
private Panel panelMenu;
private Panel panelMain;
private MaterialButton btnApartlar;
private MaterialButton btnMusteriler;
private MaterialButton btnOdemeler;
// DataGridView boyutlarını ayarlıyorum
private DataGridView currentDgv = null;
private int dgvTop = 0, dgvMarginBottom = 40;
public Form1()
{
InitializeComponent();
// Form boyutunu ayarlıyorum
this.MinimumSize = new Size(1000, 700);
// MaterialSkin temasını uyguluyorum
var materialSkinManager = MaterialSkinManager.Instance;
materialSkinManager.AddFormToManage(this);
materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;
materialSkinManager.ColorScheme = new ColorScheme(
Primary.Blue600, Primary.Blue700, Primary.Blue200, Accent.LightBlue200, TextShade.WHITE);
// Arayüzü oluşturuyorum
CreateLayout();
}
// Arayüz bileşenlerini yerleştiriyorum
private void CreateLayout()
{
// Sol menü panelini hazırlıyorum
panelMenu = new Panel
{
Dock = DockStyle.Left,
Width = 200,
BackColor = Color.FromArgb(63, 81, 181)
};
this.Controls.Add(panelMenu);
// Ana içerik panelini ayarlıyorum
panelMain = new Panel
{
Dock = DockStyle.Fill,
AutoScroll = true
};
panelMain.Resize += PanelMain_Resize;
this.Controls.Add(panelMain);
// Ödemeler butonunu ekliyorum
btnOdemeler = new MaterialButton
{
Text = "ÖDEMELER",
Dock = DockStyle.Top,
Height = 48
};
btnOdemeler.Click += BtnOdemeler_Click;
panelMenu.Controls.Add(btnOdemeler);
// Müşteriler butonunu ekliyorum
btnMusteriler = new MaterialButton
{
Text = "MÜŞTERİLER",
Dock = DockStyle.Top,
Height = 48
};
btnMusteriler.Click += BtnMusteriler_Click;
panelMenu.Controls.Add(btnMusteriler);
// Apartlar butonunu ekliyorum
btnApartlar = new MaterialButton
{
Text = "APARTLAR",
Dock = DockStyle.Top,
Height = 48
};
btnApartlar.Click += BtnApartlar_Click;
panelMenu.Controls.Add(btnApartlar);
}
// Ana panel boyutu değiştiğinde DataGridView'i yeniden boyutlandırıyorum
private void PanelMain_Resize(object sender, EventArgs e)
{
if (currentDgv != null)
{
currentDgv.Width = panelMain.Width - 320;
currentDgv.Left = 300;
currentDgv.Height = panelMain.Height - currentDgv.Top - dgvMarginBottom;
}
}
// Form yüklendiğinde Apartlar sekmesini açıyorum
private void Form1_Load(object sender, EventArgs e)
{
BtnApartlar_Click(null, null);
}
// Apartlar sekmesinin içeriğini oluşturuyorum
private void BtnApartlar_Click(object sender, EventArgs e)
{
// Önceki kontrolleri temizliyorum
panelMain.Controls.Clear();
// Kontrollerin konum ve boyutlarını ayarlıyorum
int left = 300, width = 250, topStep = 50;
int top = 20;
// Apart bilgileri için input alanlarını oluşturuyorum
var txtApartAdi = new MaterialTextBox { Hint = "Apart Adı", Top = top, Left = left, Width = width };
var txtOdaSayisi = new MaterialTextBox { Hint = "Oda Sayısı", Top = top + topStep, Left = left, Width = width };
var txtFiyat = new MaterialTextBox { Hint = "Fiyat", Top = top + 2 * topStep, Left = left, Width = width };
// Durum seçim kutusunu hazırlıyorum
var cmbDurum = new ComboBox { Top = top + 3 * topStep, Left = left, Width = width, DropDownStyle = ComboBoxStyle.DropDownList };
cmbDurum.Items.AddRange(new string[] { "Boş", "Dolu", "Bakımda" });
cmbDurum.SelectedIndex = 0;
// İşlem butonlarını ekliyorum
var btnEkle = new MaterialButton { Text = "EKLE", Top = top + 4 * topStep, Left = left, Width = 80 };
var btnSil = new MaterialButton { Text = "SİL", Top = top + 4 * topStep, Left = left + 100, Width = 80 };
var btnGuncelle = new MaterialButton { Text = "GÜNCELLE", Top = top + 5 * topStep, Left = left, Width = 180 };
// DataGridView konumunu ayarlıyorum
dgvTop = top + 6 * topStep;
var dgv = new DataGridView
{
Top = dgvTop,
Left = left,
Width = panelMain.Width - left - 20,
Height = panelMain.Height - dgvTop - dgvMarginBottom,
ReadOnly = true,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom
};
currentDgv = dgv;
// Tüm kontrolleri panele ekliyorum
panelMain.Controls.AddRange(new Control[] { txtApartAdi, txtOdaSayisi, txtFiyat, cmbDurum, btnEkle, btnSil, btnGuncelle, dgv });
// Apart listesini veritabanından çekip gösteriyorum
void Listele()
{
using (OleDbConnection baglanti = new OleDbConnection(connectionString))
{
baglanti.Open();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Apartlar", baglanti);
DataTable dt = new DataTable();
da.Fill(dt);
dgv.DataSource = dt;
}
}
Listele();
// Tablodan seçim yapıldığında input alanlarını dolduruyorum
dgv.CellClick += (s, ev) =>
{
// Satır indexi geçerli mi ve yeni satır mı kontrolü
if (ev.RowIndex >= 0 && !dgv.Rows[ev.RowIndex].IsNewRow)
{
var row = dgv.Rows[ev.RowIndex];
// Hücre değerleri null olabilir, kontrol et!
var idValue = row.Cells["ApartID"].Value;
var adiValue = row.Cells["ApartAdi"].Value;
var odaValue = row.Cells["OdaSayisi"].Value;
var fiyatValue = row.Cells["Fiyat"].Value;
var durumValue = row.Cells["Durum"].Value;
if (idValue != null && idValue != DBNull.Value)
secilenApartID = Convert.ToInt32(idValue);
// Input alanlarını güncelliyorum
txtApartAdi.Text = adiValue?.ToString() ?? "";
txtOdaSayisi.Text = odaValue?.ToString() ?? "";
txtFiyat.Text = fiyatValue?.ToString() ?? "";
cmbDurum.SelectedItem = durumValue?.ToString() ?? "";
}
};
// Yeni apart ekleme işlemini yapıyorum
btnEkle.Click += (s, e2) =>
{
using (OleDbConnection baglanti = new OleDbConnection(connectionString))
{
baglanti.Open();
OleDbCommand cmd = new OleDbCommand("INSERT INTO Apartlar (ApartAdi, OdaSayisi, Fiyat, Durum) VALUES (?, ?, ?, ?)", baglanti);
cmd.Parameters.AddWithValue("@adi", txtApartAdi.Text);
cmd.Parameters.AddWithValue("@oda", txtOdaSayisi.Text);
cmd.Parameters.AddWithValue("@fiyat", txtFiyat.Text);
cmd.Parameters.AddWithValue("@durum", cmbDurum.SelectedItem);
cmd.ExecuteNonQuery();
Listele();
}
};
// Apart silme işlemini gerçekleştiriyorum
btnSil.Click += (s, e3) =>
{
if (secilenApartID > 0)
{
using (OleDbConnection baglanti = new OleDbConnection(connectionString))
{
baglanti.Open();
OleDbCommand cmd = new OleDbCommand("DELETE FROM Apartlar WHERE ApartID = ?", baglanti);
cmd.Parameters.AddWithValue("@id", secilenApartID);
cmd.ExecuteNonQuery();
Listele();
secilenApartID = -1;
}
}
};
// Apart bilgilerini güncelliyorum
btnGuncelle.Click += (s, e4) =>
{
if (secilenApartID > 0)
{
using (OleDbConnection baglanti = new OleDbConnection(connectionString))
{
baglanti.Open();
OleDbCommand cmd = new OleDbCommand("UPDATE Apartlar SET ApartAdi=?, OdaSayisi=?, Fiyat=?, Durum=? WHERE ApartID=?", baglanti);
cmd.Parameters.AddWithValue("@adi", txtApartAdi.Text);
cmd.Parameters.AddWithValue("@oda", txtOdaSayisi.Text);
cmd.Parameters.AddWithValue("@fiyat", txtFiyat.Text);
cmd.Parameters.AddWithValue("@durum", cmbDurum.SelectedItem);
cmd.Parameters.AddWithValue("@id", secilenApartID);
cmd.ExecuteNonQuery();
Listele();
secilenApartID = -1;
}
}
};
PanelMain_Resize(null, null);
}
// MÜŞTERİLER SEKMESİ İÇİN İŞLEMLERİ YAPIYORUM
private void BtnMusteriler_Click(object sender, EventArgs e)
{
// Önceki kontrolleri temizlyorum
panelMain.Controls.Clear();
// Kontrollerin konum ve boyutlarını ayarlıyorum
int left = 300, width = 250, topStep = 50;
int top = 20;
// Müşteri bilgileri için input alanlarını oluşturuyorum
var txtAdSoyad = new MaterialTextBox { Hint = "Ad Soyad", Top = top, Left = left, Width = width };
var txtTCKN = new MaterialTextBox { Hint = "TCKN", Top = top + topStep, Left = left, Width = width };
var txtTelefon = new MaterialTextBox { Hint = "Telefon", Top = top + 2 * topStep, Left = left, Width = width };
var dtpGiris = new DateTimePicker { Top = top + 3 * topStep, Left = left, Width = width };
var dtpCikis = new DateTimePicker { Top = top + 4 * topStep, Left = left, Width = width };
var cmbApart = new ComboBox { Top = top + 5 * topStep, Left = left, Width = width, DropDownStyle = ComboBoxStyle.DropDownList };
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("SELECT ApartID, ApartAdi FROM Apartlar", bag);
var rdr = cmd.ExecuteReader();
while (rdr.Read())
{
cmbApart.Items.Add(new KeyValuePair<int, string>((int)rdr["ApartID"], rdr["ApartAdi"].ToString()));
}
}
cmbApart.DisplayMember = "Value";
cmbApart.ValueMember = "Key";
// İşlem butonlarını ekliyorum
var btnEkle = new MaterialButton { Text = "EKLE", Top = top + 6 * topStep, Left = left, Width = 80 };
var btnSil = new MaterialButton { Text = "SİL", Top = top + 6 * topStep, Left = left + 100, Width = 80 };
var btnGuncelle = new MaterialButton { Text = "GÜNCELLE", Top = top + 7 * topStep, Left = left, Width = 180 };
dgvTop = top + 8 * topStep;
var dgv = new DataGridView
{
Top = dgvTop,
Left = left,
Width = panelMain.Width - left - 20,
Height = panelMain.Height - dgvTop - dgvMarginBottom,
ReadOnly = true,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom
};
currentDgv = dgv;
panelMain.Controls.AddRange(new Control[] {
txtAdSoyad, txtTCKN, txtTelefon, dtpGiris, dtpCikis, cmbApart,
btnEkle, btnSil, btnGuncelle, dgv });
// Müşteri listesini veritabanından çekip gösteriyorum
void MusteriListele()
{
using (OleDbConnection bag = new OleDbConnection(connectionString))
{
bag.Open();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Musteriler", bag);
DataTable dt = new DataTable();
da.Fill(dt);
dgv.DataSource = dt;
}
}
// Müşteri listesini yükle
MusteriListele();
dgv.CellClick += (s, ev) =>
{
if (ev.RowIndex >= 0 && !dgv.Rows[ev.RowIndex].IsNewRow)
{
var row = dgv.Rows[ev.RowIndex];
var idValue = row.Cells["MusteriID"].Value;
var adValue = row.Cells["AdSoyad"].Value;
var tcknValue = row.Cells["TCKN"].Value;
var telValue = row.Cells["Telefon"].Value;
var girisValue = row.Cells["GirisTarihi"].Value;
var cikisValue = row.Cells["CikisTarihi"].Value;
var apartIDValue = row.Cells["ApartID"].Value;
if (idValue != null && idValue != DBNull.Value)
secilenMusteriID = Convert.ToInt32(idValue);
txtAdSoyad.Text = adValue?.ToString() ?? "";
txtTCKN.Text = tcknValue?.ToString() ?? "";
txtTelefon.Text = telValue?.ToString() ?? "";
if (girisValue != null && girisValue != DBNull.Value)
dtpGiris.Value = Convert.ToDateTime(girisValue);
if (cikisValue != null && cikisValue != DBNull.Value)
dtpCikis.Value = Convert.ToDateTime(cikisValue);
// Apart seçimi
if (apartIDValue != null && apartIDValue != DBNull.Value)
{
int apartID = Convert.ToInt32(apartIDValue);
foreach (KeyValuePair<int, string> item in cmbApart.Items)
{
if (item.Key == apartID)
{
cmbApart.SelectedItem = item;
break;
}
}
}
}
};
// Müşteri ekleme işlemini yapıyorum
btnEkle.Click += (s, e2) =>
{
if (cmbApart.SelectedItem is KeyValuePair<int, string> apartSecim)
{
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("INSERT INTO Musteriler (AdSoyad, TCKN, Telefon, GirisTarihi, CikisTarihi, ApartID) VALUES (?, ?, ?, ?, ?, ?)", bag);
cmd.Parameters.AddWithValue("@ad", txtAdSoyad.Text);
cmd.Parameters.AddWithValue("@tckn", txtTCKN.Text);
cmd.Parameters.AddWithValue("@tel", txtTelefon.Text);
cmd.Parameters.AddWithValue("@giris", dtpGiris.Value);
cmd.Parameters.AddWithValue("@cikis", dtpCikis.Value);
cmd.Parameters.AddWithValue("@apart", apartSecim.Key);
cmd.ExecuteNonQuery();
MusteriListele();
}
}
};
// Müşteri silme işlemini gerçekleştiriyorum
btnSil.Click += (s, e3) =>
{
if (secilenMusteriID > 0)
{
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("DELETE FROM Musteriler WHERE MusteriID = ?", bag);
cmd.Parameters.AddWithValue("@id", secilenMusteriID);
cmd.ExecuteNonQuery();
MusteriListele();
secilenMusteriID = -1;
}
}
};
// Müşteri bilgilerini güncelliyorum
btnGuncelle.Click += (s, e4) =>
{
if (secilenMusteriID > 0 && cmbApart.SelectedItem is KeyValuePair<int, string> apartSecim)
{
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("UPDATE Musteriler SET AdSoyad=?, TCKN=?, Telefon=?, GirisTarihi=?, CikisTarihi=?, ApartID=? WHERE MusteriID=?", bag);
cmd.Parameters.AddWithValue("@ad", txtAdSoyad.Text);
cmd.Parameters.AddWithValue("@tckn", txtTCKN.Text);
cmd.Parameters.AddWithValue("@tel", txtTelefon.Text);
cmd.Parameters.AddWithValue("@giris", dtpGiris.Value);
cmd.Parameters.AddWithValue("@cikis", dtpCikis.Value);
cmd.Parameters.AddWithValue("@apart", apartSecim.Key);
cmd.Parameters.AddWithValue("@id", secilenMusteriID);
cmd.ExecuteNonQuery();
MusteriListele();
secilenMusteriID = -1;
}
}
};
PanelMain_Resize(null, null);
}
// Ödemeler sekmesinin içeriğini oluşturuyorum
private void BtnOdemeler_Click(object sender, EventArgs e)
{
// Önceki kontrolleri temizliyorum
panelMain.Controls.Clear();
int left = 300, width = 250, topStep = 50;
int top = 20;
var cmbMusteri = new ComboBox { Top = top, Left = left, Width = width, DropDownStyle = ComboBoxStyle.DropDownList };
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("SELECT MusteriID, AdSoyad FROM Musteriler", bag);
var rdr = cmd.ExecuteReader();
while (rdr.Read())
{
cmbMusteri.Items.Add(new KeyValuePair<int, string>((int)rdr["MusteriID"], rdr["AdSoyad"].ToString()));
}
}
cmbMusteri.DisplayMember = "Value";
cmbMusteri.ValueMember = "Key";
// Ödeme bilgileri için input alanlarını oluşturuyorum
var txtOdeme = new MaterialTextBox { Hint = "Ödeme Miktarı", Top = top + topStep, Left = left, Width = width };
var dtpTarih = new DateTimePicker { Top = top + 2 * topStep, Left = left, Width = width };
var cmbDurum = new ComboBox { Top = top + 3 * topStep, Left = left, Width = width, DropDownStyle = ComboBoxStyle.DropDownList };
cmbDurum.Items.AddRange(new string[] { "Ödendi", "Bekleniyor" });
cmbDurum.SelectedIndex = 0;
var btnEkle = new MaterialButton { Text = "EKLE", Top = top + 4 * topStep, Left = left, Width = 80 };
var btnSil = new MaterialButton { Text = "SİL", Top = top + 4 * topStep, Left = left + 100, Width = 80 };
var btnGuncelle = new MaterialButton { Text = "GÜNCELLE", Top = top + 5 * topStep, Left = left, Width = 180 };
dgvTop = top + 6 * topStep;
var dgv = new DataGridView
{
Top = dgvTop,
Left = left,
Width = panelMain.Width - left - 20,
Height = panelMain.Height - dgvTop - dgvMarginBottom,
ReadOnly = true,
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom
};
currentDgv = dgv;
panelMain.Controls.AddRange(new Control[] {
cmbMusteri, txtOdeme, dtpTarih, cmbDurum,
btnEkle, btnSil, btnGuncelle, dgv });
// Ödeme listesini veritabanından çekip gösteriyorum
void OdemeListele()
{
using (OleDbConnection bag = new OleDbConnection(connectionString))
{
bag.Open();
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM Odemeler", bag);
DataTable dt = new DataTable();
da.Fill(dt);
dgv.DataSource = dt;
}
}
// Ödeme listesini yükle
OdemeListele();
dgv.CellClick += (s, ev) =>
{
if (ev.RowIndex >= 0 && !dgv.Rows[ev.RowIndex].IsNewRow)
{
var row = dgv.Rows[ev.RowIndex];
var idValue = row.Cells["OdemeID"].Value;
var odemeValue = row.Cells["Odeme"].Value;
var tarihValue = row.Cells["OdemeTarihi"].Value;
var durumValue = row.Cells["OdemeDurumu"].Value;
var musteriIDValue = row.Cells["MusteriID"].Value;
if (idValue != null && idValue != DBNull.Value)
secilenOdemeID = Convert.ToInt32(idValue);
txtOdeme.Text = odemeValue?.ToString() ?? "";
if (tarihValue != null && tarihValue != DBNull.Value)
dtpTarih.Value = Convert.ToDateTime(tarihValue);
cmbDurum.SelectedItem = durumValue?.ToString() ?? "";
// Müşteri seçimi
if (musteriIDValue != null && musteriIDValue != DBNull.Value)
{
int musteriID = Convert.ToInt32(musteriIDValue);
foreach (KeyValuePair<int, string> item in cmbMusteri.Items)
{
if (item.Key == musteriID)
{
cmbMusteri.SelectedItem = item;
break;
}
}
}
}
};
// Ödeme ekleme işlemini yapıyorum
btnEkle.Click += (s, e2) =>
{
if (cmbMusteri.SelectedItem is KeyValuePair<int, string> musteri)
{
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("INSERT INTO Odemeler (MusteriID, Odeme, OdemeTarihi, OdemeDurumu) VALUES (?, ?, ?, ?)", bag);
cmd.Parameters.AddWithValue("@mid", musteri.Key);
cmd.Parameters.AddWithValue("@odeme", txtOdeme.Text);
cmd.Parameters.AddWithValue("@tarih", dtpTarih.Value);
cmd.Parameters.AddWithValue("@durum", cmbDurum.SelectedItem.ToString());
cmd.ExecuteNonQuery();
OdemeListele();
}
}
};
// Ödeme silme işlemini gerçekleştiriyorum
btnSil.Click += (s, e3) =>
{
if (secilenOdemeID > 0)
{
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("DELETE FROM Odemeler WHERE OdemeID = ?", bag);
cmd.Parameters.AddWithValue("@id", secilenOdemeID);
cmd.ExecuteNonQuery();
OdemeListele();
secilenOdemeID = -1;
}
}
};
// Ödeme bilgilerini güncelliyorum
btnGuncelle.Click += (s, e4) =>
{
if (secilenOdemeID > 0 && cmbMusteri.SelectedItem is KeyValuePair<int, string> musteri)
{
using (var bag = new OleDbConnection(connectionString))
{
bag.Open();
var cmd = new OleDbCommand("UPDATE Odemeler SET MusteriID=?, Odeme=?, OdemeTarihi=?, OdemeDurumu=? WHERE OdemeID=?", bag);
cmd.Parameters.AddWithValue("@mid", musteri.Key);
cmd.Parameters.AddWithValue("@odeme", txtOdeme.Text);
cmd.Parameters.AddWithValue("@tarih", dtpTarih.Value);
cmd.Parameters.AddWithValue("@durum", cmbDurum.SelectedItem.ToString());
cmd.Parameters.AddWithValue("@id", secilenOdemeID);
cmd.ExecuteNonQuery();
OdemeListele();
secilenOdemeID = -1;
}
}
};
// Panel boyutunu ayarlıyorum
PanelMain_Resize(null, null);
}
}
}