14 Eylül 2013 Cumartesi

C# İLE FLASH'IN SERİAL NUMBER ÖĞRENME

Bu yazımda c# ile flash belleklerimizin serial numarasın nasıl öğreneceğimiz anlatacağım .İnternet gezerken aklıma geldi birden flash belleklerimiz seri numarası var mi diye bu düşünceyle yola çıktım araştırdım ve sonunda  c# küçük bir program yazdım .bu programı Aşağıdaki gibi .

1.ilk önce C# projemizi açalım ve şu tasarım yapalım
Bu tasarım için projemize 1 label, 1tane combobox , 1 tane buton yeterli bize :)
ve kodlama kısmına geçebiliriz artık.
İlk önce projemize bir class dahil edelim. class nasıl dahil ederiz derseniz şöyle olacak
projemize sağ tıklarız Add-New Item oradan da class seçeriz ve işlem tamamlanır

Ve classa  şu kodları yazıyoruz.

using System;
using System.Collections.Generic;
using System.Text;
using System.Management;

namespace USBDriveSerialNumber {
    public class USBSerialNumber {

        string _serialNumber;
        string _driveLetter;

        public string getSerialNumberFromDriveLetter(string driveLetter) {
            this._driveLetter = driveLetter.ToUpper();

            if(!this._driveLetter.Contains(":")) {
                this._driveLetter += ":";
            }

            matchDriveLetterWithSerial();

            return this._serialNumber;
        }

        private void matchDriveLetterWithSerial() {
            
            string[] diskArray;
            string driveNumber;
            string driveLetter;

            ManagementObjectSearcher searcher1 = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDiskToPartition");
            foreach (ManagementObject dm in searcher1.Get()) {
                diskArray = null;
                driveLetter = getValueInQuotes(dm["Dependent"].ToString());
                diskArray = getValueInQuotes(dm["Antecedent"].ToString()).Split(',');
                driveNumber = diskArray[0].Remove(0, 6).Trim();
                if(driveLetter==this._driveLetter){
                    /* This is where we get the drive serial */
                    ManagementObjectSearcher disks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
                    foreach (ManagementObject disk in disks.Get()) {

                        if (disk["Name"].ToString() == ("\\\\.\\PHYSICALDRIVE" + driveNumber) & disk["InterfaceType"].ToString() == "USB") {
                            this._serialNumber = parseSerialFromDeviceID(disk["PNPDeviceID"].ToString());
                        }
                    }
                }
            }
        }

        private string parseSerialFromDeviceID(string deviceId) {
            string[] splitDeviceId = deviceId.Split('\\');
            string[] serialArray;
            string serial;
            int arrayLen = splitDeviceId.Length-1;
                
                serialArray = splitDeviceId[arrayLen].Split('&');
                serial = serialArray[0];
            
            return serial;
        }

        private string getValueInQuotes(string inValue) {
            string parsedValue = "";

            int posFoundStart = 0;
            int posFoundEnd = 0;

            posFoundStart = inValue.IndexOf("\"");
            posFoundEnd = inValue.IndexOf("\"", posFoundStart + 1);
            
            parsedValue = inValue.Substring(posFoundStart + 1, (posFoundEnd - posFoundStart) - 1);

            return parsedValue;
        }

    }
}

