Untitled
unknown
plain_text
a year ago
4.8 kB
5
Indexable
using System; using System.Linq; class AddPacient { enum Blad { Imie, Nazwisko, NumerTelefonu, PESEL } static Blad? SprawdzImie(string imie) { //sprawdzenie długości imienia if (imie.Length < 2 || imie.Length > 13) return Blad.Imie; //sprawdzenie czy pierwsza litera jest wielka if (!char.IsUpper(imie[0])) return Blad.Imie; //sprawdzenie czy wszystkie pozostałe litery są małe if (imie.Skip(1).Any(c => char.IsUpper(c))) return Blad.Imie; //sprawdzenie czy imię nie zawiera cyfr if (imie.Any(char.IsDigit)) return Blad.Imie; return null; } static Blad? SprawdzNazwisko(string nazwisko) { //sprawdzenie długości nazwiska if (nazwisko.Length < 2 || nazwisko.Length > 20) return Blad.Nazwisko; //podział nazwiska na człony (jeśli występuje) string[] czlonyNazwiska = nazwisko.Split('-'); //sprawdzenie każdego członu nazwiska foreach (string czlon in czlonyNazwiska) { //sprawdzenie czy pierwsza litera jest wielka if (!char.IsUpper(czlon[0])) return Blad.Nazwisko; //sprawdzenie czy wszystkie pozostałe litery są małe if (czlon.Skip(1).Any(c => char.IsUpper(c))) return Blad.Nazwisko; //sprawdzenie czy człon nazwiska nie zawiera cyfr if (czlon.Any(char.IsDigit)) return Blad.Nazwisko; } return null; } static Blad? SprawdzNumerTelefonu(string numer) { //sprawdzenie długości numeru i czy zawiera on tylko cyfry if (!numer.All(char.IsDigit) && !numer.StartsWith("+")) return Blad.NumerTelefonu; //sprawdzenie, czy numer zaczyna się od "+" if (numer.StartsWith("+")) { //dla numeru zaczynającego się od "+", sprawdzenie długości if (numer.Length < 11 || numer.Length > 13) return Blad.NumerTelefonu; } else { //dla numeru bez "+", sprawdzenie czy ma dokładnie 9 cyfr if (numer.Length != 9) return Blad.NumerTelefonu; } return null; } static Blad? SprawdzPesel(string pesel) { //sprawdzenie, czy PESEL ma dokładnie 11 znaków i czy wszystkie znaki są cyframi if (pesel.Length != 11) { return Blad.PESEL; } for (int i = 0; i < pesel.Length; i++) { if (!char.IsDigit(pesel[i])) { return Blad.PESEL; } } int[] wagi = { 1, 3, 7, 9, 1, 3, 7, 9, 1, 3 }; int suma = 0; //przemnóż każdą cyfrę przez odpowiednią wagę i dodaj wynik do sumy for (int i = 0; i < 10; i++) { suma += (pesel[i] - '0') * wagi[i]; } //weź tylko ostatnią cyfrę sumy int ostatniaCyfraSuma = suma % 10; //cyfra kontrolna to 10 minus ostatnia cyfra sumy, jeśli wynik to 10, cyfra kontrolna to 0 int cyfraKontrolna = (10 - ostatniaCyfraSuma) % 10; //sprawdzenie, czy cyfra kontrolna jest równa ostatniej cyfrze numeru PESEL if (cyfraKontrolna == (pesel[10] - '0')) return null; else return Blad.PESEL; } static bool DodajPacjenta(string imie, string nazwisko, string numerTelefonu, string pesel, out Blad? error) { error = null; //sprawdzenie imienia if ((error = SprawdzImie(imie)) != null) return false; //sprawdzenie nazwiska if ((error = SprawdzNazwisko(nazwisko)) != null) return false; //sprawdzenie numeru telefonu if ((error = SprawdzNumerTelefonu(numerTelefonu)) != null) return false; //sprawdzenie PESEL if ((error = SprawdzPesel(pesel)) != null) return false; //jeśli nie ma błędów, zwróć true return true; } class Program { static void Main(string[] args) { Blad? error; bool success = AddPacient.DodajPacjenta("Jan", "Kowalski", "123456789", "01231567890", out error); if (success) { Console.WriteLine(success); } else { Console.WriteLine($"Nie udało się dodać pacjenta. Błąd w: {error}"); } Console.ReadKey(); } } }
Editor is loading...
Leave a Comment