机房收费系统 之 委托登录

忘记了具体的时间,具体的地点应该是在511。老师提了这么一句“以后你们的代码里面都不能有调用,全部都有委托”。如果我没有记错的话,好像是这么说的......如果我记错了的话,也有可能是我听错了哈......

最近开始机房收费系统合作版,然后就想着能不能把委托这个东西加到咱们的机房中来,然后就在那里查资料啊,查资料!反正查了一天多......最后,功夫不负有心人,终于搞定了!

虽然是实现了功能,但是真的不确定自己这样做到底是正确的还是错误的!这个还有待老师和师哥师姐们给出宝贵的意见!

委托是什么我就不说的了,不懂的可以看看C# 之 委托,虽然写的不是特别的详细,但是看了也能了解个大概。现在就让我们来看看具体的代码实现:

我们熟悉的D层代码:

Imports System.Data.SqlClient
Public Class DAL

    Public Function Login(ByVal strUserID As String, ByVal strPassword As String) As Boolean
        '创建一个SqlConnection
        Dim conn As New SqlConnection("server=.;database=ChargeSystem;uid=sa;pwd=123456")

        '创建一个SqlCommand从数据库中查询该用户名和密码是否存在
        Dim cmd As New SqlCommand("select count(*) from T_User where userID='" & strUserID & "' and password='" & strPassword & "'", conn)
        conn.Open()
        Dim count As Integer = cmd.ExecuteScalar()
        conn.Close()

        If count > 0 Then
            Return True '用户名和密码正确
        Else
            Return False
        End If
    End Function
End Class

再看看新的B层:

Public Class BLL
    '声明委托LoginEventHandler,此时委托所代表的方法有两个参数,返回值为布尔值
    Public Delegate Function LoginEventHandler(ByVal strUserID As String, ByVal strPassword As String) As Boolean

    Public Function Login(ByVal strUserID As String, ByVal strPassword As String) As Boolean
        Dim dal As New DAL
        '将DAL类中的Login方法添加到委托loginEventHandler
        Dim loginEventHandler As LoginEventHandler = AddressOf dal.Login
        Dim flag As Boolean

        flag = loginEventHandler(strUserID, strPassword)
        Return flag

    End Function
End Class

最后看看新的U层:

Public Class Form1
    '声明委托LoginEventHandler,此时委托所代表的方法有两个参数,返回值为布尔值
    Public Delegate Function LoginEventHandler(ByVal strUserID As String, ByVal strPassword As String) As Boolean
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
        Dim bll As New BLL
        Dim loginEventHandler As LoginEventHandler
        Dim strUserID As String = txtUserID.Text.Trim()
        Dim strPassword As String = txtPassword.Text.Trim()
        Dim flag As Boolean

        '将DAL类中的Login方法添加到委托loginEventHandler
        loginEventHandler = AddressOf bll.Login

        flag = loginEventHandler(strUserID, strPassword)

        If flag = True Then
            MsgBox("终于登陆成功!")
        Else
            MsgBox("用户名或密码输入错误!")
            txtPassword.Text = ""
            txtUserID.Focus()
            txtUserID.SelectAll()

        End If

    End Sub

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Close()

    End Sub
End Class

最后看看我们的结果:

在VB.NET中事件不能用具有返回类型的委托类型来声明,这点和C#不一样!然后就是这一点点的区别就花费了我好多的精力!不过最后还是做出来了,真的非常的高兴!嘿嘿......

时间: 2024-10-16 13:09:13

机房收费系统 之 委托登录的相关文章

机房收费系统——“七层”登录

敲完了三层登录很长时间了,明白三层是怎么传递的,但是就是总是无从下手的感觉,别人都说敲几条线就明白了,但是,你懂得--这时我想起了米老师的一句话:不管怎么样,先听去做,做完了再说自己的想法.如果总是不下手,就永远不会进步.所以,我开始了登录的"七层"版. 先用一张包图来看看这"七层"里面是怎么进行传递的: 由图可知,这"七层'就是在三层的基础上继续对U层.B层.D层进行解耦.本来在三层中是U层接收传进来的数据,然后调用B层的方法,把数据传给B层,之后B层调

机房收费系统重构之用户登录

机房收费系统开始了有一段时间了,但是感觉自己对于这一条线还是理解的不太深刻,导致后面也快不起来,所以来分析一下这用户登录的过程. 如果是纯三层的话,理解起来差不多,无非就是在层与层之间传递,但是随着用户需求,软件功能越来越多,那么其复杂程度越来越大. 因此,我们引入了更多层,从图中看,我们觉得好像这样比三层更加复杂,但是实现过程中我们会体现其高内聚,低耦合的优点.我们不难发现这是从三层加入设计模式演化而来,之所以采用抽象工厂模式是考虑到换数据库的方便,而应用外观模式是为了解决UI层和BLL层耦合

