您的位置:首页 > 其它

机房重构——密码修改

2016-04-10 19:45 399 查看

前言:

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

界面展示:



实体层: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: