【个人机房重构】——三层架构,系统登录
来源:互联网 发布:vmtools mac 编辑:程序博客网 时间:2024/04/28 04:02
在进行个人版机房重构的之前,系统登录的例子是每个人必敲的。在这里,就不过多的阐述关于三层的理解了。
首先:
这是三层设计:
下边是具体的代码:
【U层】
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Public Class frmLogin '登录 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '判断用户名、密码是否为空 If Trim(txtUname.Text) = "" Or Trim(txtPwd.Text) = "" Then MsgBox("登录信息不能为空") End If Dim enUser As New Entity.UserInfoEntity '实例化新的UserInfoEntity,用来传递B层的实体 Dim BCheck As New BLL.LoginBLL '定义BCheck,用来传递参数 '将输入的用户名、密码传递给实体层 enUser.userName = Trim(txtUname.Text) enUser.Pwd = txtPwd.Text If BCheck.Check(enUser) = True Then MsgBox("登录成功!") Else MsgBox("登录失败!") End If End Sub '取消 Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click Me.Close() End SubEnd Class</strong></span>
【B层】
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Public Class LoginBLL Function Check(ByVal user As Entity.UserInfoEntity) As Boolean Dim DUser As New DAL.LoginDAL '实例化新对象 Dim BUser As New Entity.UserInfoEntity '传值 BUser.userName = user.userName BUser.Pwd = user.Pwd BUser = DUser.Check(BUser) If BUser.Pwd = user.Pwd Then Return True Else Return False End If End FunctionEnd Class</strong></span>
【D层】
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Imports System.Data.SqlClientImports System.DataPublic Class LoginDAL '创建数据库连接 'Dim ConnStr As String = "Data Source=localhost;Initial Catalog=ChargeSystem;User ID=sa;Pwd=123" Dim ConnStr As String = "Data Source=192.168.24.207;Initial Catalog=ChargeSystem;User ID=sa;Pwd=123" Dim conn As SqlConnection = New SqlConnection(ConnStr) Function Check(ByVal user As Entity.UserInfoEntity) As Entity.UserInfoEntity '传递实体 '其实下面的这段程序就相当于dim sql as string ="select ID,UserName,PWD From Users Where UserName='"User.UserName"' And PWD='"User.PWD"'" '而写成这个程序块是为了防止Sql注入,即安全性考虑。 '@UserName相当于传了一个参数,("@UserName", User.UserName)相当于给参数名字传递了参数。 Dim sql As String = "select * from T_UserInfo where userName=@userName and Pwd=@Pwd;" Dim cmd As SqlCommand = New SqlCommand(sql, conn) cmd.Parameters.Add(New SqlParameter("@userName", user.userName)) cmd.Parameters.Add(New SqlParameter("@Pwd", user.Pwd)) Dim users As New Entity.UserInfoEntity Dim read As SqlDataReader Try conn.Open() '打开数据库 read = cmd.ExecuteReader '执行查询语句,并生成一个DataRead read.Read() users.userName = read.Item("userName") users.Pwd = read.Item("Pwd") Return user Catch ex As Exception user.Pwd = "" Return user End Try End FunctionEnd Class</strong></span>
【Entity】
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Public Class UserInfoEntity '用户表实体 '定义用户表中的userName、name、Pwd、level、registerDate、registerTeacher Private _userName As String '定义私有属性_UserName为string类型 Public Property userName() As String '定义共有属性userName为string类型 Get '只读 Return _userName End Get Set(ByVal value As String) '只写 _userName = value '为strserName赋值 End Set End Property Private _Pwd As String Public Property Pwd() As String Get Return _Pwd End Get Set(ByVal value As String) _Pwd = value End Set End Property</strong></span>
B层主管业务逻辑,也就是说和业务有关的放在B层。U层是表现层,主管和用户的互动,用户输入,以及向用户展示都是U层的事。D层为数据访问层,主管和数据库打交道。
我个人感觉最难理解的是实体层,这一层是“跳出三界外,不在五行中”。它不属于三层中的任何一层,但是三层每一层都与他关联。最初的理解是有多少个表,就最少有多少个实体类,每个实体类的属性为表的字段。慢慢的,觉得这样划分实体类是有问题的,因为涉及到多个表的时候,那么就返回不了实体类了,因而出现了基于视图创建实体类。其实实体类并不是规定死的,他可以完全按照你的需要进行改造,怎么用更符合面向对象,就怎么用,没有那么多的条条框框。这也就是他“跳出三界外,不在五行中”的原因吧。其实,C#版的登录例子放假之前就敲好了,开学来了,本应该早就进入个人重构的阶段。可是,却一直拖着,拖到了现在。其中,自己做事情经常拖延,老是把事情弄到最后。时间管理做得不够好。另外,对个人重构版的机房,有些恐惧,一直在躲避。不过,该来的终究会来的。出来混,迟早都是要还的。
有时候,不要害怕开始,勇敢的迈出第一步。开始,说明你已经成功了一半了;开始,说明你已经在成功的路上了。
1 0
- 【个人机房重构】——三层架构,系统登录
- 机房重构——三层登录
- 机房重构——三层架构
- 机房重构--三层登录
- 重构机房收费系统—浅谈三层
- 重构机房收费系统—浅谈三层
- 机房收费系统登录-三层架构
- 【C#】三层登录总结<机房重构>
- 【C#】三层登录<机房重构>
- 个人重构机房收费系统——类图
- 个人重构机房收费系统——配置文件
- 个人重构机房收费系统——SqlHelper介绍
- 个人重构机房收费系统——报表制作
- 机房收费系统个人重构3——sqlHelper
- 【个人机房系统重构】——开篇
- 机房收费系统个人重构—图(文档)
- VB.net版机房收费系统——三层登录
- VB.NET版机房收费系统——三层登录
- Ubuntu中root用户和user用户
- linux dd命令使用
- 如何让你的简历具备更强吸引力
- 黑马程序员_银行业务系统
- hdu1166- 敌兵布阵线段树
- 【个人机房重构】——三层架构,系统登录
- Chrome 下登陆京东提示"请刷新后重新尝试"的解决
- matlab 读取视频文件和摄像头
- java程序性能优化
- SQL 按月统计(两种方式)
- usaco第一次体验
- FPGA 时序约束(altera timequest)
- IOS7设计师笔记【ios7设计的尺寸】
- Spring工作原理及其作用