VB.NET机房收费系统总结

     又一次机房收费系统,有一次总结,第一次是vb6,这次则采用VB.NET+设计模式+三层。

    vb6的机房收费系统是面向过程开发,代码量大,不易维护,而这次的VB.NET则是面向对象的开发,代码量虽然没有减少反而增多,但是系统的结构变得灵活的多,可维护性增强了不少,采用了分层和设计模式,对象化了各个模块,复用率也大大提高了。

    具体来说一下吧。在网上查了资料,简单了解了三层后,开始了我的三层之旅。先用EA画了3层的登录例子。下面是我的系统架构(包图):

    当时一开始只有UI、BLL、DAL感觉太单调了,而且灵活性也太差,感觉系统呆板,所以采用了抽象工厂+反射+配置文件来提高业务与数据库操作的灵活性。单单一个反射,花费了我近2天的时间,最终发现路径下没有反射的对象,把D层生成的dll放到U层Debug中即可反射成功,因为需要D层还需要继续编码,所以在U层对D层添加了引用,这样在每次编译时,可以重新编译D层,而且由于添加了引用,D层的dll会自动复制到U层的Debug文件夹中。

    既然是涉及到数据库的开发,数据库的操作是不可避免的,每一个对数据库的增删改查,都需要调用一些固定的方法,工作重复很多,所以就把对数据库公共方法提取出来,作为了新的一层,每个D层的操作都是调用SqlHelper来实现的。这样减少了大量重复性的工作,复用率。。。你懂的。

    在写代码的前,向德鹏咨询了一下这么多层,怎么写代码,先写哪个后写哪个?感觉不要对3层单独写完一个再写一个,还是应该按功能模块3层并齐写。以后的合作开发肯定是要分开写的,但是这次开发是个人开发,而且还是第一次写分层的代码,分功能3层一块写,边写边调试,可以及时的发现错误。对于一个功能模块来说我的顺序是先写D层,然后写U层,然后写B层。这样逻辑上上会好很多。

    机房收费系统是在这个登录实例上扩展的。本质上是一样的。就是多写了几个功能模块而已。除了报表纠结了1天外,没遇到什么大问题。这次写代码本来差不多应该一周完成的,结果用来10天,主要是当时的时序图没有好好考虑,许多判断都是写代码时才加上的。浪费了不少时间。

    当然做完以后,还是感觉做的不好。

    比如说DAL层,应该是根据数据库中的表来构造的,也就是根据实体类来设计的。但是在写代码的过程中发现它们除了实体类不一样,其他大部分都很类似,甚至结构一模一样,如果一个地方错误,那全部都得改。昨天跟云姐也讨论了一下,她提出一个观点来——用泛型。针对于实体类,用object来代替,然后通过分析、抽象、融合来重新设计D层,来达到简化D层,减少代码量,提高复用率和可维护性。不过差异性还是存在的,重新设计是需要再仔细琢磨和推敲才能验证其可行度。

    对于SQLHelper类,也有争议。如果说SQLHelper类是作为类库而为其他组件复用的画,那么它就可以属于一个组件,而组件应该放在构建图中而不是包图中的。如果说SQLHelper只是为了让D层调用,那完全可以把它放到D层中。所以说SQLHelper作为单独的一层,有争议。

    还有许多疑问:D层按数据库表设计,而U层则按用例设计,那么B层按什么设计??按表?按用例?按业务??如果按表走,那么B层一个实体类对应一个B层类,但是像充值功能则至少需要操作2个表(卡信息,充值记录),而这个表对应在B层的类又是分开的了,那么B层的逻辑怎么处理?添加一个外观层??那B层又有什么用?外观层岂不成了业务逻辑层了??如果按用例,那需要的用例粒度不能太大了,否则在B层会遗漏。按业务,还需要再琢磨。

     这次机房收费系统就暂告一段落,期待合作开发能解决这些问题。也期待大家能给我答疑,不甚感激。