Buttonumuzun Clik olayında şunları yazıyoruz .

 private void button1_Click(object sender, EventArgs e)
        {


            if (comboBox1.Text != null && comboBox1.Text != "")
            {
                string Drive = comboBox1.Text.Substring(0, 2);
                USBSerialNumber usb = new USBSerialNumber();
                string serial = usb.getSerialNumberFromDriveLetter(Drive);
                MessageBox.Show(Drive + " diskinin serial numarası: " + serial, "Serial Number", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }


        }

Formun Load olayına da şunu yazıyoruz .

 private void Form1_Load(object sender, EventArgs e)
        {
            foreach (DriveInfo driveInfo in DriveInfo.GetDrives())
            {
                if (driveInfo.DriveType == DriveType.Removable)
                {
                    comboBox1.Items.Add(driveInfo.Name.ToString());
                    comboBox1.ValueMember = driveInfo.Name.ToString();
                    comboBox1.DisplayMember = driveInfo.Name.ToString();
                }
            }
        }

Ve işlemimiz tamam hadi kolay gelsin sizlere :D belki lazım olur
projemizin görüntüsü:

22 Mayıs 2013 Çarşamba


Personel Devam Kontrol Sistemi
(PDKS)
Resim 1.1
PDKS programız personellerin giriş çıkış,personel bilgileri,izinleri,avansların ve kesintilerin tutulduğu bir programdır.ayrıca şirket tanımlama ,departman tanımlama,bordro alan tanımlama, tatil ve izin tanımlama bölümlerinde oluşmaktadır.
Programın üst tarafında 4 adet ana menü ve bunların alt menüleri mevcuttur. Buradaki ana menüler şunlardır:

1.1Personel İşlemleri: altında şu menüler imiz bulunmaktadır.

1.Personel kart: Adından da anlaşılacağı üzere personelle ilgili işlemlerin
 ( Giriş Çıkış, İzin, Avans, Kesinti vs.) yapıldığı bölümlere ulaşmamızı sağlar.

2.Çıkış: program da çıkmamızı sağlıyor.


1.2.Hesap parametreleri: menünü alt kategorileri şunlardır.
1.Bordro Alanı Tanımlama: personelin bordro alan tanımlamasın yapılıyor burada.
2.Tatil ve izin Tanımlama: personelin tatil ve tanımlama kısımları burada yapılıyor.

1.3Tanım İşlemleri: Şirket ve departman adları gibi tanımlamaları buradaki bölümlerden yapabiliriz.
1.Şirket tanımlama: bu kısımda şirket tanımlama işlemin yapıyoruz.
2.Departman Tanımlama: bu kısım da ise departman tanımlama işlemin yapıyoruz.


Raporlar: burada personelin rapor işlemleri tutuluyor. Raporlar sekmesin alt kategorileri aşağıda açıklamalarıyla mevcuttur.

1.Personel Listesi: bu raporda personelimiz bilgileri tutuluyor. İşletmede çalışan tüm personellerin listesini alabiliriz.

2.Personel ücret Listesi: Burada personelimizin ücret tablosu bulunmaktadır. Yani hangi personelimizin ne kadar maaş aldığı raporudur.

3.Personel Şirket Listesi: Bu raporumuzda personelimizin hangi şirkete hangi departman da bulunduğunu listeler.

4.Personel Giriş Çıkış Listesi: Bu raporumuzda personelimizin giriş çıkış saatleri tarih, personelin TC. Kimlik, adı, soyadı bulunur.

5.Personel Avans Ve Kesintiler Listesi: bu raporumuzda personelimizin aldığı avanslar ve niçin aldığını belirten rapordur.


Resim 1.2

Bu sayfamızdan personelin kart nosu, secil nosu, hangi şirkete, hangi departmanda olduğunu belirtir.ayrıca alt tarafta calişma bilgileri tutulmaktadır.


Resim 1.3
Personel Özlük Sekmesi: bu sekmede personelin TC kimlik Ana adı, Baba adı, eğitim durumları gibi tutulduğu bölümdür



Resim 1.4

Bu penceremizde personelimiz izin işlemlerin bu panelimizde takip ediyoruz. Sol tarafta bulunan personel listesinde personeli seçeriz ve bu personelimiz izin işlemleri yaparız


Resim 1.5
Bu penceremizde personelin giriş çıkış işlemleri tutuluyor. Burada personelin giriş çıkış saat ve tarih işlemleri şöyle yapılıyor. Önce hangi personel ise sol tarafta personel ismine tıklıyoruz sonra o personelin işe başlama tarihi ni giriyoruz.


Resim 1.6
Burada personelimizin avans ve kesinti işlemi tutulmaktadır. hangi personelin ne kadar avans aldığını niçin aldığını burada öğrene bilir ve personele avans verebilir

Buradan indirebilirsiniz: indir

8 Mayıs 2013 Çarşamba

Butonların Rengini Değiştirme


Yapılan projelerde genellikle yukarıda ki gibi butonların rengi hep aynı olmaktadır bunları değiştirebiliriz.
Bir tane örnek vererek yapalım.
Örneğin: Kaydet butonu : Yeşil, Sil butonu ise kırmızı olacak şekilde yapalım.

1 Mayıs 2013 Çarşamba

JTextField de Boş Alan Kontrolü

JTextField yazı alanların boş olup olmadiğini kontrolu işlemini yapacağiz. Herhangi bir bilgi bilgi girilmemişse boş kayıtları engelemek amacıyla kullanılabilir.

Resim 1.1
Burada kaydet butonuna tıkladığımızda bize boş alanı doldurunuz  mesaj veririr.

Resim 1.2
Burada kaydet butonuna tıkladığımızda kaydetme işlemin gerçekleştirir

Kodları

JLabel acıklamaJLabel1 = new JLabel("Acıklama");
TatilHesapJPanel.add(acıklamaJLabel1);
final JTextField acıklamaField = new JTextField();
TatilHesapJPanel.add(acıklamaField);

JLabel TatilJLabel1 = new JLabel("Tatil Tipi");
TatilHesapJPanel.add(TatilJLabel1);
String[] tatilStrings ={"Ücretli","Ücretsiz"};
final JComboBox tatilBox = new JComboBox(tatilStrings);
TatilHesapJPanel.add(tatilBox);

//tasarım için kodlarımız bunlar...

keydetButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {

if (acıklamaField.getText().equals("") || tatilBox.getSelectedItem().equals("")) {
JOptionPane.showMessageDialog(null, "Boş Alanları Doldurunuz");
//bizim işimize yarayacak kodları yukardaki satırlardır  
}else {
TatilDomain ekleDomain = new TatilDomain();
ekleDomain.setAcıklama(acıklamaField.getText());
ekleDomain.setTatiltipi((String) tatilBox.getSelectedItem());
TatilDao.ekle(ekleDomain);
tatilJList.setListData(TatilDao.listele().toArray());
}
}
});







