TC kimlik numaraları hepimizin hayatında önemli bir yer tuttu her zaman. Peki bu TC kimlik numaraları sizce rastgele mi oluşturuldu? Tabii ki hayır. Muazzam bir algoritma saklı içerisinde. Bu yazımızda bütün detaylarını sizlerle paylaşamayacağız fakat önemli noktaları belirtip Java programlama dili üzerinden basit bir arayüz ile nasıl sorgulama yapabileceğinizi göstereceğiz. Kodlarımızı yazarken yorum satırı içerisinde hangi satırda ne yaptığımızı tek tek anlatacağız. İşin püf noktalarını kaptığınız taktirde bütün dillerde bu algoritmayı yazıp kendinizi geliştirebilirsiniz.
TC Kimlik Numarasında Mutlaka Olması Gereken Detaylar
- ” 0 ” ile başlamamalı
- 11 Haneli olmalı
- İlk 10 basamağının toplamının 10’a bölümünden kalan 11. basamağı vermeli.
- 1-3-5-7-9. basamakların toplamının 7 ile çarpımı + 2-4-6-8. basamakların toplamının 9 ile çarpımından 10 bölümünün kalanı 10. basamağı vermeli.
- 1-3-5-7-9. basamakların toplamının 8. ile çarpımının 10’a bölümünden kalan 11. basamağı vermeli.
Özetle TC kimlik numarasında mutlaka olması gereken özellikler bu şekilde arkadaşlar. Şimdi ise kullanıcıdan TC kimlik numarasını alıp bu algoritmaya göre doğru olup olmadığını görsel arayüz ile kontrol ettireceğiz.
Ekran Görüntüleri
Kodlar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
package test; java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextField; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JLabel; public class tcno extends JFrame { private JPanel contentPane; private JTextField tc_no_txt; static String kimlikNo; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { tcno frame = new tcno(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public tcno() { setTitle("TC Kimlik No Sorgulama"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 396, 252); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); tc_no_txt = new JTextField(); tc_no_txt.setBounds(102, 64, 173, 35); contentPane.add(tc_no_txt); tc_no_txt.setColumns(10); kimlikNo = tc_no_txt.getText(); JButton sorgula_btn = new JButton("SORGULA"); sorgula_btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // SORGULA ADLI BUTONA BASINCA NELER OLACAĞINI BU BÖLÜME YAZACAĞIZ. kimlikNo = tc_no_txt.getText(); // kimlikNo adlı değişkene txtye yazılan numarayı tanımlıyoruz. if (kimlikNo.length() != 11) { // TC KİMLİK NUMARASININ 11 HANELİ OLUP OLMADIĞINI KONTROL EDİYORUZ. İLK ŞART BU !! JOptionPane.showMessageDialog(null, "Lütfen 11 haneli numara giriniz.", "TC Kimlik No Sorgulama", JOptionPane.ERROR_MESSAGE); // 11 HANELİ DEĞİLSE HATA MESAJI GÖNDERİYORUZ. } int[] hane = new int[11]; // 11 HANELİ BİR DİZİ OLUŞTURUYORUZ. int toplam = 0; for (int i = 0; i<11; i++) { // DÖNGÜ İLE TEK TEK RAKAMLARI DİZİYE DİZİYE ATIYORUZ. hane[i] = Integer.parseInt(String.valueOf(kimlikNo.charAt(i))); // DİZİYE ATMIŞ OLDUĞUMUZ SAYILARI INTEGER A DÖNÜŞTÜRME İŞLEMİ YAPIYORUZ. toplam += hane[i]; // TOPLAM ADLI DEĞİŞKENE RAKAMLARIN TOPLAMINI GÖNDERİYORUZ. } toplam -= hane[10]; //DİZİLERDE SIRALAMA 0DAN BAŞLADIĞI İÇİN 10. HANEYİ YANİ TC NOYA GÖRE 11. HANEYİ TOPLAM DEĞİŞKENİNDEN ÇIKARTIYORUZ. if ((toplam % 10) != hane[10]) { // TC KİMLİK NUMARANIZIN İLK 10 BASAMAMAĞININ TOPLAMININ 10'A BÖLÜMÜNDEN KALAN 11. BASAMAĞI VERİR. KENDİ NUMARANIZDA DENEYEBİLİRSİNİZ. JOptionPane.showMessageDialog(null, "TC Kimlik Numarası Yanlış!", "TC Kimlik No Sorgulama", JOptionPane.ERROR_MESSAGE); } if (((hane[0] + hane[2] + hane[4] + hane[6] + hane[8]) * 7 + (hane[1] + hane[3] + hane[5] + hane[7]) * 9) % 10 != hane[9]) { // (1-3-5-7-9. BASAMAKLARIN TOPLAMININ 7 İLE ÇARPIMI) + (2-4-6-8. BASAMAKLARIN TOPLAMININ 9 İLE ÇARPIMINDAN 10 BÖLÜMÜNÜN KALANI 10. BASAMAĞI VERİR. JOptionPane.showMessageDialog(null, "TC Kimlik Numarası Yanlış!", "TC Kimlik No Sorgulama", JOptionPane.ERROR_MESSAGE); } if (((hane[0] + hane[2] + hane[4] + hane[6] + hane[8]) * 8) % 10 != hane[10]) { // 1-3-5-7-9. BASAMAKLARIN TOPLAMI 8 İLE ÇARPILIP 10'A BÖLÜNÜMÜNDEN KALAN 11. BASAMAĞI VERİR. JOptionPane.showMessageDialog(null, "TC Kimlik Numarası Yanlış!", "TC Kimlik No Sorgulama", JOptionPane.ERROR_MESSAGE); } else { JOptionPane.showMessageDialog(null, "TC Kimlik Numarası Doğru!", "TC Kimlik No Sorgulama", JOptionPane.INFORMATION_MESSAGE); } } }); sorgula_btn.setBounds(140, 123, 97, 25); contentPane.add(sorgula_btn); JLabel label_tc = new JLabel("TC Kimlik No"); label_tc.setBounds(151, 35, 80, 16); contentPane.add(label_tc); } } |
Hangi satırda ne yaptığımızı yanlarına detaylı olarak yazdım. Adım adım takip ederek ne yaptığımızı iyice anlayabilirsiniz.
KODU DAHA İYİ GÖRÜNTÜLEMEK İÇİN SAĞ ÜSTTEN “KODU YENİ PENCEREDE AÇ” BUTONUNA TIKLAYABİLİRSİNİZ.
Herhangi bir sorunuz olduğunda sormaktan çekinmeyin lütfen.
JAVA İLE YAZDIĞIMIZ DİĞER ÖRNEKLER İÇİN LÜTFEN TIKLAYINIZ.