工欲善其事必先利其器! 而其器又是否真的锋利了呢?

想要成为一个出色的程序员,于是乎我学习、练习,以为自己什么都会了,结果却经不起一个小小的考验!

上午米老师所讲的内容,所说的那个题,时时刻刻在我脑中萦绕着,自以为把VB学的也挺好,可简单的一道小题目却把我们这些人问住了,为什么答不上来?  学的VB学哪去了? 我们自己知道吗?

自命不凡的以为拥有了世界,可熟不知连小草都不属于你,我想对于我们眼高手低应该能描述的准确一点吧! 强不知以为知,怎能善其事 ?

由此联想到自己,还真是活灵活现的写照!  因为我是学过VB的,这么简单的东西我怎么能承认自己不会呢! 于是写啊写啊,写到最后那些代码自己都说不通了。学习VB是一回事,那么我目前学习三层不也是一样吗?  我觉着我学得挺好啊,该看的看了,该学的学了,什么理论啊也会啊,但让我描述描述三层怎么个思维逻辑时,说着说着就说不下去了,其实就是没有学会,不懂装懂。结果什么也没做好!就拿三层登陆的小例子来说,我做了,看代码 明白了,,可怎么就自己描述不出来呢?

下午静下心来,踏实的去学习这段知识,这才恍然大悟,之前我也曾在博客中写了关于三层的创建、登陆例子的知识,到今天才算是真正理解了。

U层

直接面向用户,拿登陆的小例子来说,用户看到的是下面的界面,用户只需要输入用户名和密码,点击确定即可,而U层所要做的工作就是将用户输入的用户名和密码值传给实体层的参数,实体层则把用户输入的消息告诉B层,这些就是U层需要干的事

实体类

Public Class userInfoPublic username As StringPublic password As StringPublic Property User_Name() As String'实体层,存放我们需要的参数,例如登陆时需要的'用户名和密码GetReturn usernameEnd GetSet(value As String)username = valueEnd SetEnd PropertyPublic Property pass_word() As StringGetReturn passwordEnd GetSet(value As String)password = valueEnd SetEnd PropertyEnd Class

U层

Public Class Form1Private Sub btLogin_Click(sender As Object, e As EventArgs) Handles btLogin.ClickDim user2 As Login.Model.userInfouser2 = New Login.Model.userInfo'实例化实体层的参数,将登陆输入进来的数传给实体user2.User_Name = txtUserName.Text.ToString()user2.pass_word = txtPassWord.Text.ToString()Dim bll As Login.BLL.LoginLogic = New LoginLogicIf bll.User_logic(user2) ThenMsgBox("登陆成功")ElseMsgBox("登陆失败")End IfEnd Sub
End Class

BLL  层  业务逻辑层

B层则是存放一些算法的逻辑什么的,当U层将信息传给B层后,B层将这个信息通知D层,然后根据D层返回来的值做逻辑判断。

Public Class LoginLogicPublic Function User_logic(ByVal user1 As Login.Model.userInfo) As Boolean'声明一个对象来实例化D层中的类,进而利用其中的方法Dim dll As Login.DAL.LoginSelect = New Login.DAL.LoginSelectReturn dll.user_chaxun(user1)End Function
End Class

DAL 数据访问层

D层在接到B层传来的信息后,也会进行相应的判断,而对于这个登陆的例子呢,需要打开数据库判断用户输入的数据是否存在,然后返回给B层相应的信息。接着B层会将逻辑判断后的信息返回给U层,进而U层也就将最终结果返回给用户了,这也就是我们能看到的,登陆成功或者是登陆失败。

Public Class LoginSelect'数据库连接字符串Dim str As String = "Data Source =192.168.24.74;Initial Catalog=chargeStudent;user ID =sa;password=123456"Dim conn As SqlClient.SqlConnectionPublic Sub New()  '设计一个函数来打开数据库 conn = New SqlClient.SqlConnectionconn.ConnectionString = strconn.Open()End Sub'接下来就要执行相应的命令和查询Public Function user_chaxun(ByVal user As Login.Model.userInfo) As BooleanDim sqlStr As String'查询命令字符串sqlStr = "select * from user_Info where user_ID='" & user.User_Name & "' and user_PWD='" & user.pass_word & "'"Dim strCmd As SqlClient.SqlCommandstrCmd = New SqlClient.SqlCommand(sqlStr, conn)'strCmd.CommandText = sqlStr'strCmd.Connection = conn'执行命令并查询数据,将数据返回到datareader 中Dim dr As SqlClient.SqlDataReader = strCmd.ExecuteReaderIf dr.Read() ThenReturn TrueElseReturn FalseEnd IfEnd FunctionEnd Class

到此为止呢,整个逻辑也就完成了,也就看到了登陆是否成功,另外还有贯穿三层之间的实体类  完成了整个过程

在配上 登陆的时序图会更好理解了吧

其实当自己亲自把逻辑理清楚了,动手去实践了,把不懂的疑问都弄明白了,那么事情也就顺理了,小程序给了自己一个教训。时刻谨记着了,否则怎么善其事呢!

