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

来源:互联网 发布:js 设置div可见 编辑:程序博客网 时间:2024/05/17 04:06

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

一、数据库的建立

       1.命名

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

           

         这里用到的命名原则有:

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

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

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

        

  二、登录窗体的实现

        应用三层以后,登录窗体包括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 FunctionEnd 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 FunctionEnd 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 PropertyEnd Class

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

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

          

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

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


     

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

  


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

0 0
原创粉丝点击