前一段时间有一个简单的三登录功能实现窗口,心灵修养一点点,但很快就被泼了一盆冷水。房费是不可能做到在短短三年,假设你使用三个,这倒房费三个功能必须使用函数来实现。了七层的研究。

经过一个星期的看博客。总结,调代码,最终实现了窗口登录,信息录入。和简单充值查询功能。

  说说自己这次七层之旅的总结吧。

  1.毋庸置疑。研究一个窗口功能,我首先推断的是须要用到数据库中的哪些表(这是属于我自己的编程习惯,不适用所有),然后再实体层中将表中的字段表示出来,有多少个表就有多少实体类,实体类仅仅会多于表的数量!一个表映射出一个实体类,表中的字段就是实体类的属性!

这里附带上自己代码中的一部分吧。

  1. Public Class LoginModel
  2. Private _userID As String
  3. Private _level As String
  4. Private _password As String
  5. Private _userName As String
  6. Private _computer As String
  7.  
  8. Public Shared UserHead As String ' 设置全局变量
  9. Public Shared UserLevel As String
  10.  
  11. Public Property UserID() As String
  12. Get
  13. Return _userID
  14. End Get
  15. Set(value As String)
  16. _userID = value
  17. End Set
  18. End Property
  19. Public Property PassWord() As String
  20. Get
  21. Return _password
  22. End Get
  23. Set(value As String)
  24. _password = value
  25. End Set
  26. End Property
  27. Public Property level() As String
  28. Get
  29. Return _level
  30. End Get
  31. Set(value As String)
  32. _level = value
  33. End Set
  34. End Property
  35. Public Property UserName() As String
  36. Get
  37. Return _userName
  38. End Get
  39. Set(value As String)
  40. _userName = value
  41. End Set
  42. End Property
  43. Public Property Computer() As String
  44. Get
  45. Return _computer
  46. End Get
  47. Set(value As String)
  48. _computer = value
  49. End Set
  50. End Property
  51. End Class

2.接下俩进行的是关于工厂+反射+接口+DAL的介绍了

  这个过程中涉及的东西比較多。我先概括的说说自己这部分用到了什么知识吧!

(1) 用反射+抽象工厂的数据訪问程序

開始以为是新知识,可是大家能够看看咱们《设计模式》,抽象工厂一章中说到反射利用字符串来实例化对象,而变量时能够更换的!

大家记住一段简单的代码吧:

Assmbly.load("程序集名称").CreadteInstance("命名空间.类名称")我把这段话理解为制造接口的过程。

关于这部分内容会有专门的博客写到!

在敲工厂时会常常出现这种错误:



出现了这个错误,查了查博客,以下我仅仅说出自己的方法,将DAL中生成输出路径。改为UI的生成输出路径就可以,关于这个错误。有好多具体的博客介绍。

我就不多说了。

(2)接下来我就開始理解关于工厂,接口和DAL之间的关系了。。工厂反射。就是防止更换数据库,接着工厂事实上就是生产接口,将DAL中的类生成接口,然后在DAL中调用接口,来实现接口。

关于DAL中对数据库的增删改查都是反复的,这里我们抽象出一个类Sqlhelper。我们学的是面向对象,就是学会使用面向对象的思想,关于Sqlhelper博客请看我的这篇博客《机房收费重构(四)-SqlHelper》

Sqlhelper类我写在了DAL的以下,而后面的代码就会变得简单起来。就是声明。实例化,返回值的应用了。

附上小部分代码:

  1. <strong><span style="font-size:18px;"> Public Function RechargeQuery(cardno As Model.RechargeModel) As Model.RechargeModel Implements IDAL.IRecharge.RechargeQuery
  2. Dim sqlparams As SqlParameter() = {New SqlParameter("@CardNo", cardno.StuInfoQuery)}
  3. Dim strText As String = "select * from T_StuInfo where CardNo =@CardNo"
  4. Dim helper As New SqlHelper
  5. Dim cmdtype As CommandType = New CommandType()
  6. cmdtype = CommandType.Text
  7. Dim table As DataTable
  8. Dim Ucardno As New Model.RechargeModel
  9. table = helper.ExecuteQuery(strText, cmdtype, sqlparams)
  10. If table.Rows.Count <> 0 Then
  11. Ucardno.StuInfoQuery = table.Rows(0).Item("CardNo")
  12. End If
  13. Return Ucardno
  14. End Function</span></strong>

