菜鸟编程VB.NET登录窗体之三层思想

本文介绍了一个使用VB.NET实现的三层架构登录系统的详细过程。包括实体层、业务逻辑层(BLL)和数据访问层(DAL)的设计与实现。通过具体的代码示例展示了如何在各层间传递数据和处理逻辑。


上篇博客中,我们通过VB.NET利用面向过程思想将登录实例实现了,这次我们将三层思想加入登录实例,下面来看下我们的实现过程,欢迎大家指正。

关于我们登录所用的数据库我们还是用上篇博客中所建立的数据库,所用关于数据库的信息我就不再这里重复了。

下面我们来看下我们的具体实现。

首先我们先来看下我们三层的项目。

接下来是它们之间的引用关系


UI层引用BLL层和实体层

BLL层引用DAL层和实体层

DAL层引用实体层

接下来看下我们的界面

再往下就是我们的代码部分


首先我们先看的是实体层:

Public Class ModelUser
    '声明私有字段
    Private _UserName As String
    Private _UserPWD As String

    '声明数据库表中的字段信息
    Public Property strUser_Name() As String
        Get
            Return _UserName
        End Get
        Set(value As String)
            _UserName = value
        End Set
    End Property

    Public Property strUser_PWD() As String
        Get
            Return _UserPWD
        End Get
        Set(value As String)
            _UserPWD = value
        End Set
    End Property
End Class


然后是UI

Public Class frmLogin
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub btnOk_Click(sender As Object, e As EventArgs) Handles btnOk.Click
        '输入框进行限制 
        If txtUserName.Text = "" Then
            MsgBox("账号输入不得为空!", MsgBoxStyle.Information)
        Else
            If txtPWD.Text = "" Then
                MsgBox("密码输入不得为空!", MsgBoxStyle.Information)
            End If
        End If

        Dim ModelUi As Model.ModelUser = New Model.ModelUser '声明并实例化实体对象
        Dim BCheck As Login.BLL.BManage = New BLL.BManage '声明并实例化

        '将界面信息传入实体
        ModelUi.strUser_Name = txtUserName.Text.Trim
        ModelUi.strUser_PWD = txtPWD.Text

        '将B层传来的结果进行显示

        If BCheck.LoginManage(ModelUi) = ChrW(1) Then
            MsgBox("账号输入错误!")
            txtUserName.Focus()
            txtUserName.SelectAll()
        ElseIf BCheck.LoginManage(ModelUi) = ChrW(2) Then
            MsgBox("登录成功!")
        ElseIf BCheck.LoginManage(ModelUi) = ChrW(3) Then
            MsgBox("密码输入错误!")
            txtPWD.Focus()
            txtPWD.SelectAll()

        End If

    End Sub

    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        Me.Close()
    End Sub
End Class



接下来是BLL

Public Class BManage
    Public Function LoginManage(ByVal User As Login.Model.ModelUser) As Char
        '声明并实例化D层和实体层的方法
        Dim DalManage As Login.DAL.DalManage = New DAL.DalManage
        Dim ModelBll As Login.Model.ModelUser = New Model.ModelUser

        '将U层传来的信息传入D层
        ModelBll.strUser_Name = User.strUser_Name
        ModelBll = DalManage.DalManage(ModelBll)

        '将D层传来的信息与U层传来的信息进行逻辑判断
        If ModelBll.strUser_PWD = Nothing Then '账号错误
            Return ChrW(1)
        Else
            If ModelBll.strUser_PWD = User.strUser_PWD Then '登陆成功
                Return ChrW(2)
            Else
                Return ChrW(3) '密码错误

            End If
        End If
    End Function

End Class


最后是我们的DAL

Public Class DalManage
    '数据源连接
    Dim cnStr As String = "data source=zwk-PC;initial catalog=SanCeng;user id=sa;password=zwk;"
    Dim cn As SqlClient.SqlConnection = New SqlClient.SqlConnection(cnStr)

    Public Function DalManage(ByVal User1 As Login.Model.ModelUser) As Login.Model.ModelUser
        '进行数据查询 查询数据放到DataReader中
        cn.Open()
        Dim strSQL As String = "select * from TLoginUser where strUser_ID='" & User1.strUser_Name & "'"
        Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(strSQL, cn)
        cmd.CommandText = strSQL
        Dim dr As SqlClient.SqlDataReader = cmd.ExecuteReader()

        '声明并实例化实体类
        Dim ModelDal As Login.Model.ModelUser = New Model.ModelUser

        '从DataRead中查询信息,并返回实体类
        Try
            If dr.Read() Then
                ModelDal.strUser_PWD = dr("strUser_PWD").ToString()
                Return ModelDal
            Else
                Return ModelDal
            End If
        Catch ex As Exception
            Return ModelDal
        Finally
            dr.Close()
            cn.Close()
        End Try
    End Function
End Class


我们运行的结果分别是以下三种情况


密码错误

账号错误

登录成功


到此我们的用三层思想所做的登录例子就实现了。


这是初次用三层所实例的例子,如有不足,请大家多多指正。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值