强不知以为知 怎能善其事相关推荐

  1. k3 物料收发明细表sql_物料管理:班组长物料使用应知应会4件事

    阅读导航→ 01 物料使用前检查 02 物料台面摆放 03 物料消耗控制 04 生产废料处理 一.物料使用前检查 为判定物料投入生产前的质量,预防不合格.不正确的物料投入使用,班组长需督促.指导班组员 ...

  2. 平时喜欢使用的软件总结 欲善其事,必先利其器

    平时喜欢使用的软件总结 欲善其事,必先利其器.平时工作中,一个好软件的使用得当,便能够起到事半功倍的作用. 在互联网上,有非常非常多的软件,做的非常不错,满足了用户各种应用场景的各种需求,软件的功能 ...

  3. 10件开发者和老板都要知道的HTML5的那些事

            1. HTML5 标签没什么大不了的.          理解这句话你需要先了解HTML 5.它仅仅是一个html4.01的一个升级版本?或者是它是完全不同的新版本(无处不在的大肆宣传 ...

  4. linux vnc的小黑点和鼠标不同步_公欲善其事 | VNC的安装和使用

    简介 连接服务器并且获得其可视化的界面有时候是很有帮助的.本文记录一下如何以MacOS为客户端,以Ubuntu为服务器,安装和使用RealVNC的VNC Viewer(https://www.real ...

  5. 欲善其事,先利其器 | IDCF第6期DevOps案例研究回顾(附视频)

    2021年,会有哪些"意想不到"在等待我们? 2021年,会有哪些"变与不变"在等待我们? 这些,都未可知. 借假修真,唯一可知的是过去有哪些值得我们借鉴与学习 ...

  6. 欲善其事,先利其器——青龙面板依赖安装教程

    有小伙伴给我留言说,依赖拉取很慢有没有快一点的办法,由于上csdn比较少,特意写了这篇文章希望对大家有所帮助. 老样子,废话不多说. 点击青龙面板的依赖管理-->新建依赖-->选择需要安装 ...

  7. 工具善其事,必先被苦逼的其器所钝伤然后打磨之才能利其器

    人品之差,差于上青天,写一段Ext,把eclipse和tomcat搞得不听使唤了不说,三下五除二立即从rar文件里面把项目和开发工具重新归位,依然不见其有所好转,加上公司电脑卡之又卡,遂二话不说,拿起 ...

  8. 37-工欲善其事必先利其器:学会使用各种工具

    1. 工欲善其事必先利其器:学会使用各种工具 Linux 平台下提供的各种网络工具,则为我们进行诊断分析提供了很好的帮助.在这一讲里,我将会选择几个重点的工具逐一介绍. 1.1.必备工具: ping ...

  9. IDEA--工欲善其事必先利其器

    菜单栏: - File:对文件进行操作 - Edit:对文本 进行操作 - View:试图 - Navigate:跳转 - Code:操作源码文件,如formal code等 - Analyze:对源 ...

最新文章

  1. 机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理
  2. [数分提高]2014-2015-2第4教学周第1次课
  3. (chap8 确认访问用户身份的认证) SSL客户端认证
  4. 作为利物浦大学和西浦的学生的职业机会发展平台!很重要!
  5. 哈佛的凌晨4点。。。
  6. SSM-网站后台管理系统制作(2)---SSM基本工作原理
  7. WPF的自定义控件 依赖属性,DependencyProperty 路由事件RoutedEvent
  8. NoSql中的B-tree、B+tree和LSM-tree
  9. python 导出大量数据到excel_怎么在python中将大量数据导出到Excel文件
  10. Pytorch(七) --加载数据集
  11. Ajax基本案例详解之$.getjson的实现
  12. 无法创建t的通用数组_创建通用数组的问题
  13. django模型——数据库(二)
  14. 凸集、凸函数、凸优化问题 概念关联
  15. Linux装好MATLAB无法启动的解决办法
  16. 计算机视觉 AI 工具集 OpenVINO™,是你心目中的深度学习框架 Top1 吗?
  17. 【Java与智能设备】 CH05_2 Intent启动内置程序
  18. 视频教程-嵌入式Linux驱动开发-嵌入式
  19. 西门子s7-200解密软件下载_高邮哪里有西门子三菱PLC编程学习班?多久能学会?...
  20. 第七周 项目2 - 建立链队算法库

热门文章

  1. IE6下图片的浏览剪裁与上传
  2. 领航优配|货拉拉冲刺港交所:2022年首度盈利,闭环交易总额全球第一
  3. HEVC 、H.264与AVS2 视频压缩
  4. java迭代法求圆周率用梯形_常用的圆周率计算公式
  5. 世界各地 史上最全最详细无线通信频率分配表(内容含概wifi、2.4G、5G,绝对值得收藏)
  6. 计算机图形学:机器人的画法与填充
  7. java中各种O的含义(PO,DO,VO,TO,QO,BO,DAO,DTO,POJO)
  8. 数据分析软件解读王者荣耀一年的“王者”成绩单
  9. 【Matlab学习手记】三维矢量场图
  10. 二进制文件文本文件和二进制数据