明确要做什么
要学习一个东西或者说要做一个东西首先得知道ta是个啥,首先,先分析一下机房收费系统是干什么的。从基本的功能界面可以看出,这个系统主要完成的功能是对机房中电脑的收费,上机下机,充值卡等数据进行管理。开发这个系统的目的在简化机房收费流程,使其简单快速。方便用户操作,及简化管理层人员的工作量,从而使系统高效率达成用户要求。
整体结构设计
知道了大概的需求,就需要将具体的功能进行明确,机房收费系统也是一个依赖于数据库的系统,所以整体分为数据库和vb6中编程2部分
数据库E-R图
机房收费系统功能设计概况
以上是对系统的一个整体认识。
详细设计
有了整体的设计接下来则是详细的功能实现,在具体功能实现中我有以下几个小技巧:
1.流程图的使用,下面分别是上机,下机,注册用户的流程图
流程图可以很好的整理我们的思路,将实际的功能分解成一块块的小部分,之后在将每个部分作为代码块分别实现。做到由大变小,各个击破。
2.明确概念,按照逻辑思考
这个明确概念包括很多方面,如:
1.最基本的三大结构(顺序,选择,循环),我们的任何需求最终肯定都会由三大结构来实现,所以在拆分够细致还是不知道如何实现的时候可以从三大结构下手,肯定会有解决办法。
2.对于控件,方法,代码的使用,比如在机房收费系统中我们有有些功能可以通过不同的方式实现,比如选择有if else和select case,都能完成判断选择的效果,该如何选择,两种各有哪些优略。我们应该去思考这些问题,通过横向的对比可以扩宽我们的思路(广度),也可以加深我们对某一种的理解(深度)。
3.要懂得道理,学会举一反三,学会利用已有的知识推理。比如“在机房修改密码的窗体旧密码与数据库密码验证”解决这个问题,只要按照常规的思考方式去思考即可解决,验证一个东西需要做的就是两个东西的对比,在这里就是已登录用户名做索引,去对比数据库中的密码。简而言之:密码=密码。当有了这个思路只需要分部实现即可。
3.输入/出限制的统一规划
下面是我根据各个窗体总结的限制:https://blog.youkuaiyun.com/xyzyhs/article/details/100630919
其实还可以尝试其他思路总结,比如多个窗体都有卡号的限制,或者有多个限制的范围是一致的,是不是可以考虑利用代码添加i限制,之后封装。每个窗体在加载时自动调用,可以便于管理,提高开发效率。
4.经典代码
在这次的机房收费系统中有一使用频率非常高的自定义方法(ExecuteSQL()),这个方法的使用范围也很广无论是学生信息管理系统还是机房收费系统都大量使用了这个方法连接数据库,获取数据。
'传递参数SQL传递查询语句,Msgstring传递查询信息
'自身以一个数据集对象的形式返回
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection '定义连接
Dim rst As ADODB.Recordset
Dim sTokens() As String ' 定义字符串
On Error GoTo ExecuteSQL_Error
'异常处理
sTokens = Split(SQL) '用Split函数产生一个包含各个子串的数组
Set cnn = New ADODB.Connection '创建连接
cnn.Open ConnectString '打开连接
'判断字符串中是否含有指定内容
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
'执行查询语句
cnn.Execute SQL
'返回查询信息
MsgString = sTokens(0) & " query successsful"
Else
'创建数据集对象
Set rst = New ADODB.Recordset
'返回查询结果
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End If
ExecuteSQL_Exit:
Set rst = Nothing '清空数据集对象
Set cnn = Nothing '中断连接
Exit Function
'错误类型判断
ExecuteSQL_Error:
MsgString = "查询错误" & Err.Description
'在Visual Basic中,为了避免程序代码出错而终止程序
'一般在无法确定出错原因的情况下采用
Resume ExecuteSQL_Exit
End Function
测试
代码完成后必不可少的就是调bug,我对处理bug总结了一下几点:
1.善用断点调试,断点调试可以很快的直接从问题入手,真正是做到“哪里有问题点哪里”
2.F8单步调试,在需要详细了解每个语句的执行状态,执行结果,整体代码的运行逻辑时但不调试是个神器,你值得拥有
3.添加监视,监视可以让你了解每个变量的具体变化,根据变量值的变化更深刻的理解代码,寻找错误的原因。
4.善用网络,最重要的一条,借鉴前人的经验站在巨人的肩膀上可以让我们眼界更开阔,少走很多弯路。