用了两个月纯三层的《机房重构》算是完成了,期间SQL软件各种不配合导致的各种修复从而获得了一大把“美好”经验,最后在卸装几次后还是无可避免的重装了系统,这两个月中用在SQL上的时间一个星期有过之而无不及。回头看看GrindStone中单对机房重构的记录才50来个小时,瞬间有种被SQL伤到的感觉,别人都在做系统我在……被玩电脑。所以现在抱着一种壮士将死的大义凛然先让机房收费早点升天吧。
对于机房收费系统的重构,主要分四为个方面:业务逻辑、数据库、分层、控件。
业务逻辑
这里的业务逻辑是指《机房收费系统》的功能设计,也是我们常说的几条线的问题,即有几条线就是几个业务逻辑。在开始做之前最好先分析它有哪些线,大致规划一下各条线实现的先后顺序,由易到难。这个过程是UML中需要体现的,对于敲系统也是宏观把控的关键。机房中还算复杂一点的是上下机、组合查询、结账,我在将要做之前又画了一下比较详细的流程,这样做起来很速度。只要思路清晰合理,这部分还是比较简单的。
数据库
第一次做机房是模仿资料里的数据库建的,用起来有点麻烦。在《数据库系统原理》中了解到一些设计数据库的原则,这次正好派上用场,刚开始就是按照那几个范式来的,在敲系统的过程中发现不对劲,太精简反而不利于系统的使用,满足三范式就差不多了。数据库设计涉及到了数据库表、数据库关系图、视图、存储过程,这些有的在以前的博客中总结过。(本来想贴图的,SQL又打不开了,等它好了再说吧)
分层
分层和设计模式应该放在一起的,这也是机房重构的重中之重,但是由于我还没有加设计模式,现在先简单小结下U、B、D三层。
U层是窗体界面层,按窗体划分,这个里边比较麻烦的是一些控件的应用,所以把它单独分成一个方面。
B层算是U、D两层的中介,按照功能划分,起到传递信息的作用,是最简单的一层。
D层是和数据库打交道的,按数据库表划分,根据B层传进来的信息操纵数据库,是系统的灵魂所在。外加的SqlHelper在D层起到了举足轻重的作用,使D层更利于管理。
三层之外的E层相当于全局变量,按照数据库表和视图划分,即数据库中有什么表就有什么实体,不管是真实的表还是虚拟的表。E层和D层的转换通过封装在E层的一个ConvertHelper类实现。
控件
从VB到VB.net的转变,在编程风格上没有太多变化,倒是那些主要的控件有得研究了,从菜单控件、表格控件到标签控件,在没有使用前真是一头雾水,用过之后才发现VB.net的确实灵活。机房中需要了解的控件:表格控件DataGridView、菜单控件MenuStrip、标签控件TabControl、报表控件ReportViewer、时间控件DateTimePicker、浏览器控件WebBrowser。其中DataGridView、ReportViewer用的比较多,在后续博客中介绍,其它的很简单知道是用它就行。附加几个在刚开始使用失误的一些常用控件属性:
form窗体:AcceptButton默认按钮,CancelButton取消按钮。VB中的默认、取消按钮是放在控件上的,在VB.net中都移到了窗体上
text控件:Locked锁定位置,Readonly只读,Multiline允许调整控件大小,vbCrLf=Chr(13)&Chr(10)是回车换行符。
combobox控件:DropDownStyle下拉框显示型式,dropDownList只能选择下拉框中的内容