网站备案流程何时改,网站 模板下载,网站维护一般需要多久,大学生html网页设计作业目录
前言#xff1a;
什么是三层
为什么要用到三层:
饭店→软件 理解:
过程:
1.三层包图:
2.数据库
3.三层项目
4.用户界面
5.添加引用
代码实现:
Entity层
BLL层
DAL层
UI层
总结: 前言#xff1a;
什么是三层
三层就是把各个功能模块划分为表示层#…目录
前言
什么是三层
为什么要用到三层:
饭店→软件 理解:
过程:
1.三层包图:
2.数据库
3.三层项目
4.用户界面
5.添加引用
代码实现:
Entity层
BLL层
DAL层
UI层
总结: 前言
什么是三层
三层就是把各个功能模块划分为表示层UI、业务逻辑层BLL和数据访问层DAL三层架构各层之间采用接口相互访问并通过对象模型的实体类Model作为数据传递的载体不同的对象模型的实体类一般对应于数据库的不同表实体类的属性与数据库表的字段名一致。
简单的点来说就是高内聚底耦合的思想不会牵一发而动全身。
为什么要用到三层: 生活中饭店的例子来举例大家可能会更理解一些。 服务员只管接待客人
:厨师只管烹炒客人要的菜系
:采购员只管按照客人的需求来采购食材 各司其职共同协作为客人提供美食
问题: 为什么要需要这三种角色为什么不合在一起每个角色的功能的是分离的举例:
服务员离职、请假→其他服务员代替
厨师离职→其他厨师代替
采购员离职→其他采购员代替
为什么能够替代每个人的功能是一致角色不行了替代就可以如果合在一起就不好找人了。
饭店→软件 理解: 三层从生活到软件不会因为谁的不在或离职从而工作停掉三层在软件中易是如此每个层都有特定的职责和功能不会因为需求改动从而需要修改整个系统只需改其中一层的的代码通过这种方式实现代码的模块化和维护性这就是所谓的三层
过程:
1.三层包图: 包图用于描述逻辑架构—层、子系统、包等所以拿包图在合适不过了。 2.数据库 3.三层项目 4.用户界面 5.添加引用 代码实现:
Entity层
Public Class eUserLoginPrivate strUserNo As String 定义一个私有字段该字段的类型为StringPrivate strPassword As String Public Property Password() As StringGet 获取属性值Return strPassword 返回strPassword的字符串变量的值End Get 结束方法Set(value As String) 接收一个名为value的字符串类型的参数strPassword value 传递给StrPasswrod的字符串变量End Set 结束方法End PropertyPublic Property UserNo() As StringGetReturn strUserNoEnd GetSet(value As String)strUserNo valueEnd SetEnd Property
End Class
BLL层
Imports System.Xml
Imports Login.DALPublic Class LoginBLLUserInfo用来承载登录时输入的用户名和密码全局实体Public Function login(ByVal UserInfo As Entity.eUserLogin) As Entity.eUserLogin实例化D层Dim dLogin As New Login.DAL.UserInfoDAL定义B层的返回实体Dim bUserInfo As New Entity.eUserLogin调用D层SelectUser方法bUserInfo dLogin.SelectUser(UserInfo) 执行一个名为SelectUser的方法并将其返回值赋给bUserInfo的布尔型变量If (bUserInfo.UserNo Is Nothing Or bUserInfo.Password Is Nothing) Then 判断bUserInfo.UserNo和bUserInfo.Password是否为空Throw New Exception(用户名或密码错误,请查看) True返回消息ElseMsgBox(登录成功请稍后, MsgBoxStyle.Information MsgBoxStyle.OkOnly, 提示)Return bUserInfo False 返回消息 End IfEnd Function
End ClassDAL层
单建了一类来放数据库连接
Imports System.Data.SqlClientPublic Class LinkeDALPublic Shared Function connstring() As String连接数据库字符串connstring Server 192.168.96.71;Databasecybercafe;User IDsa;Password123456;End Function
End Class Imports System.Data.SqlClient
Imports Login
Public Class UserInfoDALPublic Function SelectUser(UserInfo As Entity.eUserLogin) As Entity.eUserLoginDim conn As New SqlConnection(LinkeDAL.connstring)打开数据库conn.Open()创建一个名为reader的SqlDataReader对象(SqlDataReader)是一种.NET Framework中的数据读取器用于从Microsoft SQL Server数据库中读取数据 Dim reader As SqlDataReaderD层实例化执行查询后返回实体Dim duserInfo As New Entity.eUserLogin查询语句Dim sql As String Select * from User_Info where UserNoUserNo and PasswordPassword创建一个名为cmd的SqlCommand对象,并将其初始化指定的SQL语句和数据库连接对象。 SqlCommand是一个.NET Framework中的类用于执行SQL语句并返回查询结果Dim cmd As New SqlCommand(sql, conn)向SQL语句添加一个命名参数就将UserNo的参数添加一个值这个值来自一个名为UserInfo的对象 符作为参数的前缀可以让SQL语句更容易区分参数和普通参数的文本。同时符号可以让SQL语句更易于阅读和理解cmd.Parameters.Add(New SqlParameter(UserNo, UserInfo.UserNo))cmd.Parameters.Add(New SqlParameter(Password, UserInfo.Password))执行查询语句并将结果以DataReader对象的形式返回以供后续的数据处理和操作reader cmd.ExecuteReader()循环语句它会在SqlDataReader对象中有下一行数据时执行在每次循环中我们将使用SqlDataReader对象的一些方法(如GetString、GetInt32等)来获取当前行的数据并将其存储在相应的变量中。While (reader.Read())循环来逐行查询结果。每次循环中我们使用read.GetString()来获取查询结果中第一列的字符串并赋值给duseInfo对象的UserNo属性duserInfo.UserNo reader.GetString(0)duserInfo.Password reader.GetString1End WhileReturn duserInfoconn.Close() 关闭数据库 End Function
End ClassUI层
Imports System.XmlPublic Class Form1Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click 单击事件Try实例化传实体的对象Dim UserInfo As New Entity.eUserLogin将用户名和密码放入实体文本框中的字符串去除空格并赋给实体对象UserInfo使实体对象能够带上参数UserInfo.UserNo txtUserName.Text.Trim()UserInfo.Password txtPassWord.Text.Trim()判断账号否为空If txtUserName.Text ThenMsgBox(用户名不能为空, MsgBoxStyle.Information MsgBoxStyle.OkOnly, 提示)ReturnEnd If判断密码是否为空If txtPassWord.Text ThenMsgBox(密码不能为空, MsgBoxStyle.Information MsgBoxStyle.OkOnly, 提示)ReturnEnd If定义一个最终的返回体returnUserInfo承接经过D层查询B层判断的登录信息实例化BLL层的对象Dim bLogin As New LoginBLL.LoginBLL调用B层的方法loginbLogin.login(UserInfo)Catch ex As Exception 处理异常的代码MessageBox.Show(ex.Message.ToString) 返回一个字符串表示异常的详细信息End Try 方法结束End SubPrivate Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.ClickEndEnd Sub
End Class
总结:
对于三层的理解还不是很透彻还是需要多实践理论明白了并不代表真正意义上的明白。