【VB.NET机房重构】.NET三层登录

2024-08-26 02:32
文章标签 登录 重构 net 三层 vb 机房

本文主要是介绍【VB.NET机房重构】.NET三层登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         重构这么久,刚摸出点门道,先来介绍一下.NET三层登录。

一、分析

       1、逻辑分析


2、前提准备



3、登录界面


二、代码实现


Entity层代码(UserInfoEntity和WorkLogEntity)

Public Class UserInfoEntity'定义变量Private struserID As StringPrivate strpassword As StringPrivate strlevel As StringPrivate strstatus As StringPublic Property UserID() As StringGetReturn struserIDEnd GetSet(value As String)struserID = valueEnd SetEnd PropertyPublic Property Password() As StringGetReturn strpasswordEnd GetSet(value As String)strpassword = valueEnd SetEnd PropertyPublic Property Level() As StringGetReturn strlevelEnd GetSet(value As String)strlevel = valueEnd SetEnd PropertyPublic Property Status() As StringGetReturn strstatusEnd GetSet(value As String)strstatus = valueEnd SetEnd Property
End Class

Public Class WorkLogEntityPrivate struserID As StringPrivate strloginTime As StringPrivate strlogoutTime As StringPrivate strstatus As StringPublic Property UserID() As StringGetReturn struserIDEnd GetSet(value As String)struserID = valueEnd SetEnd PropertyPublic Property LoginTime() As StringGetReturn strloginTimeEnd GetSet(value As String)strloginTime = valueEnd SetEnd PropertyPublic Property LogoutTime() As StringGetReturn strlogoutTimeEnd GetSet(value As String)strlogoutTime = valueEnd SetEnd PropertyPublic Property Status() As StringGetReturn strstatusEnd GetSet(value As String)strstatus = valueEnd SetEnd Property
End Class
DAL层代码(UserInfoDAL和WorkLogDAL)

Imports System.Data.SqlClient
Imports System.Data
Public Class UserInfoDAL''' <summary>''' 查询用户''' </summary>''' <param name="userinfoentity1"></param>''' <returns></returns>''' <remarks></remarks>Function SelectUser(ByVal userinfoentity1 As Entity.UserInfoEntity)Dim conn As New SqlConnection '创建连接对象Dim cmd As New SqlCommand '创建命令对象conn = New SqlConnection(Dbutil.connstring()) '连接数据库cmd.Connection = conn '获取SQL语句的内容Dim reader As SqlDataReader '定义SqlDataReader的变量reader'传递数据cmd.Parameters.Add(New SqlParameter("@UserID", userinfoentity1.UserID))cmd.Parameters.Add(New SqlParameter("@Password", userinfoentity1.Password))'定义SQL语句cmd.CommandText = "Select * from UserInfo where UserID=@UserID and Password=@Password and Status='True'"cmd.CommandType = CommandType.Textconn.Open() '打开数据库链接reader = cmd.ExecuteReader() '执行查询语句,生成一个DataReaderDim userinfoentity3 As New Entity.UserInfoEntity'读取查询到的数据,返回相应属性While reader.Read()userinfoentity3.UserID = reader.GetString(0)userinfoentity3.Password = reader.GetString(1)End WhileReturn userinfoentity3End Function
End Class

Imports System.Data.SqlClient
Imports System.Data
Public Class WorkLogDALPublic Function InsertUser(ByVal worklogentity As Entity.WorkLogEntity) As BooleanDim conn As New SqlConnection '创建连接对象Dim cmd As New SqlCommand '创建命令对象conn = New SqlConnection(Dbutil.connstring()) '连接数据库cmd.Connection = conn'传入数据cmd.Parameters.Add(New SqlParameter("@UserID", Entity.Common2.strCurrentUserID))cmd.Parameters.Add(New SqlParameter("@Status", True))worklogentity.LoginTime = Format(Now, "yyyy-mm-dd hh:mm:ss")cmd.Parameters.Add(New SqlParameter("@LoginTime", worklogentity.LoginTime))'定义SQL语句cmd.CommandText = "Insert into WorkLog(UserID,LoginTime,Status)values(@UserID,@LoginTime,@Status)"conn.Open()Dim num As Integer '表示插入命令的结果Dim flag As New Booleannum = cmd.ExecuteNonQuery '执行插入命令If num > 0 Thenflag = TrueElseflag = FalseEnd IfReturn flagEnd Function
End Class
BLL层代码(LoginBLL和AddWorkLogBLL)

Public Class LoginBLLPublic Function UserLogin(ByVal userinfoentity2 As Entity.UserInfoEntity) As Entity.UserInfoEntityDim userinfodal As New DAL.UserInfoDAL '实例化UserInfoDALDim userinfoentity4 As Entity.UserInfoEntity '定义一个UserInfoEntity的参数userinfoentity4 = userinfodal.SelectUser(userinfoentity2)'判断是否查询到记录If IsNothing(userinfoentity4.UserID) ThenMsgBox("登录失败,用户名和密码不正确!")ElseMsgBox("登录成功,进入系统!")End IfReturn userinfoentity4End Function
End Class

Public Class AddWorkLogBLLPublic Function AddWorkLog(ByVal worklogentity As Entity.WorkLogEntity) As BooleanDim worklogdal As New DAL.WorkLogDAL '实例化WorkLogDALDim flag As Boolean 'flag用于定义DAL层的方法WorkLog的返回结果flag = worklogdal.InsertUser(worklogentity)Return flagEnd Function
End Class
UI层代码

Public Class frmLoginPrivate Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.ClickDim userinfoentity As New Entity.UserInfoEntity '实例化UserInfoEntityDim worklogeneity As New Entity.WorkLogEntity '实例化WorkLogEntityDim userinfoentity5 As Entity.UserInfoEntity '定义一个实体层的参数'将界面中的数据传给实体层userinfoentity.UserID = txtUserID.Text.Trim()userinfoentity.Password = txtPassword.Text.Trim()'判断输入框是否为空If txtUserID.Text = "" ThenMessageBox.Show("用户名不能为空")ReturnEnd IfIf txtPassword.Text = "" ThenMessageBox.Show("密码不能为空")ReturnEnd If'调用B层,进行判断Dim loginbll As New BLL.LoginBLL '实例化LoginBLLuserinfoentity5 = loginbll.UserLogin(userinfoentity)'将正在登录的用户登录信息传给全局变量Dim strcommon As New Entity.Common2strcommon.CurrentUserID = txtUserID.Text.Trim()strcommon.CurrentPassword = txtPassword.Text.Trim()Dim flag As BooleanDim addworklogbll As New BLL.AddWorkLogBLL '实例化AddWorkLogBLLflag = addworklogbll.AddWorkLog(worklogeneity)Me.Visible = FalsefrmMain.Visible = TrueEnd Sub
End Class
运行结果:



总结:三层虽然很简单,但是也要认真的搞清楚,这是后面重构的基础。不管会不会,一定要不停的先去做,再不行先照着别人的敲出来,搞清楚各层的调用和跳转再自己重新敲,肯定会有收获。

这篇关于【VB.NET机房重构】.NET三层登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107297

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL

Springboot中JWT登录校验及其拦截器实现方法

《Springboot中JWT登录校验及其拦截器实现方法》:本文主要介绍Springboot中JWT登录校验及其拦截器实现方法的相关资料,包括引入Maven坐标、获取Token、JWT拦截器的实现... 目录前言一、JWT是什么?二、实现步骤1.引入Maven坐标2.获取Token3.JWT拦截器的实现4.

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom