第二次机房收费系统总结


        昨天我的第二次机房收费系统做完了,我也在坎坎坷坷中经历了一次浩劫。虽说是“浩劫”,不如说是一次旷日持久的大胜仗。

从起初的面向对象的概念一无所知,到看懂了登录窗体的实现,并且把它实现出来,到把整个系统弄完,还是感到很欣慰的。

反思

        重构的过程暴漏了我很多的问题。从来不愿意接受挑战,我总是认为我自己没有准备好,这也导致了我的自卑心理,害怕弄不好,担心这个担心那个。当看到其他同学完成的时候总觉得他们是天生的编程的料子,而我是天生的智商有缺陷。

        其次,是做东西过程中的毛毛躁躁的心理,这种情况在最开始的时候是非常明显的,画图用的有三个星期,写代码也用了有两个星期。之所以这样,我认为有两点我没有做好:第一就是对陌生事物的恐惧感,第二就是前期的设计没有认真的想清楚,没有理清思路。我没有我之前画的图会有那么多的漏洞,有些根本不能实现,所以导致后来的代码几乎不按照原来的图走了。

        算了,先不检讨自己了,下面说说我的收获吧。

画图

        画图的过程是一个非常纠结的过程。当时没有想着参考别人的,就怎么想的怎么画出来了。第一遍的时候没有用上三层,仍然是用面向过程做出来的,让七期的师姐看了一下,说没有三层的意识,我又上网上搜了一些资料,接着重新画了一遍,这一次用上了三层的结构,第三次就是用上了设计模式的过程。设计模式的运用有种生搬硬套的感觉,但是总归是学习,多用几种还是有好处的。

写代码

        机房收费系统我一共分了8层,一层一层的说写的过程中出现的问题,下面是我的分层图片:

第二次机房收费系统总结_第1张图片

实体层:

        实体层就是对数据库表的对应,没有什么特别的,无非是把没张表看成一个类,然后写出它的属性。

数据访问层:

数据访问层又分了三个小层:

DBHelp:主要是连接数据库,在这里主要学习了ADO.NET访问数据库的相关知识:

DataAdapter:实际是一个SQL语句集合,因为对DataBable的操作最终要归结到Sql语句。

DataSet:ADO.NET中取消了ADO中的重要对象Recordset,取而代之的是一个全新的对象DataSet。DataSet是内存中的数据库,这是因为在一个DataSet对象中包含了一个数据库系统中所应有的一切内容,它可以支持多张表、表间关系和数据约束等。在DataSet对象中有若干个结合。比如Tables,这个集合就可以代表一个数据库中的多张表。机房收费系统我没有用到DataSet对象,用到的是DataTable对象。

DataTable:一个DataTable有两个集合:Columns和Rows,这两个结合分别用于表示一个表的列和行。其次就是对于整个表的操作,包括对于DataTable的

中的数据的选取和对于DataTable的创建,这里主要说对于空的DataTable的创建:

Public Class CreateDataTB

    Public Shared Function NewTB() As DataTable

        Dim tb As New DataTable

        tb.Columns.Add("序号")

        tb.Columns.Add("名称")

        tb.Columns.Add("类型")

        tb.Columns.Add("日期")

        tb.Columns.Add(备注")

        tb.Rows.Add("1","aaa", "bigg", "ggggss", "sssss")

        tb.Rows.Add("2","bbb", "smll", "llllll", "44444")

        tb.Rows.Add("3","ccc", "dogss", "sssss", "k6666")

        tb.Rows.Add("4","eee", "yyyr", "343as", "y78ghj")

        Return tb

   End Function

End Class

这里应该注意:要先加入列,再加入行,至于为什么,我也不知道。

DAL:

主要是用sql语句对数据库进行处理, sql无非是对数据的增删改查:

选择:select * from table1 where 范围
插入:insert intotable1(field1,field2) values(value1,value2)
删除:delete fromtable1 where 范围
更新
:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’

排序:select * from table1 order by field1,field2[desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1

具体的大家可以查看msdn,那上边说的很清楚。

IDAL:

是DAL的一个接口,它里面的方法dal一定要实现,这里真正用到了接口。

IDALFactory:

是对于抽象工厂模式的应用,当BLL层调用Dal层的时候是通过IDALFactory调用的。

BLL:是对于小逻辑的判断,没有太多要说的。

Faced:是对于BLL的组合,一个功能可以构成一个方法,这个方法里进行了一些较大程度上的逻辑判断。

UI:调用Faced,主要处理数据的输入和输出,和以前的界面没有区别,只不过是它自己要使用的方法Faced层早就准备好了。

设计模式:机房收费系统中主要用到了抽象工厂、外观模式、策略模式、单例模式,虽然用的都不是很恰当,但是对于设计模式的理解不再是停留在表面了,而是能够说出它的好处和应该应用的场合。

感谢:感谢米老师的督促和关心,感谢七期师姐的耐心负责的指导(从来没有厌烦过,太贴心了!),感谢周围同学的热心帮忙!

你可能感兴趣的:(设计模式,sql,数据库,table,Class,dataset)