事实上在这一部分还会有关于存储过程的介绍。可是介于篇幅的影响就不向大家介绍了。

 本文纯属个人理解,如果误解。每个人都被邀请拍砖!

  接下来,我会向你介绍BLL和理解层的外观

客房收费系统改造(三)—厂+反射+DAL的更多相关文章

  1. vb.net版本房收费系统改造

    房费制开始重建的最终版本. 前几天.刚刚看完三层的视频,在视频中具体的解说了一个登录功能.天真的我,当时以为三层结构是那么的简单,所以我草草地做完总结之后,就非常快就開始机房收费系统的重构了.但是谁想 ...

  2. 重构版机房收费系统之分层、接口、数据库连接、反射+工厂(vb.net)

    分层 分层是为了减少层与层之间的依赖,添加程序的可读性,让整个系统结构清晰明白.还可大大减少维护成本,可是分层也有一定的缺点,有些能够直接訪问数据库的层,却要通过负责訪问数据库的层进行訪问.这样,在訪 ...

  3. VB查询数据库之写入数据库——机房收费系统总结(三)

    在机房收费系统中,新注册的用户,更改的密码,上机下级记录,上机收费记录等等都要写入数据库,这样,后面的查询才能生效.像数据库中写入数据,首先,找到你要写入数据的数据库中的表,在表中建立新的行,让后再把 ...

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

    VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...

  5. VB.NET机房收费系统总结

    总感觉这次机房收费系统非常有份量,一直没有下手总结,从2014-7-27至2014-9-29.这中间有太多故事和成长.首先说一下两次机房收费系统的不同,它是我们从面向过程向面向对象的一个转变.在.NE ...

  6. vb.net机房收费系统之组合查询

    我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...

  7. VB.NET 机房收费系统项目总结

    VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...

  8. VB.NET版机房收费系统---外观层如何写

    外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...

  9. VB.NET版机房收费系统---报表

    报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...

随机推荐

  1. ORA-00020的思考

    今天,历史的图书馆例行检查DB,发现alert.log有一"ORA-00020: maximum number of processes (150) exceeded",这是一个常 ...

  2. atitit.报告最佳实践oae 和报告引擎的选择

    atitit.报告最佳实践oae 与报表引擎选型 1. 报表的基本的功能and结构 2 1.1. 查询设计器(配置化,metadata in html) ,anno 2 1.2. 查询引擎 2 1.3 ...

  3. Coreseek:部门查询和增量索引代替实时索引

    1.行业调查 索引系统需要通过主查询来获取所有的文档信息,一个简单的实现是整个表的数据到内存,但是这可能会导致整个表被锁定,并且使其它操作被阻止(例如:在MyISAM格款式上INSERT操作).同时, ...

  4. Hdu 5256 系列转换

    主题链接: HDU5236 代码: #include<iostream> #include<cstdio> #include<cstring> #include&l ...

  5. With As 获取 id parentId 递归获取所有

    Declare @Id Int  Set @Id = 5;    ---在此修改父节点    With RootNodeCTE(Id,ParentId)  As  (  Select Id,Paren ...

  6. HDU 1051:Wooden Sticks

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. leetcode——Evaluate Reverse Polish Notation 求算式值(AC)

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  8. 【Linux探索之旅】第二部分第一课:终端Terminal,好戏上场

    内容简介 1.第二部分第一课:终端Terminal,好戏上场 2.第二部分第二课预告:命令行,世界尽在掌握 终端Terminal,好戏上场 随着第一部分的结束,我们进入了第二部分(小编你这好像是废话. ...

  9. Metatable和Metamethod(转)

    Metatable和Metamethod是用来干啥的?它们可以使得表a和b的表达式“a + b”变得有意义,其中metatable使两个不相关的表a和b之间可以进行操作,而操作的具体行为比如说&quo ...

  10. 怎样用C#代码管理SharePoint解决方式

    怎样用C#代码管理SharePoint解决方式         本文我们将了解怎样用代码管理SharePoint解决方式.我们使用server端对象模型抽取解决方式.         SharePoi ...