三层架构——系统用户登录模块功能实现

来源:互联网 发布:js全屏幻灯片切换效果 编辑:程序博客网 时间:2024/04/28 14:40

       UI层:展现给用户的界面,并为用户提供对系统进行操作的接口,此处即为用户提供身份验证的接口(验证用户名和密码).由于UI层向用户提供了接口所以其必有接受、传递用户名、密码的方法,当用户身份验证通过后还应该有显示用户信息的方法。

界面设计:


        业务逻辑层:针对用户身份验证的逻辑处理,所以对于登陆模块功能来说业务逻辑层有一个用户身份验证的方法,该方法实现对用户身份验证的逻辑处理。

        数据访问层:访问数据库,该层实现对数据库的连接,对数据进行增、删、查、改。

模块类图:


用户登录状态图:


用户登录时序图:


UI层界面类实现:

Imports LoginBLL'系统登陆界面类Public Class UserLogin    Private usermanager As New UserManager    Public Sub Login(ByVal username As String, ByVal password As String) '系统登陆方法        Dim a As LoginEntity.Status = usermanager.Validate(username, password)        If (a = LoginEntity.Status.success) Then            Display(username)        ElseIf (a = LoginEntity.Status.fail) Then            MsgBox("用户名或密码错误!")        ElseIf (a = LoginEntity.Status.lock) Then            MsgBox("用户登录次数过多该账户已被锁定!")            End '用户被锁定后系统退出        End If    End Sub    Public Sub Display(ByVal username As String) '登陆成功后显示用户名跟欢迎信息        MsgBox(username + ":欢迎登陆")    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Me.Login(txtUserName.Text, txtPassWord.Text)    End Sub    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click        End    End SubEnd Class


业务逻辑层具体实现:

Imports LoginDLLImports LoginEntity'业务逻辑处理类Public Class UserManager    Private userdao As New UserDao    Private user As New User    Public Function Validate(ByVal username As String, ByVal password As String) As Status '验证用户身份返回用户状态        user = userdao.Query(username, password)        user.userCount = user.userCount + 1        'MsgBox(user.userCount)        If (user.userName <> username Or user.userPassword <> password) Then            user.UserState = Status.fail        Else            user.UserState = Status.success        End If        If (user.userCount > 3) Then            user.UserState = Status.lock        End If        Return user.UserState    End FunctionEnd Class


数据访问层实现:

Imports LoginEntityImports System.Data.SqlClient'数据库访问类Public Class UserDao    Private user As New User    Private Const connectstr = "server=.;database=bbs;uid=sa;pwd=123456"    Private conn As SqlClient.SqlConnection    Private rs As SqlClient.SqlDataReader    Private cmd As SqlClient.SqlCommand    Public Sub New()        conn = New SqlClient.SqlConnection        conn.ConnectionString = connectstr        Try            conn.Open() '打开数据库连接            Console.WriteLine("数据库连接成功!")        Catch ex As Exception        Finally        End Try    End Sub    Public Sub Colse() '关闭数据库连接        conn.Close()    End Sub    Public Function Query(ByVal username As String, ByVal password As String) As User '查询用户信息并返回用户信息        cmd = New SqlClient.SqlCommand("select * from users where name='" + username + "'and password='" + password + "'", conn)        Try            rs = cmd.ExecuteReader()            While (rs.Read)                user.userName = rs.Item("name")                user.userPassword = rs.Item("password")                user.UserState = Status.success            End While        Catch ex As Exception        Finally            If Not IsNothing(conn) Then                Colse()            End If        End Try        Return user    End Function   End Class


用户实体类:

'用户实体类Public Class User    Private Count As Integer = 0 '私有成员属性记录该用户验证登陆次数    Private state As Status '用户状态    Private name As String '用户名    Private password As String '密码    Public Property UserState As Status        Get            Return state        End Get        Set(ByVal value As Status)            state = value        End Set    End Property    Public Property userName As String        Get            Return name        End Get        Set(ByVal value As String)            name = value        End Set    End Property    Public Property userPassword As String        Get            Return password        End Get        Set(ByVal value As String)            password = value        End Set    End Property    Public Property userCount As String        Get            Return Count        End Get        Set(ByVal value As String)            Count = value        End Set    End PropertyEnd Class

状态枚举类:

'用户状态枚举类Public Enum Status    success    fail    lockEnd Enum


原创粉丝点击