机房登陆——三层实践

        前边学习了三层,也写过了三层的理论知识。后续用机房收费系统的登陆实例,实践了三层的理论知识。疏于思考,所以即使敲了两、三遍的登陆窗体也没有用。也是我没有信心将敲的实例贴出来的原因。

所以,我总结了:学习不是应付,做做表面功夫。用心+思考。

环境:VB.NET框架下,以传实体的方式完成。

UI层:即是界面部分。

                                        

实体:在UI层、BLL层、DAL层都需要使用的抽象。

'用户类:主要涉及用户的基本属性(信息)
Public Class UserInfo
    Private name As String
    Private password As String
    Private Userid As String
    Private level As String
    Private account As String

    '以下为可读写属性
    '登陆用户名字
    Public Property user_name() As String

        Get
            Return name
        End Get
        Set(value As String)
            name = value
        End Set

    End Property
    '登陆用户密码
    Public Property user_pwd As String
        Get
            Return password
        End Get
        Set(value As String)
            password = value
        End Set
    End Property
    '登陆用户ID
    Public Property user_id() As String
        Get
            Return Userid
        End Get
        Set(value As String)
            Userid = value
        End Set
    End Property
    '登陆用户级别
    Public Property user_level() As String
        Get
            Return level
        End Get
        Set(value As String)
            level = value
        End Set
    End Property
    '登陆用户积分
    Public Property user_account() As String
        Get
            Return account
        End Get
        Set(value As String)
            account = value
        End Set
    End Property
End Class


DAL层:主要是访问数据库,返回查询结果。

Imports System.Data.SqlClient
Imports Entity
Public Class LoginDAL
    '数据库连接语句
    Dim sCon As String = "Data Source = (local);Initial Catial = Charge_sys;Persist Security Info = True;User ID = sa;Password = 123"
    Dim conn As SqlClient.SqlConnection

    '实例化连接字符串,并打开
    Public Sub New()
        conn = New SqlClient.SqlConnection
        conn.ConnectionString = sCon
        conn.Open()
    End Sub

    '查询数据库中的用户是否存在.
    Public Function Query_User(ByVal txtUser As Entity.UserInfo) As Boolean
        '定义数据库查询语句
        Dim commandtext As String
        commandtext = "select * From User_Info where userID = '" & txtUser.user_id & "'And PWD = '" & txtUser.user_pwd & "'"

        Dim sqlcmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(commandtext, conn)
        '定义一个reader来读数据,查询用户是否存在
        Dim myReader As SqlDataReader
        myReader = sqlcmd.ExecuteReader()

        '如果查询记录不为空,则返回真;记录为空,返回假。
        If myReader.Read() Then
            Return True
        Else
            Return False
        End If

        '关闭连接
        conn.Close()

    End Function

End Class

BLL层:主要做逻辑判断,实例化DAL层的类,取得查询结果。进行逻辑判断。

Imports Entity
Imports LoginDAL
Public Class ManagerUser
    '定义一个D层的对象
    Dim db As New LoginDAL.LoginDAL

    '此函数的作用是返回D层的执行的结果
    Public Function query_user(ByVal model As Entity.UserInfo) As Boolean
        Return db.Query_User(model)
    End Function
End Class

UI层:收集用户的信息,实例化BLL层的类,取得判断结果。返回给用户。

Imports Entity
Imports LoginBLL
Public Class Form1
    Private Sub btnCancle_Click(sender As Object, e As EventArgs) Handles btnCancle.Click
        End
    End Sub

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        '定义一个实体类对象,将文本框中的内容赋给实体类对象
        Dim CurrentUser As New UserInfo
        CurrentUser.user_id = txtUserName.Text.ToString()
        CurrentUser.user_pwd = txtUserPWD.Text.ToString()

        '定义一个逻辑层对象,根据业务逻辑层返回的结果,通知用户信息
        Dim UserBLL As LoginBLL.ManagerUser = New LoginBLL.ManagerUser

        If UserBLL.query_user(CurrentUser) Then
            MsgBox(True)
        Else
            MsgBox(False)
        End If

    End Sub
End Class

至此登陆窗体完成。

小结:

1.登陆实例可谓,麻雀虽小,五脏俱全。容易理清三层之间的关系及操作。

2.数据库查询部分内容可以进行封装,避免重复操作。

3.逻辑层直接将查询结果返回,没有做过多处理,例如对数据库进行操作。

4.方法、函数都相对简单,只是返回布尔值。

5.命名方式不是很合理,待科学化。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 35
    评论
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值