VB.net+三层架构 实现登录功能

   理解分层真的花费了很长的时间,不过现在看来,对分层还是有了一些初步的理解,暂时贴出来见见光光,里面可能有很多不足到之处,希望大家能及时指出来,感激不尽,在此谢过了,小菜虫迫切需要您的指教。

   一、首先说说为什么要分层?

  背景:2011年,廊坊师范学院,信息技术作品展。

  事件:我们七个同学一起合作用VB做了一个小程序名叫《宝宝乐园》,其中,有人做英语部分,有人做算术部分,有人做电子琴,有人做涂鸦,还有人做动画界面,还有人收集材料,总之,最后通过加载窗体的方式攒出来了一个程序。我们美名曰这个过程叫做团队合作开发~

    初步学习了三层之后才晓得这只是把一个人的工作分给了多个人来干,团队合作效率非常差,而且程序运行非常不和谐,就好像一件上衣,两个人做袖子,一个人做领子,还有一个人做中间部分,最后缝到一起。当袖子出了问题,就得把线拆掉,然后重新做袖子,做袖子的人还要一段段的找袖子的哪部分出了问题,做好之后,还要继续缝到上衣中。至于最后上衣的样子就不用说了。而且程序部分都是各做各的,没有任何规范可言。

    那么,我们初步认识一下三层: 如果把项目暂且分成三层,UI层、DAL层、BLL层,如下图的三者的联系:

   1、表示层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

当然下图中也有一个Entity实体类,他在三层中并不是作为一层而存在的,而是作为一个类库,起到封装的作用,带着参数像血液一样流走与三层之间,谁需要就给谁,这是我的理解。
在这里插入图片描述

到底为什么vb.net教程
要分层呢?因为分层具备的优点:

1、分工就明确多了,各人只需要关注自己的那一层,这样c#教程就可以根据工作人员各自的优势来分工,有助于提高效率。

2、代码就规范多了,各人根据UML图或者文python基础教程档提供的资料,进行统一的规范。

3、层次清晰,利于维护。

4、高内聚,低耦合。

二、那么下面我贴出一个简单的登录系统的代码,通过三层和Vb.net实现

'实体类,映射数据库
Public Class UserInfo
#Region "定义数据表中各个属性变量"
    Private strUserName As String
    Private strPassword As String
#End Region
#Region "定义数据表中各个属性"
    ''' <summary>
    ''' 用户名
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks>201211008:57 by JYH</remarks>
    Public Property userName() As String
        Get
            Return strUserName
        End Get
        Set(ByVal value As String)
            strUserName = value
        End Set
    End Property
    ''' <summary>
    ''' 密码
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks>201211009:01 by JYH</remarks>
    Public Property password() As String
        Get
            Return strPassword
        End Get
        Set(ByVal value As String)
            strPassword = value
        End Set
    End Property
#End Region
End Class
'数据访问层
Imports System.Data.SqlClient
Imports Entity.UserInfo
 
Public Class da_UserInfo
    '连接数据库的语句:
    Private connStr As String = "server=192.168.24.222;database=charge3_sys;uid = sa;pwd=123456"
 
    '获得一条数据
    Public Function GetDataRow(ByVal EntityUserInfo As Entity.UserInfo) As Entity.UserInfo
        Dim sql As String = "select * from UserInfo where UserName='" & EntityUserInfo.userName & "'"
        Dim conn As SqlConnection = New SqlConnection(connStr)
        Dim cmd As SqlCommand = New SqlCommand(sql, conn)
        Dim sdr As SqlDataReader = Nothing
        Dim UserDataTable As DataTable = New DataTable()
        Dim ds As New DataSet
        Dim dap As SqlDataAdapter = New SqlDataAdapter(cmd)
        Dim EntityUserInfo1 As New Entity.UserInfo
        Try
            conn.Open()
            dap.Fill(ds)
            Dim dr As DataRow = ds.Tables(0).Rows(0)
            EntityUserInfo1.userName = dr("UserName")
            EntityUserInfo1.password = dr("Password")
            Return EntityUserInfo1
        Catch ex As Exception
            EntityUserInfo1.password = ""
            Return EntityUserInfo1
        Finally
            If Not IsNothing(conn) Then
                conn.Close()
            End If
        End Try
    End Function
End Class
 
 
 
'业务逻辑层
Imports Entity
Imports DAL.da_UserInfo
Public Class b_userInfo
    '判断密码是否正确
    Public Function Check(ByVal EntityUserInfo As Entity.UserInfo) As Boolean
        Dim DALUserInfo As New DAL.da_UserInfo
        Dim EntityUserInfo2 As New Entity.UserInfo
        EntityUserInfo2.userName = EntityUserInfo.userName
        EntityUserInfo2 = DALUserInfo.GetDataRow(EntityUserInfo2)
        If Trim(EntityUserInfo2.password) = Trim(EntityUserInfo.password) Then
            Return True
        Else
            Return False
        End If
    End Function
 
End Class
 

 

'UI层,窗体代码
Imports Entity
Imports BLL
 
 
Public Class frmLogin
    Public LoginOk As Boolean = False
 
    Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub
 
    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        If Trim(txtUserName.Text) = "" Or Trim(txtPassword.Text) = "" Then
            MsgBox("请填写完整信息!")
            Exit Sub
        End If
        Dim EntityUserInfo As New Entity.UserInfo
        Dim BLLUserInfo As New BLL.b_userInfo
        EntityUserInfo.userName = txtUserName.Text
        EntityUserInfo.password = txtPassword.Text
 
        If BLLUserInfo.Check(EntityUserInfo) Then
            MsgBox("登录成功")
            gbLoginOk = True
            Me.Close()
        Else
            MsgBox("输入错误,请重新输入!")
            Exit Sub
        End If
 
    End Sub
 
        Private Sub frmTest_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        Charg.frmMain.Show()
        If LoginOk = False Then End
    End Sub
End Class
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值