欢迎投稿

今日深度:

VB.NET机房收费系统总结,vb.net机房收费系统

VB.NET机房收费系统总结,vb.net机房收费系统


    总感觉这次机房收费系统很有份量,一直没有下手总结,从2014-7-272014-9-29,这中间有太多故事和成长。首先说一下两次机房收费系统的不同,它是我们从面向过程向面向对象的一个转变,在.NET平台下开发,采用三层思想,并添加了一些设计模式,然后说一下我的变化,不管从思想还是技术上绝对是一笔财富,经过这次机房收费系统,我更加坚信两句话:“出来混迟早都要还的”“一切都会过去的”。

        这次个人重构:7.27-8.11(画图阶段,其中包括数据设计2天);8.12-9.14(代码实现,中间有一周准备番茄模板课件);9.15-9.20(文档,修改图);9.21师哥验收;9.23-9.28(修改问题,其实9月份做的工作很少)。因为这是我们C/S的一个比较完整的项目,应该按着开发的流程来,到现在总结时有一种感触,个人重构是对整个C/S学习的综合或查漏补缺,把前面软件工程、UML.NET、三层和设计模式的东西都融合在一起。

       首先在画图阶段,这是必须的,有将这部分工作放在结尾的,那是因为我们做过了一次,基本功能了解的也差不多了,这次画图了解了EA的简单操作,我主要画了4种,包图:整个系统的模块的划分,每个包里面对应类,用例图,然后每个用例下面对应的时序图,其中我感觉类图最困难了,方法的传递不知道参数和返回值是什么,如果类图都画好的话,时序图那里就可以直接拖动。在这块欠缺的是对面向对象抽象的不好,很多类的方法还可以再抽象的(比如很多功能都用到判断卡号是否存在,这时就可以单独建立一个方法,而不是在每个类中都建立该方法),还有就是对包图中接口、工厂和D层之间关系有些模糊,后来走代码时才有一些理解。

       数据库设计考虑到三范式原则,最大的变化就是实现卡和学生信息的分离(数据库设计:http://blog.csdn.net/u010097777/article/details/38796793),还有就是这次表中的字段都是自己设计时考虑到什么时候会用到(比如充值和退卡中的状态字段),在第一次机房中使用人家的数据库,有些字段都不知道做什么用的,还有感触最深的就是数据类型的转换,这也是后面很让人无语的一件事情,尤其是时间类型转换,还有就是char(固定长度)和varchar(可变长度)在判断用户权限时可让我花了不少时间调试呢。

        代码实现:搭建七层环境很重要,在学习三层时我没有加上抽象工厂+反射+配置文件,这次可让我费劲了,看了不少的博客,一周时间才拿下来,都是第一次接触,理解的也太好,开始不知道从那一层开始敲,请教之后知道了先是接口层、工厂层、然后是D层、B层和U层,真的自己敲一条线后看一下代码如何走的就会明白很多。这次重构用到了视图(http://blog.csdn.net/u010097777/article/details/39268659)、存储过程+事务(http://blog.csdn.net/u010097777/article/details/39432449)等,最想说的就是遇到问题时要想着如何用更加简单的方法去解决,这些工具也都是适应我们的需求的,还有出来混迟早都要还的,之前学习数据库时的东西都补偿了回来。设计模式的添加很是挑战,但这个阶段我们先模仿着来,加了外观、模板(http://blog.csdn.net/u010097777/article/details/39638017)和单例(http://blog.csdn.net/u010097777/article/details/39718549),感受就是要大胆去尝试,有思路就好,真的是这样,这次下机代码是自己写的,虽然抽象的也不好,但是功能还是实现了。这中间遇到了很多问题:未加载程序集DAL,未将对象引用添加到实例,无法找到表,也解决了不少问题:结账控件查找,全局变量使用等,总之遇到问题我会首先自己主动找方案解决,实在解决不了也会和他们讨论,比如子父窗体这块感觉一清比我的方法要好(http://blog.csdn.net/u010097777/article/details/39719921)

       师哥验收时,他们站位比较高,除了一些判断、规范之类,UI设计也不舒服让人,修改学生信息、强制所有下机功能有问题,最大的问题就是我面向对象抽象不好,B层代码很少,而U层有大量判断,而且直接将D层信息返回到界面,这哪里解耦了?后来在修改中把上机方法写入了外观,这样就不用将所有返回值都返回U层了,但是下机我是没有能抽象出来,因为下机计算时间和金钱时我是直接利用U层界面数据,但外观不可能引用U层呢?所以在强制下机那块也有问题。在修改图过程中体会到了原来前期的规范的图很重要,传递的参数、返回值、注释都要准确,等我们合作开发时按层来做更是如此。

        遗留:没有打包发布,下机没能用上策略模式,强制所有下机有问题;个人重构暂告一段落,感觉自己从一个菜鸟在成长,也更加让我认识到自己的路还很长。


机房收费系统源码

加我吧,能帮助你的
 

sqlCommand几种方法的总结

此类不能被继承。我觉得这个类就是起到一个桥梁的作用。他连接.NETt和SQL Server;将我们在客户端设置的sql语句传递给sql;再将sql的值传递给客户端
这个类中定义了很多的方法和属性来帮助我们完成不同的sql语句;总结三种在机房收费系统中用到的方法
第一种方法:ExecuteScalar
作用: 执行查询返回值: 返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。System.Object 结果集中第一行的第一列;如果结果集为空,则为空引用(在 Visual Basic 中为Nothing)适用情况: 使用ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。与使用 ExecuteReader 方法,然后使用 SqlDataReader 返回的数据执行生成单个值所需的操作相比,此操作需要的代码较少。 示例代码:
在VB.NET中从数据库中取出单个值----使用从recharge求和的语句和
Imports System.Data ' 创建表类型的变量需要引用的空间 Imports System.Data.SqlClient '创建sql数据库连接需要引用的空间 Imports Entity Imports DateBaseHelper Public Class ConsumeInfoDAL '得到T_Recharge中全部的充值金额 Public Function GetBlance(ByVal strID As String, ByVal consumeCash As String) As String '设置传入sql中的T_SQL语句:获得充值的全部金额 Dim strRecharge As String = "SELECT SUM(cast(RechargeCash as int )) FROM T_RechargeInfo where CardID ='" + strID + "' " '打开数据库 执行上面的sql语句得到结果 关闭数据库 Dim con As New DBHelper Dim recharge As String con.Open() '需要处理如果表中没有记录那么返回的是false '如果返回false 充值为0 If con.ExecutesqlScalar(strRecharge) = False Then recharge = " 0" Else recharge = con.ExecutesqlScalar(strRecharge) End If con.Close() '返回结果 Return recharge End Function End Class DBHelper类,将对数据库的常用操作定义成了方法Imports System.Data Imports System.Data.SqlClient Imports System.Data.OleDb Imports System.Text Imports System.Configuration Imports Entity Public Class DBHelper Private myConnection As New SqlConnection '表示数据连接控件 Private CmdString As String '表示SQL语句命令 Priva......余下全文>>
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3954.html NewsArticle VB.NET机房收费系统总结,vb.net机房收费系统 总感觉这次机房收费系统很有份量,一直没有下手总结,从 2014-7-27 至 2014-9-29 ,这中间有太多故事和成长。首先说一下两次机房收费系统的...
评论暂时关闭