Kontrollera personnummer i C#
Hej!
Vill börja med att säga att jag har sökt och har kollat tidigare trådar angående liknande problem, men hittar ingen som är en lösning för min huvudverk.
Jag har en en uppgift i c# där man ska kontrollera om personnumret är giltigt och vilket kön.
Jag har fått allt att fungera utom just kontrollen av personnumret och vilket kön det tillhör vad jag än skriver så får jag ett meddelande i en textbox som säger att personnumret är ogiltigt, jag vet att det är groteskt mycket kommentarer men jag har varit tvungen att lägga till dessa så jag vet vad jag har felsökt.
jag delar med mig av huvud programmet här nedan:
using System;
namespace Uppgift3WindowsForm
{
public partial class Form1 : Form
{
// Skapa en personklass med egenskaper och metoder
public class Person
{
// Egenskaper för förnamn, efternamn och personnummer
public string Fornnamn { get; set; }
public string Efternamn { get; set; }
public string Personnummer { get; set; }
// Metod för att kontrollera om personnumret är giltigt
public bool IsValid()
{
// Kontrollera att personnumret har rätt längd och format
if (Personnummer.Length != 13 || Personnummer[6] != '-')
{
return false;
}
// Ta bort bindestrecket och omvandla personnumret till en array av siffror
string digits = Personnummer.Replace("-", "");
int[] numbers = new int[12];
for (int i = 0; i < 12; i++)
{
numbers[i] = int.Parse(digits[i].ToString());
}
// Beräkna kontrolltalet enligt algoritmen
int sum = 0;
for (int i = 0; i < 12; i++)
{
// Multiplicera varje siffra med omväxlande 2 och 1
int product = numbers[i] * (2 - i % 2);
// Addera siffersummorna för respektive produkt
sum += product / 10 + product % 10;
}
// Kontrollera att kontrolltalet är jämnt delbart med 10
return sum % 10 == 0;
}
// Metod för att avgöra personens kön
public string GetGender()
{
// Kontrollera att personnumret är giltigt
if (!IsValid())
{
return "Personnummeret är ogiltligt";
}
// Ta ut näst sista siffran i personnumret
int digit = int.Parse(Personnummer[11].ToString());
// Om siffran är jämn är personen en kvinna, annars en man
if (digit % 2 == 0)
{
return "Kvinna";
}
else
{
return "Man";
}
}
}
// Skapa en instans av personklassen
Person person = new Person();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void registeraPersonnummerToolStripMenuItem_Click(object sender, EventArgs e)
{
// Visa formuläret för inmatning av personuppgifter
panel1.Visible = true;
}
private void AvslutaToolStripMenuItem_Click_1(object sender, EventArgs e)
{
// Stäng programmet
Application.Exit();
}
private void btnCheck_Click(object sender, EventArgs e)
{
// Hämta personuppgifterna från textfälten
person.Fornnamn = txtFornamn.Text;
person.Efternamn = txtEfternamn.Text;
person.Personnummer = txtPersonnummer.Text;
// Kontrollera om personnumret är giltigt
bool valid = person.IsValid();
// Visa resultatet i en multiline textbox
txtResultat.Text = $"Förnamn: {person.Fornnamn}\r\n";
txtResultat.Text += $"Efternamn: {person.Efternamn}\r\n";
txtResultat.Text += $"Personnummer: {person.Personnummer}\r\n";
txtResultat.Text += $"Giltigt: {valid}\r\n";
txtResultat.Text += $"Kön: {person.GetGender()}\r\n";
}
private void txtResultat_TextChanged(object sender, EventArgs e)
{
}
}
}
Varför gick nätverkskabeln till terapeuten? För att den kände sig utdragen och aldrig kopplad på rätt sätt!