机房重构——密码修改

前言:

说到密码修改感觉还是挺亲切的,在现在来看是比较清楚的,但可能是由于前段时间对七层理解的不是特别透彻,导致自己完成密码修改的功能时花了一部分时间,折腾了两天才完成,现在让我们一起来看看我的密码修改的各个层(有问题欢迎大家指出)。

界面展示:


实体层:UserPwdInfo

'**********************************************

'文件名:UserPwdInfo

'作者:袁甜梦

'小组:袁甜梦

'说明:

'创建日期:2016/3/7 17:20:52

'版本号:V1.0.0.0

'**********************************************
Public Class UserPwdInfo
    Public Shared UserName As String '用于记录登录时的用户名
    Public Shared OldPwd As String '用于记录输入的旧密码

    Private _Password As String
    Private _NewPwd1 As String
    Private _NewPwd2 As String

    Public Property Password As String
        Get
            Return _Password
        End Get
        Set(value As String)
            _Password = value
        End Set
    End Property
    Public Property NewPwd1 As String
        Get
            Return _NewPwd1
        End Get
        Set(value As String)
            _NewPwd1 = value
        End Set
    End Property
    Public Property NewPwd2 As String
        Get
            Return _NewPwd2
        End Get
        Set(value As String)
            _NewPwd2 = value
        End Set
    End Property
End Class

U层:frmChangePwd