时间: 2024-11-02 06:57:13

VB.NET机房收费系统总结的相关文章

小结:VB.NET机房收费系统个人版

      经过几天的缝缝补补,自己的个人版终于OK了,!也许是因为有第一次的机房收费系统的经验,这次做,感觉非常亲切.      在业务逻辑方面,沿袭以前的逻辑,做了一点升级,但是改动不大.      在数据库方面,感觉自己从一个小菜鸟在成长.第一次做机房的时候,在数据库方面,只会"insert ,delete ,update, select",基本上是靠着四句话完成整个机房收费系统的.但是,这次在做的时候,用上了视图和存储过程和一些数据库中的小技巧.在表结构上也比以前简练了不少,靠

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

       报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据.       比如:民间常常说的豆腐帐,就是卖豆腐的每天将自己的卖出的豆腐记在一个本子上,然后每月都要汇总算算,这种情况下,报表数据和报表格式是紧密结合在一起的,都在同一个本子上.数据也只能有一种几乎只有记帐的人才能理解的表现形式,且这种形式难于修改.      VB版机房收费系统的报表采用的

机房收费系统的实现:VB中如何将MSHFlexGrid控件中的数据导出到Excel

机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系统,不过并没有涉及到这个功能,因此记录于此,于己,回顾反思,于大家,分享学习. 方法一:在根目录中事先建立空的Excel表格 1.在与VB工程同一根目录中建立将要导入数据的Excel表格: 2.在VB事件中写代码: Private Sub cmdExport_Click() Dim i As Int

机房收费系统(VB.NET)个人版总结

    重构版个人机房收费系统大概从暑假开学开始进行,花了不到一个半月的时间才完成,下面对我在重构过程中的一写理解.          1.系统设计一个很重要的目的就是重用,而要做到重用,低耦合是最有效的手段回顾一下我们C/S的整个学习过程,我们可以发现,从开始的VB版的机房收费系统,然后到现在VB.NET版,加设计模式.对系统进行分层,这个过程就是在对系统进行解耦.要解耦,首先就要进行抽象.把多次.重复用到的代码进行封装,其余的部分运用继承或者多态的思想,来进行使用.    在机房收费系统中我

机房收费系统:(二)VB中强制大小写转换和记录集操作

一.VB中大小写的转换      VB中自带字母大小写转换函数LCase和UCase.      格式:UCase(任何有效的string或char表达式),UCase(string),U就是upper的意思,就是变大:相反的就是,LCase(任何有效的string或char表达式)函数,就是转换成小写字符,用法同理,不再累述.      说明:   (1)参数必选项,可为任意有效的字符或者表达式.                    (2)如果 string 参数中包含 Null,则返回 N

VB.NET版机房收费系统---导出Excel表格

       datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,可以显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件非常简单和直观,大多数情况下,只需要设置DataSource属性即可,在绑定到包含多个列表或表的数据库源时,只需将DataMember属性设置为绑定的列表或表的字符串即可.机房收费系统多次用到数据表格的显示,并且导出为Excel表格,第一次机房收费系统是用VB版本的,她导出Excel的方法如下:        

VB.NET版机房收费系统---异常处理

        异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台的异常处理机制更加灵活,而且使用更加方便.是代替日渐衰落的Error Code方法的新法,提供Error Code 所未能具体的优势.异常处理巧妙又不失完美的分离了接收和处理错误代码.这个功能理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解.         异常

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

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

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

       外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来,才是王道,有人总说,纸上得来终觉浅,绝知此事要躬行,可是真到了躬行的时候,总是行不通,语言倒不过来,设计模式是C#语言的,机房收费是VB.NET版本的,书上的模式和机房联系不起来,不知道怎么应用,没办法,憋呗,看博客,问人,上网查资料,就这样,憋出一个外观,虽不太完美,但却异常宝贵,因为那是我