24 Nisan 2013 Çarşamba

JLİSTLER ARASI GEÇİŞ
burada sol tarafta bulunan personel listemizdeki personeller seçtiğimizde sağ tarafta bulunan giriş-çıkış sekmesi altındaki listede o personelimizin giriş-çıkış saat bilgileri bulunur. Aşağıda bu geçişin nasıl olduğu kodu vardır.

giriscikislistesi.addListSelectionListener(new ListSelectionListener() {

@Override
public void valueChanged(ListSelectionEvent arg0) {

GirisCikisDomain seciligirissaati = (GirisCikisDomain) giriscikislistesi
.getSelectedValue();

if (seciligirissaati != null) {

Date giris = null;
Date cikis = null;
try {
Date date = new SimpleDateFormat("dd.MM.yyyy")
.parse(seciligirissaati.getTarih());
tarihChooser.setDate(date);

giris = new SimpleDateFormat("HH:mm:ss")
.parse(seciligirissaati.getGirissaati());
cikis = new SimpleDateFormat("HH:mm:ss")
.parse(seciligirissaati.getCıkıssaati());
} catch (Exception e) {
e.printStackTrace();
}
girissaatPicker.setTime(giris);
cikisPicker.setTime(cikis);
}
}
});

bu kodumuz sağ tarafda bulunan giriş-çıkış sekmesini altında buluna listede sectiğimiz alt tarafta bulunan kısımları doldurma işlemini yapar..
 
bizim için asıl kodumuz şudur.

aramaJList.addListSelectionListener(new ListSelectionListener() {

@Override
public void valueChanged(ListSelectionEvent arg0) {

if (!aramaJList.isSelectionEmpty()) {
PersonelDomain personelDomain = (PersonelDomain) aramaJList
.getSelectedValue();

giriscikislistesi.setListData(GirisDao.listele(
personelDomain.getId()).toArray());
giriscikislistesi.setListData(GirisCikisDao.listele(personelDomain.getId()).toArray());
}
}
});  

bu kodumuz aramaJList sol tarafta bulunan personelimizin liste ismidir.bu kodumuz sayesinde seçtiğimiz personel yan taraftaki listede bilgileri görünecektir.

3 Nisan 2013 Çarşamba

Calendar Sınıfı Java’da Sistem Tarihi  Almak


celendar sınıfı ile sistemde bulunan tarihi şu kodu ile alabiliyoruz.