Imports Entity
Imports Facade
Public Class frmChangePwd

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        '对输入框进行常规判断
        If txtOldPWD.Text = "" Then
            MsgBox("请输入原始密码!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtOldPWD.Focus()
            Exit Sub
        End If
        If txtNewPWD.Text = "" Then
            MsgBox("请输入新密码!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtNewPWD.Focus()
            Exit Sub
        End If
        If txtConfirmNewPWD.Text = "" Then
            MsgBox("请再次输入新密码!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtConfirmNewPWD.Focus()
            Exit Sub
        End If
        '实例化各层所需要的类
        Dim Facade As New Facade.ChangePasswordFacade
        Dim UserInfo As New Entity.UserPwdInfo
        ' UserInfo.UserName = frmLogin.txtUserName.Text
        UserInfo.Password = txtOldPWD.Text
        UserInfo.NewPwd1 = txtNewPWD.Text
        UserInfo.NewPwd2 = txtConfirmNewPWD.Text
        Dim strPassword As Boolean
        strPassword = Facade.CheckPwd(UserInfo)
        If strPassword = False Then
            MsgBox("旧密码输入错误,请重新输入!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtOldPWD.Text = ""
            txtOldPWD.Focus()
        Else
            If (txtNewPWD.Text <> txtConfirmNewPWD.Text) Then
                MsgBox("输入的两个新密码不相同,请重新输入!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                txtNewPWD.Text = ""
                txtConfirmNewPWD.Text = ""
                txtNewPWD.Focus()
            Else
                UserInfo.Password = txtNewPWD.Text.Trim()
                strPassword = Facade.UpdatePwd(UserInfo)
                If strPassword = True Then
                    MsgBox("密码修改成功!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    txtOldPWD.Text = ""
                    txtNewPWD.Text = ""
                    txtConfirmNewPWD.Text = ""
                Else
                    MsgBox("修改密码失败!", 0, "提示")
                End If


                
            End If
        End If

    End Sub

    Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click
        txtOldPWD.Text = ""
        txtNewPWD.Text = ""
        txtConfirmNewPWD.Text = ""
        txtOldPWD.Focus()
    End Sub
End Class

外观层:ChangePasswordFacade

'**********************************************

'文件名:ChangePasswordFacade

'作者:袁甜梦

'小组:袁甜梦

'说明:

'创建日期:2016/3/8 11:55:26

'版本号:V1.0.0.0

'**********************************************
Imports BLL
Imports Entity

Public Class ChangePasswordFacade
    '检查输入的两次新密码是否正确
    Public Function CheckPwd(ByVal UserInfo As Entity.UserPwdInfo) As Boolean
        Dim IsPwdExists As New BLL.ChangePasswordBLL
        Dim flag As Boolean
        flag = IsPwdExists.Checkpwd(UserInfo)
        If flag = True Then
            Return True
        Else
            Return False
        End If

    End Function
    Public Function UpdatePwd(ByVal UserInfo As Entity.UserPwdInfo) As Boolean
        Dim bllUpdatePwd As New BLL.ChangePasswordBLL
        Dim flag As Boolean
        flag = bllUpdatePwd.Updatepwd(UserInfo)
        If flag = True Then
            Return True
        Else
            Return False
        End If
    End Function
End Class

BLL层:ChargePasswordBLL

'**********************************************

'文件名:ChangePasswordBLL

'作者:袁甜梦

'小组:袁甜梦

'说明:

'创建日期:2016/3/8 12:16:12

'版本号:V1.0.0.0

'**********************************************
Imports IDAL
Imports Entity
Imports Factory
Public Class ChangePasswordBLL
    '检查密码是否正确
    Public Function Checkpwd(ByVal UserInfo As Entity.UserPwdInfo) As Boolean
        Dim Factory As New Factory.ChangePasswordFactory
        Dim IPwd As IDAL.ChangeIPassword
        IPwd = Factory.CreateIPwd()
        Dim table As New DataTable
        Dim flag As Boolean
        table = IPwd.selectPassword(UserInfo)
        If Entity.UserPwdInfo.OldPwd = UserInfo.Password Then
            flag = True
        Else
            flag = False
        End If
        Return flag
    End Function

    Public Function Updatepwd(ByVal UserInfo As Entity.UserPwdInfo) As Boolean
        Dim IPwd As IDAL.ChangeIPassword
        Dim factory As New Factory.ChangePasswordFactory
        Dim flag As Boolean
        IPwd = factory.CreateIPwd()
        flag = IPwd.updatePwd(UserInfo)
        If flag = True Then
            Return True
        Else
            Return False
        End If
    End Function

End Class

工厂:ChangePasswordFactory

'**********************************************

'文件名:ChangePasswordFactory

'作者:袁甜梦

'小组:袁甜梦

'说明:

'创建日期:2016/3/8 15:25:32

'版本号:V1.0.0.0

'**********************************************
Imports System.Reflection '反射
Imports System.Configuration '配置文件
Imports System.Data
Imports IDAL

Public Class ChangePasswordFactory
    Private Shared ReadOnly AssemblyName As String = "DAL"
    Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("DB")
    Public Function CreateIPwd() As ChangeIPassword
        Dim classname As String = "DAL" + "." + "ChangePasswordDAL"  '要实例化D层的名称
        Dim IPwd As ChangeIPassword
        IPwd = CType(Assembly.Load(AssemblyName).CreateInstance(classname), ChangeIPassword) '返回ChangeIPassword
        Return IPwd
    End Function

End Class

接口:ChangeIPassword

Imports Entity
Public Interface ChangeIPassword
    Function selectPassword(ByVal UserInfo As Entity.UserPwdInfo) As DataTable

    Function updatePwd(UserInfo As UserPwdInfo) As Integer

End Interface

DAL层:ChangePasswordDAL

'**********************************************

'文件名:ChangePasswordDAL

'作者:袁甜梦

'小组:袁甜梦

'说明:

'创建日期:2016/3/7 17:30:43

'版本号:V1.0.0.0

'**********************************************
'引用命名空间
Imports System.Data.SqlClient
Imports SqlHelper
Imports Entity
Imports IDAL
Public Class ChangePasswordDAL : Implements IDAL.ChangeIPassword
    Private sqlHelper As New SqlHelper.sqlhelper
    Public Function selectPassword(UserInfo As UserPwdInfo) As DataTable Implements ChangeIPassword.selectPassword
        Dim sql As String
        Dim table As DataTable
        Dim sqlParams As SqlParameter() = {New SqlParameter("@UserName", Entity.UserPwdInfo.UserName),
                                           New SqlParameter("@Password", Entity.UserPwdInfo.OldPwd)}
        sql = "select * from Users where UserName=@UserName and Password=@Password"
        table = sqlHelper.ExecSelect(sql, CommandType.Text, sqlParams)
        Return table
    End Function
    Public Function updatePwd(UserInfo As UserPwdInfo) As Integer Implements ChangeIPassword.updatePwd
        Dim sql As String
        Dim result As Integer
        Dim sqlparams As SqlParameter() = {New SqlParameter("@UserName", Entity.UserPwdInfo.UserName),
                                           New SqlParameter("@Password", UserInfo.Password)}
        sql = "update Users set Password=@Password where UserName=@UserName"
        result = sqlHelper.ExecAddDelUpdate(sql, CommandType.Text, sqlparams)
        Return result
    End Function
End Class

SqlHelper:sqlhelper+DALUtil

SqlHelper是在之前的七层登录的基础上又做了进一步的改进,由之前的只有一个带参数的sqlhelper方法,完善到带参数和不带参数两大类。

'**********************************************

'文件名:sqlhelper

'作者:袁甜梦

'小组:袁甜梦

'说明:

'创建日期:2016/4/1 18:02:36

'版本号:V1.0.0.0

'**********************************************
Imports System.Data.SqlClient
Imports System.Configuration
Imports IDAL
Public Class Sqlhelper
    Dim DBConnectStr As New DALUtil
    Dim DBConnection As New SqlConnection(DBConnectStr.connectString)
    '建立数据库连接  
    Dim cmd As New SqlCommand

    '设置连接

    '定义cmd命令
    Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As Integer
        '将传入的值,分别为cmd的属性赋值  
        Call CloseConn(DBConnection)
        Call CloseCmd(cmd)
        cmd.Parameters.AddRange(sqlParams)   '将参数传入  
        cmd.CommandType = cmdType            '设置一个值,解释cmdText  
        cmd.Connection = DBConnection                '设置连接,全局变量  
        cmd.CommandText = cmdText            '设置查询的语句  

        'Try
        DBConnection.Open()                      '打开连接  
        Return cmd.ExecuteNonQuery()     '执行增删改操作  
        cmd.Parameters.Clear()           '清除参数  
        'Catch ex As Exception
        'Return 0                         '如果出错,返回0  
        'Finally
        Call CloseConn(DBConnection)
        Call CloseCmd(cmd)
        'End Try
    End Function

    Public Function ExecAddDelUpdate(ByVal cmdText As String, ByVal cmdType As CommandType) As Integer
        '为要执行的命令cmd赋值  
        cmd.CommandText = cmdText       '先是查询的sql语句  
        cmd.CommandType = cmdType       '设置Sql语句如何解释  
        cmd.Connection = DBConnection           '设置连接  

        '执行操作  
        Try
            DBConnection.Open()
            Return cmd.ExecuteNonQuery()
        Catch ex As Exception
            Return 0
        Finally
            Call CloseConn(DBConnection)
            Call CloseCmd(cmd)
        End Try
    End Function

    Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType, ByVal sqlParams As SqlParameter()) As DataTable
        '执行查询操作,有参数
        Dim adapter As SqlDataAdapter
        Dim dt As New DataTable
        Dim ds As New DataSet

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = DBConnection
        cmd.Parameters.AddRange(sqlParams)
        adapter = New SqlDataAdapter(cmd)

        'Try
        adapter.Fill(ds)
        dt = ds.Tables(0)
        cmd.Parameters.Clear()
        'Catch ex As Exception
        '    Throw New Exception("查询失败!")
        'Finally
        Call CloseConn(DBConnection)
        Call CloseCmd(cmd)

        'End Try
        Return dt
    End Function

    Public Function ExecSelect(ByVal cmdText As String, ByVal cmdType As CommandType) As DataTable
        '执行查询操作,无参数
        Dim adapter As SqlDataAdapter
        Dim ds As New DataSet

        cmd.CommandText = cmdText
        cmd.CommandType = cmdType
        cmd.Connection = DBConnection

        adapter = New SqlDataAdapter(cmd)
        Try
            adapter.Fill(ds)
            Return ds.Tables(0)

        Catch ex As Exception
            Return Nothing
        Finally
            Call CloseConn(DBConnection)
            Call CloseCmd(cmd)
        End Try
    End Function
    Public Sub CloseConn(ByVal conn As SqlConnection)
        If (conn.State <> ConnectionState.Closed) Then  '如果没有关闭  
            conn.Close()                    '关闭连接  
            conn = Nothing                  '不指向原对象  
        End If

    End Sub

    Public Sub CloseCmd(ByVal cmd As SqlCommand)

        If Not IsNothing(cmd) Then          '如果cmd命令存在  
            cmd.Dispose()                   '销毁  
            cmd = Nothing
        End If
    End Sub

End Class
<span style="font-family: Arial, Helvetica, sans-serif;">'**********************************************</span>

'文件名:DALUtil

'作者:袁甜梦

'小组:袁甜梦

'说明:

'创建日期:2016/4/1 18:19:15

'版本号:V1.0.0.0

'**********************************************
Public Class DALUtil

    Private ReadOnly db As String = System.Configuration.ConfigurationManager.AppSettings("DBString")  '数据库

    Private ReadOnly ConnectStr As String = System.Configuration.ConfigurationManager.ConnectionStrings("ConnString").ToString
    'sql数据库连接字符串
    Public connectString As String = ConnectStr
End Class












评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值