C# 3 pogingen.
Maar ze hebben maar 3 pogingen om in te loggen.
Alleen ik heb zoveel manieren geprobeert alleen werkte het steeds niet.
met het bedoel ik mijn while loop.
Wat ik nu heb is dit:
Code (php)
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
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
class Program
{
static void Main(string[] args)
{
Console.Write("Gebruikersnaam: ");
string name;
name = Console.ReadLine();
if (checkPass() == true)
{
Console.WriteLine("Welkom bij SoundSharp {0}", name);
}
Console.ReadKey();
}
public static Boolean checkPass()
{
Console.Write("Wachtwoord: ");
string password = "SOUNDSHARP";
string userInvoer = Console.ReadLine();
string invoer = userInvoer.ToUpper();
bool check1;
int pogingen = 0;
do
{
if (pogingen == 3)
{
Console.WriteLine("Te vaak foutief wachtwoord ingevoerd.\nHet programma zal nu sluiten.");
}
else
{
if (invoer == password)
{
Console.WriteLine("Goed");
check1 = true;
}
else
{
Console.WriteLine("Fout");
check1 = false;
pogingen += 1;
}
}
} while (check1 == false);
}
}
{
static void Main(string[] args)
{
Console.Write("Gebruikersnaam: ");
string name;
name = Console.ReadLine();
if (checkPass() == true)
{
Console.WriteLine("Welkom bij SoundSharp {0}", name);
}
Console.ReadKey();
}
public static Boolean checkPass()
{
Console.Write("Wachtwoord: ");
string password = "SOUNDSHARP";
string userInvoer = Console.ReadLine();
string invoer = userInvoer.ToUpper();
bool check1;
int pogingen = 0;
do
{
if (pogingen == 3)
{
Console.WriteLine("Te vaak foutief wachtwoord ingevoerd.\nHet programma zal nu sluiten.");
}
else
{
if (invoer == password)
{
Console.WriteLine("Goed");
check1 = true;
}
else
{
Console.WriteLine("Fout");
check1 = false;
pogingen += 1;
}
}
} while (check1 == false);
}
}
Het is voor mij niet duidelijk hoe ik het dus moet maken.
Dus als jullie het zouden willen, dat jullie er ook even een uitleg bij geven.
Dankjewel, Mathieu.
Gewijzigd op 13/02/2015 09:37:46 door Mathieu Posthumus
Liever op (gewone) manier uitlegge.
En ik heb nog niet super veel verstand van methods!
C# is toch voornamelijk OOP? Waarom zou je er dan niet aan willen beginnen?
Wat je wilt doen is een class maken die de inlog afhandelt, of dit nu in PHP of C# is, OOP is eend denkwijze.
Denk na over wat je wilt bereiken per class en wat je wilt checken, if en else's moet je zoveel mogelijk vermijden.
methods wat je wellicht wilt gebruiken:
- checkPassword();
- addTry();
- doLogin();
- addUser();
Wat je wilt is dus gebruik maken van de class en niet alles in de class regelen.
In je hoofdbestand ga je deze acties oproepen.
Dan in tekst uitleggen nu.
Je hebt een user die je wilt verifieren. Haal deze gebruiker op uit de DB of iets.
Ga daarna vergelijken of de gebruiker gelijke wachtwoorden heeft gebruikt.
Zonee, dan moet je het onthouden voor die user in een sessie o.i.d of bij de user zelf in de DB.
Elke functie/method zou zo moeten zijn dat je iets checkt als het niet zo is moet je iets returnen zodat je kan herkennen dat het niet goed is gegaan.
Bijvoorbeeld:
Code (php)
Ik hoop dat het het wat duidelijker maakt. Ben zelf ook ngo geen OOP expert en leer elke dag.
Alleen ik heb nog niet echt het idee kunnen krijgen hoe ik dit moet fixen in C#
Ik zou zeggen begin met het maken vand e class die je nu al hebt van de user.
Ga daar functies maken die je wilt gebruiken;
- checken van password
- inloggen van de user
Zodra je dat hebt gedaan en het werkend hebt ookal heb je heel veel ifjes en elsjes in je code dan post je het nog een keer hier en kijken we er samen naar.
Dan maken we er een Dojo van, samen leren en je code schrijven / refinen.
Naja het is een school opdracht. Maar ik zal zeker als het is gelukt even alten weten
Code (php)
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
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
class Program
{
static void Main(string[] args)
{
Console.Write("Gebruikersnaam: ");
string name;
name = Console.ReadLine();
if (checkPass() == true)
{
Console.WriteLine("Welkom bij SoundSharp {0}", name);
}
Console.ReadKey();
}
private int pogingen = 0;
public static Boolean checkPass()
{
Console.Write("Wachtwoord: ");
string password = "SOUNDSHARP";
string userInvoer = Console.ReadLine();
string invoer = userInvoer.ToUpper();
bool check1;
do
{
if (pogingen == 3)
{
Console.WriteLine("Te vaak foutief wachtwoord ingevoerd.\nHet programma zal nu sluiten.");
}
else
{
if (invoer == password)
{
Console.WriteLine("Goed");
check1 = true;
}
else
{
Console.WriteLine("Fout");
check1 = false;
pogingen += 1;
}
}
} while (check1 == false);
}
}
{
static void Main(string[] args)
{
Console.Write("Gebruikersnaam: ");
string name;
name = Console.ReadLine();
if (checkPass() == true)
{
Console.WriteLine("Welkom bij SoundSharp {0}", name);
}
Console.ReadKey();
}
private int pogingen = 0;
public static Boolean checkPass()
{
Console.Write("Wachtwoord: ");
string password = "SOUNDSHARP";
string userInvoer = Console.ReadLine();
string invoer = userInvoer.ToUpper();
bool check1;
do
{
if (pogingen == 3)
{
Console.WriteLine("Te vaak foutief wachtwoord ingevoerd.\nHet programma zal nu sluiten.");
}
else
{
if (invoer == password)
{
Console.WriteLine("Goed");
check1 = true;
}
else
{
Console.WriteLine("Fout");
check1 = false;
pogingen += 1;
}
}
} while (check1 == false);
}
}
Volgens mij zou dit moeten doen wat je wil :)
Maar dan loop je tegen een ander probleem aan denk ik. Als je de class herinitialiseerd elke keer als je probeerd in te loggen dan zal elke keer je counter resetten.
Mocht dit het geval zijn is de enige oplossing die ik kan bedenken opslaan in een externe file (normaal ook niet echt slim maar voldoende voor een schoolopdracht)
De reden dat de 3 pogingen met deze code niet werk is omdat je keer als je de functie aanroept de pogingen reset.
Echter (als ik me niet vergis) met mijn oplossing is het een class variable ipv een locale variabele. Deze word ge(re)set als je de class initialiseerd.
Zelf leer zoveel mogelijk OOP en patterns en regels zodat het niveau gewoon aanzienlijk stijgt.
Ben ik zeker met je eens dat school opdrachten moeten kloppen :P, maar volgens mij gaat dit zonder externe file werken.
Verder moet ik eerlijk toegeven dat mn c# kennis ook van bijna 9 jaar geleden is :P
Ja dat met de externe file is ook geen probleem inderdaad. Maar de ifjes en elsjes in een method moet je altijd minimaliseren, werdt mij geleerd.