走在机房重构的路上之登录窗体的实现

            前几天,登录窗体的功能终于实现了。现在将我的收获总结在这里,希望能对大家有所帮助。要实现成功登录就一定要窗体和数据库,那么先说数据库。

一、数据库的建立

       1.命名

          上次的机房收费系统中,数据库建的是一塌糊涂,数据表之间的重复问题,逻辑错误问题,甚至学生卡上的余额就有好几个表。而且表名的命名也存在很大的问题,在这里我就不把我第一遍的数据库放在这里碍大家眼了,直接将我这次的图附上。

           走在机房重构的路上之登录窗体的实现_第1张图片

         这里用到的命名原则有:

                  ·数据库名采用首字母大写,避免与系统保留的冲突;

                 ·数据表适用T_表名,表明采用首字母大写。

                 ·表的字段:第一个首字母小写,后面的单词或者拼音,采用第一个首字母大写,如下图:

      走在机房重构的路上之登录窗体的实现_第2张图片  

  二、登录窗体的实现

        应用三层以后,登录窗体包括BLL层、UI层、DAL层和一个实体(Model)层。

        首先看BLL层的代码:

<span style="white-space:pre"></span><pre name="code" class="csharp">Public Class LoginBLL
    Public Shared Function isnotnullLoginBll(ByVal UI_testUser As Model.LoginModel) As String
        Dim BLL_testUser As Model.LoginModel           '表明BLL对DAL的引用
        Dim DAL_user As New DAL.LoginDAL           '表明对Model的引用

        '将Bll中user的“查询用户”的方法中查询出来的用户名赋值给DAL_testUser,也可以这样理解:用DAL_testUser来表示这一堆称呼
        BLL_testUser = DAL_user.LoginDALSelectUser(UI_testUser.userName)

        '判断返回值
        If UI_testUser.passWord = BLL_testUser.passWord Then
            '判断如果输入的密码和从数据库中查询出来的密码相同,则返回值为TRUE
            Return True
        Else
            Return False
        End If
    End Function
End Class
 
 

     

DAL层 :

Imports System.Data.SqlClient            '命名空间

Public Class LoginDAL
    Dim LoginConn As String = "server =YSC-pc;database=ChargeSystem;user id =sa;password=123456"
    Dim conn As New SqlConnection(LoginConn)
    '定义一个方法,名为LoginDALSelectUser,其中UserName以字符串的形式传递给这个方法
    Public Function LoginDALSelectUser(ByVal UserName As String)
        conn.Open()
        '定义于数据库之间的连接

        Dim LoginCmm As String = "select userID,passWord ,level from T_Users "
        Dim cmd As New SqlCommand(LoginCmm, conn)
        '建立好连接后,开始读取数据库中的内容
        Dim LoginReader As SqlDataReader

        LoginReader = cmd.ExecuteReader()

        '表明对Model的引用关系,将Model的LoginModel实例化出一个叫做testUser的对象
        Dim testUser As New Model.LoginModel

        If LoginReader.Read() Then
            'GetFieldValue 方法是从对应的数据表中查询出第一个字段的值,作为字符串的形式付给testUser的userName
            testUser.userName = LoginReader.GetFieldValue(Of String)(0)
            testUser.passWord = Trim(LoginReader.GetFieldValue(Of String)(1))

            '完成操作后,将testUser返回
            Return testUser

            LoginReader.Close()
            conn.Close()
        End If
    End Function
End Class

 最后是Model层:

Public Class LoginModel              '实体层中都将数据表中的字段作为一个方法;也就是说,用到数据表中的几个字段,这里就要有至少几个以字段命名的方法
    Private MuserName As String
    Public Property userName() As String
        Get
            Return MuserName
        End Get
        Set(value As String)
            MuserName = value
        End Set
    End Property

    Private MpassWord As String
    Public Property passWord() As String
        Get
            Return MpassWord
        End Get
        Set(value As String)
            MpassWord = value
        End Set
    End Property
End Class

                代码实现虽然还容易,但其中要注意一下几点:

    1.层之间实现引用,否则会出现如下的错误:

          走在机房重构的路上之登录窗体的实现_第3张图片

       这是由于BLL层没有对DAL引用,就会出现这个错误的提示。

2.命名空间造成的错误提示:


      走在机房重构的路上之登录窗体的实现_第4张图片

                解决方案是:定义一个命名空间,实现下图的效果:

  走在机房重构的路上之登录窗体的实现_第5张图片


                   这些都是一些简单地问题,但要引起大家的注意,毕竟细节决定成败。

你可能感兴趣的:(登录窗体)