Calendar cld = Calendar.getInstance();
Date dt = cld.getTime();

JDateChooser dogumtarChooser = new JDateChooser(dt);
personelgenelbilgiler.add(dogumtarChooser);

bu kodu projemizi eklediğimizde projemizi otomatik olarak sistemin tarihini alacak. projelerimizde tarih kısmı doldurulmadığı zaman sorun çıkıyor. Bu sorunu önlemini yolu sistemde tarihi almaktır.

20 Mart 2013 Çarşamba

Java da Tema Seçimi

Java da projelerimize  daha güzel bir görünüm sağlaması için temalara ihtiyacımız bu temaları nasıl kavuşuruz.ilk önce şunu belirtelim javada toplam beş tema mevcuttur. Tek bir sefer aşağıdaki kodu yazarak istediğimiz temaya kavuşabiliriz .
şimdi bu temalar kavuşmanı kodu şöyledir.


               try {
UIManager.setLookAndFeel(UIManager.getInstalledLookAndFeels()[1]
.getClassName());
} catch (UnsupportedLookAndFeelException e) {
// Hatayı ele al
} catch (ClassNotFoundException e) {
// Hatayı ele al
} catch (InstantiationException e) {
// Hatayı ele al
} catch (IllegalAccessException e) {
// Hatayı ele al
}


UIManager.setLookAndFeel(UIManager.getInstalledLookAndFeels()[2].getClassName());

 Burada sıfırdan başlayarak 4 kadar sayı yazılıyor her sayı bir temayı ifade ediyor.Bu kodumuzu projemizin main kısmına yazıyoruz.sadece kodumuzun dizi içindeki rakamı değiştiriyoruz.



13 Mart 2013 Çarşamba

JTabbedPane de Geçiş Kontrolu

Bu yazımızda jtabbedPane'de  Paneller arasında geçiş kontrolün  nasıl olacağını açıklamaya  çalışacağım.
aşağıda iki penceremiz var bu pencereleri karşılaştıracağız.

Resim :1

Resim:2
Resim:1 de personel kartlar penceresinde sol tarafta bulunan personel genel sekmesi seçili .Aynı pencerede  resim 2 ye taktiğimizde avans ve kesintiler sekmesi seçili sağ tarafta bulunan personel işlemler sekmesini alt tarafta bulunan Ekle butonu ile yeni personel ekleyecez. Burada Ekle butonuna bastığımızda  1.Resimiz açılacak  ekle butona yazdığımız kodlar aşağıdadır. 


final JTabbedPane pane = new JTabbedPane();
JPanel  Panel1 = new JPanel(new GridLayout(1, 4));
JButton ekleButton = new JButton("Ekle", new ImageIcon("image/3.png"));
Panel1 .add(ekleButton);

burada  pane adında JTabbedPane  oluşturduk. JTabbedPane  içinde bir Jpanel oluşturduk panel içine ekle adında bir buttonu ekledik.
ekleButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
pane.setSelectedIndex(0);
}
});

bu kısımda ise buttonumuza action olayı verdik .Paneller arasına geçiş sağlayan kodumuz  pane.setSelectedIndex(0); budur . Ekle buttonumuza bastığımızda ilk panelimize gelir .ilk panelimizi getirmeyi sağlayan 0 dir sıfır yerine 2 yazarsak Resim.1 de görülen izin sekmemiz açılır.

JCelender kütüphanesin Projeye Ekleme

burada giriş tarihimize Jcelendar kütüphanesini kullandık .ilk önce Jcelender kütüphanesini internete indirdik .indirdiğimiz kütüphaneyi projemize ekledik .Eklem İşlemini Şöyle yapıyoruz 
1.projemize sağ tıklayıp Build Path burada Configure Build Path komutunu tıklıyoruz açılan pencerede Libraries seçili olmasına dikkat ediniz sağ tarafta bulunan Add External Jars tıklıyoruz burada indirdiğimiz Jcelender kütüphanesini ekletiyoruz ve ekleme işlemi bitmiş olur sonra javamızda şunu yazıp bu görüntüye kavuşuruz

JDateChooser girisTarihiChooser = new JDateChooser();
altpanelJPanel.add(girisTarihiChooser);,