C# Kuaför takip Otomasyonu

C# Kuaför takip Otomasyonu

Daha fazlası için: gorselprogramlama.com

Bu uygulamanın tam halini görmek için iletişime geçebilirsiniz.(Programcı’nın Mail Adresi)

Projemizin tamamı alt kısımdaki kodlarda ve linkte mevcuttur.

Projemize başlamadan proje klasöründe bin-debug altına dataKuafor.accdb adlı bir veritabanı oluşturmamız gerekiyor. Sonrada uygulama içine connection.cs adlı bir sınıf oluşturalım.

[code language=”csharp”]

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

namespace kuaforTakip
{
class connection
{
OleDbConnection dbConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\dataKuafor.accdb");
//bağlantımızı tanımlayalım
OleDbCommand CreateCommand;//kuafor oluşturucu komut ekledik.
OleDbCommand CreatePersCommand;//personel oluşturucu komut ekledik
OleDbCommand SaveCommand;//kaydedici komut ekledik.
OleDbCommand SavePersCommand;//personel kaydedici komut ekledik.
OleDbCommand QueryCommand;//sorgu komutu oluşturduk.
OleDbCommand cmbxCommand;//Personel comboboxumuzu doldurmamız için gereken komutu oluşturduk.
OleDbDataReader QueryDataReader;//sorgudaki komutu okuyacak okuyucu ekledik.
OleDbDataReader cmbxReader;//Personel comboboxu doldurmamız için gerekn okuyucuyu oluşturduk.
public void kuaforKaydet(string ad,string sifre,int acilis,int kapanis)
//kuafor kaydetmek için metot oluşturduk.
{
CreateCommand = new OleDbCommand("Create Table Kuafor (id int identity(1, 1) not null, kuaforAd nvarchar(50) not null, kuaforSifre nvarchar(50) not null, acilisSaati int not null,kapanisSaati int not null)", dbConnection);
//Tablomuzu oluşturacak komutu tanımladık.
dbConnection.Open();
CreateCommand.ExecuteNonQuery();//komutu okuduk. Eğer okuduysa try bloguna gececek.
try
{
CreatePersCommand = new OleDbCommand("Create Table " + ad + " (id int identity(1, 1) not null, persAd nvarchar(50) not null, persSoyad nvarchar(50) not null)", dbConnection);
//Kuaforun adıyla yazılı komut oluşturduk. Tablo içine gerekli argümanları ekledik.
CreatePersCommand.ExecuteNonQuery();//okuduk.
SaveCommand = new OleDbCommand("insert into Kuafor (kuaforAd,kuaforSifre,acilisSaati,kapanisSaati) values (‘"+ad+"’,’"+sifre+ "’,’" + acilis + "’,’" + kapanis + "’)", dbConnection);
//Kayıt edecek komutu tanımladık
SaveCommand.ExecuteNonQuery();//komutu okuduk.
SaveCommand.Dispose();//kapattık.
CreatePersCommand.Dispose();//kapattik
}
catch (Exception exc)//Eğer hata olursa
{
MessageBox.Show(exc.Message);//Hata mesajı yayınla
}
CreateCommand.Dispose();//Kapattık
dbConnection.Close();//bağlantiyi kapattik.
}

public void kuaforPersKaydet(string kafeAd, string ad,string soyad)
//kufor personel kaydetmek için metot oluşturduk.
{
try
{
dbConnection.Open();//bağlantıyı actik
SavePersCommand = new OleDbCommand("insert into "+kafeAd+" (persAd,persSoyad) values (‘"+ad+"’,’"+soyad+"’)",dbConnection);
//komutu oluşturduk. argümanları ekleyecek
SavePersCommand.ExecuteNonQuery();//okuduk
SavePersCommand.Dispose();//komutu kapattik.
}
catch(Exception exc)//hata olursa
{
MessageBox.Show(exc.Message);//mesajı yayınla
}
dbConnection.Close();//bağlamntıyı kapattık.
}

public bool girisControl(bool girisDurumu,string kuaforadi,string kuaforSifresi)
// bool cinsi değer döndüren bir metot yaratalım.
{
QueryCommand = new OleDbCommand("Select *From Kuafor where kuaforAd=’"+kuaforadi+"’ AND kuaforSifre=’"+kuaforSifresi+"’",dbConnection);
//sorgu komutumuzu tanımladık
dbConnection.Open();//baglantiyi açtık
QueryDataReader = QueryCommand.ExecuteReader();//komutumuzu okuyuca yönlendirdik.
if (QueryDataReader.Read() == true)//eğer okuduysa
{
string okunanKuaforad = QueryDataReader["kuaforAd"].ToString();
//okunan ad’a veritabanındaki kuaforAd verildi
string okunanSifre = QueryDataReader["kuaforSifre"].ToString();
//okunan sifreye veritabanındaki kuaforsifre verildi.
if(okunanKuaforad==kuaforadi && okunanSifre == kuaforSifresi)
//okunan değerlerle girilen değerler eşit ise
{
girisDurumu = true;//girisdurumu true’ya çevrildi
Takip.baslangicSaati = Convert.ToInt32(QueryDataReader["acilisSaati"]);
//açılacak kafeye ait baslangic saatini yönlendirdik
Takip.gunSonu= Convert.ToInt32(QueryDataReader["kapanisSaati"]);
//açılacak kafaye ait kapanis saati yönlendirildi.
}
else//okunan değerlerle girilen değerler eşit değilse
{
girisDurumu = false;//girisdurumu false’e çevrildi
}
}
else
{
MessageBox.Show("Kayıtlı Kuafor Bulunamadi","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
//eğer okumadıysa

}
QueryCommand.Dispose();//sorgu komutu kapandı
dbConnection.Close();//bağlanti kapandı
return girisDurumu;//girisdurumu geri döndürüldü
}
public void forCmbx(ComboBox cmbx,string kafead)
// Parametreleri combobox ve string olan bir metot oluşturduk.
{
cmbxCommand = new OleDbCommand("Select *From "+kafead+"",dbConnection);
//Kafe adina göre bilgileri getirticez.
dbConnection.Open();//Bağlantiyi açtık.
cmbxReader = cmbxCommand.ExecuteReader();//komutu okuduk.
while (cmbxReader.Read())//Okuduğu değer kadar döndürelim
{
string persAd = cmbxReader["persAd"].ToString();//Okunan personel adını aldık
string persSoyad = cmbxReader["persSoyad"].ToString();//Okunan personel soyadını aldık
string eklenecek = persAd + " " + persSoyad;//eklenecek değişkenine adsoyad ekledik.
cmbx.Items.Add(eklenecek);//eklenecek verisi combobox’a ekledik.
}
cmbxCommand.Dispose();//komutu kapattık.
cmbxReader.Close();//okuyucuyu kapattık.
dbConnection.Close();//Bağlantıyı kapattık.
}
}
}
[/code]

Ardından Form1 ekleyelim. Form1 eleman adlarımız:

txtAd,txtSifre

btnCikis,btnYeni,btnGrs.

IMG_20190225_191418

[code language=”csharp”]
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;

namespace kuaforTakip
{
public partial class giris : Form
{
public giris()
{
InitializeComponent();
}
connection cnn = new connection();//connection sınıfından yeni bir nesne ürettik.
bool girismusaitmi = false;//girismusaitmi diye bool tipinde bir değişken tanımladık.

private void btnCikis_Click(object sender, EventArgs e)
{
Application.Exit();//Uygulamayı kapatıyoruz
}

private void btnYeni_Click(object sender, EventArgs e)
{
bilgiGir bilgi = new bilgiGir();//bilgiGir Form sınıfımızdan bir adet "bilgi" adlı nesne oluşturduk.
bilgi.ShowDialog();//bilgi adlı nesnemizi diyalog şeklinde görüntüledik.
}

private void btnGrs_Click(object sender, EventArgs e)
{
string kuaforAd = txtAd.Text;//txtAd’da yazilan text ad olarak atandı.
string kuaforsifre = txtSifre.Text;//txtSifre’de yazilan text kuafor sifre olarak atandı.
girismusaitmi = cnn.girisControl(girismusaitmi,kuaforAd,kuaforsifre);//geridöndürdüğümüz değeri girismüsaitmi’ye attık
if (girismusaitmi == true)//Eğer girismusaitmi true ise
{
Takip tkp = new Takip();//Takip form sınıfımızdan yeni bir nesne oluşturuyoruz.
this.Hide();//giriş formumuzu göstermiyoruz.
Takip.kuaforad = kuaforAd;//Takip içindeki kuafor ada girilen isim atandı.
tkp.ShowDialog();//tkp nesnesini gösteriyoruz
Application.Exit();//tkp nesnesinden çıkılırsa uygulamadan çıkılsın.
}
txtAd.Clear();//txtAd temizlendi.
txtSifre.Clear();//txtSifre temizlendi.
}

private void giris_Load(object sender, EventArgs e)
{
txtSifre.PasswordChar = ‘-‘;//txtsifre elemanımızın şifre karakteri ‘-‘ olarak belirledik.
}
}
}
[/code]

bilgiGir diye bir form tanımladıktan sonra düzenliyoruz ve adlarını değiştiriyoruz.

IMG_20190225_193156

[code language=”csharp”]
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;

namespace kuaforTakip
{
public partial class bilgiGir : Form
{
List<string> personeller;//Personel listesi tanımladık.
int kaydedilenPerssayi = 0;//kaydedilen personel sayisi açtık.
int kaydedilecekPersSayisi = 0;//kaydedilecek personel sayisi açtık.
int acilisSaati = 0;//Acilis saati tanımladık.
int kapanisSaati = 0;//Kapanıs saati tanımladık.
connection cnn = new connection();//conneciton sınıfından yeni bir nesne ürettik.
public bilgiGir()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string ad = txtAd.Text;//Personel adi tanımladık ve txtAd textboxtaki yazılı ismi ad kısmına ekledik.
string soyad = txtSoyad.Text;//Personel soyadi tanımladık ve txtSoyad textboxtaki yazılı ismi soyad kısmına ekledik.
if (ad!="" && soyad != "")//Eğer iki isim de boş değilse
{
personeller.Add(ad + "_" + soyad);//personel listesine ekliyoruz
}
txtAd.Clear();//txtAd’ı temizledik
txtSoyad.Clear();//txtsoyad’ı temizledik
kaydedilenPerssayi++;//Kaydedilen sayisini bir artırdık
if (kaydedilenPerssayi == kaydedilecekPersSayisi)//Eğer kaydedilen sayisi ile kaydedilecek sayisi eşitse
{
pnlPers.Enabled = false;//Personel panelini göstermesin
btnTamamla.Enabled = true;//Tamamla butonunu göster.

}
}

private void bilgiGir_Load(object sender, EventArgs e)
{
txtKuadorSifre.PasswordChar = ‘-‘;//Personel Sayisi girerken şifre karakteri olarak ‘-‘ kullanılacak.
}

private void btnKuaforGir_Click(object sender, EventArgs e)
{
if(txtKuaforAd.Text!="" && txtKuadorSifre.Text!="" && txtPersSayisi.Text != "")
/*
Eğer kuaför bilgileri boş değilse
*/

{
string kafead = txtKuaforAd.Text;
string kafesifre = txtKuadorSifre.Text;
int sayi = Convert.ToInt32(txtPersSayisi.Text);//sayi değişkeni oluşturduk.
kaydedilecekPersSayisi = sayi;// Personel sayisi girilen sayi kadar olacak.
personeller = new List<string>(sayi);// sayi kadar personel listesinr yer açtık
acilisSaati = Convert.ToInt32(nmAcilis.Value);//acilis saatine seçilen açılış saati eklendi
kapanisSaati = Convert.ToInt32(nmKapanis.Value);//kapanis saatine seçilen kapanış saati eklendi.
cnn.kuaforKaydet(kafead,kafesifre,acilisSaati,kapanisSaati);
pnlKuafor.Enabled = false;//Kuaför paneli gözükmesin.
pnlPers.Enabled = true;//Personel Paneli gözüksün
}
}

private void btnTamamla_Click(object sender, EventArgs e)
{
for(int i = 0; i < personeller.Count; i++)//listedeki sayi kadar döndürelim
{
string[] adsoyad = personeller[i].Split(‘_’);//ilk değeri parçalayalım
cnn.kuaforPersKaydet(txtKuaforAd.Text,adsoyad[0],adsoyad[1]);
//ilk değerin adını soyadını alalım ve veritabanına ekleyelim.
}
this.Close();//Form Kapatılsın.
}

private void txtPersSayisi_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
/*Personel Sayisi kısmına
sadece rakam girilsin.*/
}
}
}

