Sprawdzamy poprawność numeru PESEL

PESEL to Powszechny Elektroniczny System Ewidencji Ludności. Za pomocą sumy kontrolnej możemy sprawdzić czy numer PESEL jest poprawny. Budowa numeru PESEL jest następująca: 1-2 cyfra - ostatnie dwie cyfry roku urodzenia, 3-4 cyfra - dwie cyfry miesiąca urodzenia, 5-6 cyfra - dwie cyfry dnia urodzenia, 7-10 cyfra - liczba porządkowa z oznaczeniem płci (parzysta - kobieta, nieparzysta - mężczyzna), 11 cyfra - suma kontrolna. Sam algorytm sprawdzania sumy kontrolnej polega na obliczeniu sumy przemnożonych cyfr z numeru PESEL (od 1 do 10) przez odpowiednie wagi (1,3,7,9,1,3,7,9,1,3). Wynik jest dzielony modulo 10, odejmowany od 10 i jeszcze raz dzielony modulo 10. Cyfra którą dostaniemy powinna być zgodna z 11 cyfrą numeru PESEL.
01.// wykorzystujemy klasę Scanner z pakietu java.util
02.import java.util.*;
03. 
04./**
05. * Sprawdzenie sumy kontrolnej w numerze PESEL
06. * @author kodatnik.blogspot.com
07. */
08.public class Pesel {
09.  
10. // metoda sprawdza poprawność numeru PESEL na podstawie sumy kontrolnej
11. // zwraca true dla poprawnych i false dla niepoprawnych numerów
12. public static boolean sprawdz(String pesel){
13.  // zakładamy tablicę z wagami
14.  int[] wagi = {1, 3, 7, 9, 1, 3, 7 ,9 ,1 ,3};
15. 
16.  // sprawdzamy długość PESEL'a, jeśli nie jest to 11 zwracamy false
17.  if (pesel.length() != 11) return false;
18.   
19.  // zakładamy zmienną będącą sumą kontrolną
20.  int suma = 0;
21.   
22.  // liczymy w pętli sumę kontrolną przemnażając odpowiednie
23.  // cyfry z PESEL'a przez odpowiednie wagi
24.  for (int i = 0; i < 10; i++)
25.     suma += Integer.parseInt(pesel.substring(i, i+1)) * wagi[i];
26.   
27.  // pobieramy do zmiennej cyfraKontrolna wartość ostatniej cyfry z PESEL'a  
28.  int cyfraKontrolna = Integer.parseInt(pesel.substring(10, 11));
29. 
30.  // obliczamy cyfrę kontrolną z sumy (najpierw modulo 10 potem odejmujemy 10 i jeszcze raz modulo 10)
31.  suma %= 10;
32.  suma = 10 - suma;
33.  suma %= 10;
34.   
35.  // zwracamy wartość logiczną porównania obliczonej i pobranej cyfry kontrolnej
36.  return (suma == cyfraKontrolna);
37.   
38. }
39.  
40. public static void main(String[] args){
41.   
42.  Scanner sc = new Scanner(System.in);
43.  System.out.print ("Podaj numer PESEL: " );
44.   
45.  // pobieramy od użytkownika PESEL
46.  String pesel = sc.nextLine();
47.   
48.  // wyświetlamy na ekranie informacje o poprawności sumy kontrolnej PESEL
49.  System.out.println("Twój PESEL jest " + ((sprawdz(pesel)) ? "poprawny." : "niepoprawny"));
50. 
51. }
52.}
Uruchomiona aplikacja:
Podaj numer PESEL: 85032208451
Twój PESEL jest poprawny.
Powyższy algorytm nie sprawdza numeru PESEL pod względem nieprawidłowych danych (niewłaściwe numery miesięcy, dni). Zauważ PESEL: 66666666666 jest traktowany jako poprawny!
Dla określenia różnych lat (wieków) urodzenia dodaje się do numeru miesiąca następujące wartości: lata 1800-1899 - 80, lata 1900-1999 - 0, lata 2000-2099 - 20 itd.


5 Komentarzy - Sprawdzamy poprawność numeru PESEL

Anonimowy pisze...

Całkiem spoko rzecz.Pozdro.Michał Paryjczak

Anonimowy pisze...

bardzo mi sie przydalo :-)

auto_joker

Devon pisze...

Ciesze się, że mogłem pomóc :)

wujokrzysio pisze...

Polecam do testowania:
http://generatory.it/

obiady domowe z dostawą Ostrów Mazowiecka pisze...

moj pesel jest ok

Prześlij komentarz

Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)

Popularne posty