Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1896 | Besucher online: 32
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Zahlen Addition als Spam Schutz


Autor: Tim Hartwig
Sprache: VB.NET
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 3776
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit dieser Klasse kann eine Zahlenvalidation generiert werden
die ein User dazu auffordert 2 Zahlen miteinander zu addieren.
Das Ergebnis kann dann überprüft werden ob es richtig ist.
Dabei wird die ausgeschrieben Zahl für die validierung verwendet.
Optimal um als Spam-Schutz z.B. bei Registrierungen zu fungieren.


Abgelegt unter: Spam, Zahlen, Addition.



Visual Basic
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
90
91
''' <summary>
''' Mit dieser Klasse kann eine Zahlenvalidation generiert werden
''' die ein User dazu auffordert 2 Zahlen miteinander zu addieren. 
''' Das Ergebnis kann dann überprüft werden ob es richtig ist.
''' Dabei wird die ausgeschrieben Zahl für die validierung verwendet.
''' Optimal um als Spam-Schutz z.B. bei Registrierungen zu fungieren.
''' </summary>
''' <remarks></remarks>
Public Class NumberValidator
    Public GermanNumbers As Dictionary(Of String, Integer)

    Sub New()
        GermanNumbers = New Dictionary(Of String, Integer)
        GermanNumbers.Add("null", 0)
        GermanNumbers.Add("eins", 1)
        GermanNumbers.Add("zwei", 2)
        GermanNumbers.Add("drei", 3)
        GermanNumbers.Add("vier", 4)
        GermanNumbers.Add("fünf", 5)
        GermanNumbers.Add("sechs", 6)
        GermanNumbers.Add("sieben", 7)
        GermanNumbers.Add("acht", 8)
        GermanNumbers.Add("neun", 9)
        GermanNumbers.Add("zehn", 10)
        GermanNumbers.Add("elf", 11)
        GermanNumbers.Add("zwölf", 12)
        GermanNumbers.Add("dreizehn", 13)
        GermanNumbers.Add("vierzehn", 14)
        GermanNumbers.Add("fünfzehn", 15)
        GermanNumbers.Add("sechszehn", 16)
        GermanNumbers.Add("siebzehn", 17)
        GermanNumbers.Add("achtzehn", 18)
    End Sub

    Public Structure ResultField
        Public Number1 As Integer
        Public Number2 As Integer
        Public Result As Integer
        Public Number1String As String
        Public Number2String As String
        Public ResultString As String
        Public Question As String
    End Structure

    ''' <summary>
    ''' Diese Funktion generiert eine Fragestellung um 2 Zahlen zu addieren.
    ''' Dabei wird einmal die Frage selber generiert und das Ergebnis zum späteren vergleich
    ''' </summary>
    Public Function GenerateQuestion() As ResultField
        Dim SystemResult As New ResultField

        SystemResult.Number1 = RandomNumber(0, 9)
        SystemResult.Number2 = RandomNumber(0, 9)
        SystemResult.Number1String = ""
        SystemResult.Number2String = ""

        SystemResult.Result = SystemResult.Number1 + SystemResult.Number2

        For Each KVP As KeyValuePair(Of String, Integer) In GermanNumbers
            If KVP.Value = SystemResult.Number1 Then
                SystemResult.Number1String = KVP.Key
            End If

            If KVP.Value = SystemResult.Number2 Then
                SystemResult.Number2String = KVP.Key
            End If

            If KVP.Value = SystemResult.Result Then
                SystemResult.ResultString = KVP.Key
            End If
        Next

        SystemResult.Question = "Addiere " & SystemResult.Number1String & " und " & SystemResult.Number2String

        Return SystemResult
    End Function

    ''' <summary>
    ''' Diese Funktion überprüft das Systemgenerierte Ergebnis mit dem Ergebnis des Users also die ausgeschrieben Zahl
    ''' </summary>
    ''' <param name="SystemResult">Das System-Ergebnis</param>
    ''' <param name="UserResult">Das Egebnis vom User als ausgeschrieben Zahl</param>
    Public Function CheckUserResult(ByVal SystemResult As ResultField, ByVal UserResult As String) As Boolean
        If SystemResult.ResultString = UserResult Then Return True
    End Function

    Private Function RandomNumber(ByVal Min As Long, ByVal Max As Long) As Long
        Randomize()
        RandomNumber = (Rnd() * (Max - Min)) + Min
    End Function
End Class
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.