[/code]

Takip adlı bir form oluşturduk. Ardından düzenleyip eleman adlarını değiştirdik.

IMG_20190225_193715

[code language=”csharp”]
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;

namespace kuaforTakip
{
public partial class Takip : Form
{
public static string kuaforad;//diğer formdan aktarmak için kafead tanımladık.
public static int baslangicSaati = 0;//diğer formdan aktarmak için baslangic saati tanımladık.
public static int gunSonu = 0;//diğer formdan aktarmak için gunsonu saati tanımnladık.
public static List<string> personel;//diğer formdan alınan bilgiyle doldurmak için başına static ekledik.
Timer tmr;//dinamik bir timer oluşturduk.
connection cnn = new connection();//connection sınıfından bir adet nesne oluşturduk.
public Takip()
{
InitializeComponent();
}

private void Takip_Load(object sender, EventArgs e)
{
nmSaat.Maximum = gunSonu;//saat numericDown’umuzun maxiumum değeri kafenin gunsonuna eşitledik.
nmDk.Maximum = 59;//dakika numericDown’umuzun maximum değeri ise 59 dedik.
tmr = new Timer();//timerımızı tanımladık.
tmr.Interval = 10;//timerın çalışacağı aralığı belirttik.Eğer 1000 olsaydı bir saniyede bir kere çalışacaktı.
tmr.Tick += new EventHandler(tmr_Tick);//timerin tick olayını oluşturduk.
tmr.Start();//timer başlattık.
cnn.forCmbx(cmbPersonel,kuaforad);//comboboxumuzu doldurduk.
}

private void tmr_Tick(object sender, EventArgs e)
{
DateTime time = DateTime.Now;//timer değişkeni atadık ona da şimdiki zamanı ekledik.
lblDate.Text = time.ToLongTimeString();//saat labelinde ise saat:dakika:saniye cinsinden yazdırdık.
string[] saat = time.ToLongTimeString().Split(‘:’);//Yazdığımız saati parçaladık.
nmSaat.Minimum = Convert.ToInt32(saat[0]);
//numericSaat elemanımız minimum o anki saati gösterecek.Öcesi için işlem yapılmayacak.
if(nmSaat.Value== Convert.ToInt32(saat[0]))//Eğer seçilen saat şuanki saatse
{
nmDk.Minimum = Convert.ToInt32(saat[1]);//minimum dakika da şimdiki dakika olacak.
}
else//Değilse
{
nmDk.Minimum = 0;//minimum dakika 0’dan başlayacak.
}
}

private void Takip_FormClosing(object sender, FormClosingEventArgs e)
{
tmr.Stop();//Formumuz kapatılırken timer durdurulacak
}

private void btntamamla_Click(object sender, EventArgs e)
{
if (cmbPersonel.SelectedIndex != -1)//eğer seçili personel index boş değilse
{
string secilisaat = nmSaat.Value.ToString();//secili saati al
string secilidakika = nmDk.Value.ToString();//sacili dakikayı al
string seciliperAd = cmbPersonel.SelectedItem.ToString();//secili personel adı al
string eklenecek = secilisaat + ":" + secilidakika +"→" + seciliperAd;
//eklenecek veriyi tanımladık
if (rdGelenMusteri.Checked)//Gelen müsteri seçili ise
{
if (lstbxGelen.Items.Count != 0)//Eğer birden fazla veri varsa
{
int arananyer = lstbxGelen.FindString(eklenecek);//lstGelen içinde aradık
if (arananyer == -1)//Eğer yoksa
{
lstbxGelen.Items.Add(eklenecek);//lstbxGelene ekledik
}
else//Eğer varsa
{
MessageBox.Show("Aynı veri tekrar eklenemez!");
}
}
else//eğer birden fazla değer yoksa
{
lstbxGelen.Items.Add(eklenecek);//lstbxGelene ekledik
}

}
if (rdRandevuMusteri.Checked)//randevulu müşteri ise
{
if (lstbxRandevu.Items.Count != 0)//Eğer birden fazla veri varsa
{
int arananyer = lstbxRandevu.FindString(eklenecek);//lstbxRandevu içinde aradık
if (arananyer == -1)//eğer yoksa
{
lstbxRandevu.Items.Add(eklenecek);//lstbxrandevu ekledik
}
else//eğer varsa
{
MessageBox.Show("Aynı veri tekrar eklenemez!");
}
}
else//eğer birden fazla değer yoksa
{
lstbxRandevu.Items.Add(eklenecek);//lstbxrandevu ekledik
}
}
}
else//eğer boşsa
{
MessageBox.Show("Personel Seçiniz.");
}
}
}
}
//Dha fazlası için görselprogramlama.com
//Bu uygulamanın ileri boyutundaki takip ve takipler için abdurrahman.onder@ogr.sakarya.edu.tr
//Uygulama sadece belirli şeyler için yapılmıştır. Çok daha ileri boyutunu isteyen kişiler mail atabilir.

[/code]

Projeyi indirmek için Tıklayınız
(Daha fazlası için Programcı’nın Mail Adresi)

Yorumlar 1

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir