现在的位置: 首页 > 综合 > 正文

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

2013年09月19日 ⁄ 综合 ⁄ 共 3040字 ⁄ 字号 评论关闭

       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 Sub
End Class

业务逻辑层具体实现:

Imports LoginDLL
Imports 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 Function
End Class

数据访问层实现:

Imports LoginEntity
Imports 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 Property

End Class

状态枚举类:

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

抱歉!评论已关闭.