机房收费系统——登录优化

<机房收费系统个人版>基本上完工了,我的U层代码很多很乱.基本上是D层有几个函数,B层就对应有几个函数,U层使用对应B层中的每一个函数.比如说在登录中,U层首次要使用一个函数检查用户名和用户密码是否正确,然后再使用"添加用户上机记录"的函数.下面是登录的时序图: 登录业务比较简单,但是对于复杂的上机过程呢?U层要检查卡是否注册,余额是否充足,卡的状态是否在使用中,该卡是否现在不在线,通过这一系列检验后,还要查询学生表显示学生信息等等.这样就造成U层有好多函数,和B层的耦合度

VB.NET版机房收费系统---七仙女之系统登录

VB.NET第一版机房收费系统,告一段落,验收的时候,问题也是大大的存在,没有用上设计模式,什么触发器,存储过程,都没有用上,看看其她小伙伴的,七层实现登录?那是什么东东,相比较我的三层而言,多了两倍还加个一,通过查资料,看博客,憋了好几天,终于,憋出了一个七仙女---七层实现系统登录,七个女儿,各司其职,完美配合,衍生出众多美丽的故事. 从三层猛地跳到七层,有种穿越的感觉,说白了就是不会,又是想逃避的感觉,可是人生在世,有的事情不能随着自己的性子来,喜欢了就去做,不喜欢,就不做,没办法,就一直

机房收费系统 之 登录BUG

声明:以下内容只对在登录时一个用户名不能同时多次登录的同学适用! 说是BUG,其实这也不是一个BUG,只是想出一个办法,解决一个大家好多人都没有解决的问题!下面就给大家详细讲讲到底是什么样的问题,什么样的解决办法: 在机房收费系统中的用户登录功能,我们能够让一个用户在不同的电脑上同时登录吗?我相信大家跟我的想法都差不多,一个用户当然不能在不同的电脑上同时登录!那么问题就来了,如果用户已经登录系统,突然断电或者死机重启,那么用户还能登录我们的系统吗?肯定能啊!不就是断电吗?为什么不能继续登录了呢?

.NET分层登陆——机房收费系统再总结

去年的时候,我写过一篇机房收费系统登陆的总结文章,那是站在VB的基础上,直接查询数据库实现的登陆.是很初期的知识.如果想了解详情,请看VB查询数据库之登陆窗体--机房收费系统总结(一). 今天,我要换一个角度,换一个方式,来实现登陆.首先,我选择的开发工具是VB.NET,数据库是SQLSever2008.其次,我用的是三层的思想,把界面,逻辑和数据都分开,减少相互之间的影响.在次,界面层尽量简洁,所有的算法和业务逻辑都写到逻辑层,同时使用了接口和工厂模式以及外观模式,减少了相互之间的依赖,降低了

机房收费系统——测试计划

测试计划(GB8567--88) 1引言 在项目基本编码工作完成的就要进行测试,对于排除出错误和修复漏洞有重要作用. 1.1编写目的 测试的主要目的就是尽可能多的找到系统中的漏洞,并且设计出测试用例,对系统测试.目的及在于对测试的方法.测试流程,有一定大体上的掌控.本文档的预期读者是测试人员. 系统测试在整个项目开发过程中,比例占到了40%~50%.基本上在项目进行编码的过程中就开始了测试,所以测试的好坏也影响了系统的功能实现情况. 1.2背景 说明: a.  测试计划所从属的软件系统的名称:机

机房收费系统——概要设计说明书

概要设计说明书 1引言 1.1编写目的 这是一个宏观的把控系统开发总概括,对于对象.类等进行一定的大体的设计,设计人员可以通过概要设计为接下来的详细设计做准备. 预期读者是设计人员. 1.2背景 说明: a.       待开发软件系统的名称:机房收费系统 b.       列出此项目的任务提出者: 开发者:十期学生 用户:廊坊师范学院全体师生 将运行该软件的计算站(中心):图书馆阅览室.学校机房 1.3定义 1.4参考资料 列出有关的参考文件,如: a.     本项目的经核准的计划任务书或合

机房收费系统合作版(七)——总结

历经许许多多的磨难机房收费系统合作版终于告一段落了.在机房收费系统中的收获我不能说自己收获的太少了.因为相比之前任何一个阶段的学习,这个阶段是我收获的最多,感悟最多的一个阶段. 技术: 初识框架,对它有一种莫名的好感,很是喜欢.也从这个好框架中感受到了自己的与XS,LSH他们的差距.他们是搭这个架构的人,而自己光是对这个架构的学习就整整花了一周.这就是显而易见的差距. 带着莫大的好奇心,和连海苦战两天,照猫画虎,也搭建了属于这个系统的"框架".为了练手,我俩还搭建了Jenkins.由于