机房重构——密码修改
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
相关文章推荐
- 关于Struts2.3.28配置出现的问题:Dispatcher initialization failed
- Java虚拟机方法执行的概念模型
- HTTP 411 Content-Length required
- 迷宫问题
- HTML5实现页面元素拖放
- Google Nexus5在linux下刷原生安卓 android6.0
- 20145331 实验一 "Java开发环境的熟悉"
- “睡眠猴子”项目需求介绍——视频介绍
- LeetCode(java)6. ZigZag Conversion
- 第6周项目1-分数类的雏形(1)
- 湖南省多校对抗赛 Morse
- 统计数字(C++)
- 编写新闻客户端&网络编程day1(66期第四天)
- interleaving string
- android架构-Libraries
- Vulkan Render Pass
- 【剑指offer系列】 丑数___34
- SVN之 trunk, branches and tags意义
- 17 数字三角形 初入dp
- 对象的序列化(Serialization)