*一、前言
不管我们在做任何一件事时有顺序,有思路很重要,在最近做机房的时候有时就会把思路打乱,导致出现一系列的错,一步错,步步错,起连锁反应。做充值的时候感觉也不太难,充值能成功就行,可是仔细想想还不行,需要好好分析,站在用户的角度。
二、分析
1.作为开发者:在做一个软件时一定要考虑到用户的需求,让用户使用起来方便,可靠,并且让自己以最小成本获取最高利润,但是有时可能会由于思路不清,分析不全面导致一些BUG,就拿机房收费系统充值来说,如果仅能实现充值,在查询充值记录的时候只能查出最近充值的一条记录,这样就不行了。我的做出来就是这样的,在充值记录表里只有一条记录,而且把每次充值的金额都累加了,时间更新的是最近充值的时间,找了好久也找不出问题。在查询充值记录的时候以为是充值记录里出错了,但是看完数据表之后里面就只有一条记录,那就要从充值入手了,肯定是这里的问题,终于站在巨人的肩膀上找出错误所在了。
2.作为使用者:那就肯定要简单,方便,掌握快,满足自己需求,能查出自己想要找的数据,还是以充值来说,假如做的软件只能查出来最近的一条记录,那在用户想要查自己总共充了多少钱时查不出来那就满足不来用户的需求了,那可能时间久了就没有用户用了,满满导致自己做的软件没人用,成本也搭进去了,时间也浪费了,就亏大发了。
三、流程图
四、运行结果显示
五、重要代码
1.``限制充值钱数,不能小于规定金额
> txtsql = "select * from BasicData_info"
> Set mrc1 = ExecuteSQL(txtsql, msgtext)
> If Val(txtCash.Text) < mrc1.Fields(5) Then
> MsgBox "充值金额不能小于" & Trim(mrc.Fields(5)) & "元", 48, "警告"
> mrc1.Close
> Exit Sub
> End If
2.将充值成功后的信息更新到文本
``> txtsql = "select * from recharge_info"
> Set mrc2 = ExecuteSQL(txtsql, msgtext)
Text3.Text = "充值卡号:" & txtCash.Text & vbCrLf & "上次卡内的余额:" & Trim(mrc.Fields(7)) - txtCash.Text & vbCrLf & "现在卡内的余额:" & mrc.Fields(7) & vbCrLf & "充值日期:" & mrc.Fields(12) & vbCrLf & "充值时间:" & mrc.Fields(13) & vbCrLf & "充值老师:" & UserName
mrc2.AddNew
mrc2.Fields(1) = mrc.Fields(1)
mrc2.Fields(2) = Trim(txtCardNo.Text)
mrc2.Fields(3) = txtCash
mrc2.Fields(4) = Trim(Date)
mrc2.Fields(5) = Trim(Time)
mrc2.Fields(6) = UserName
mrc2.Fields(7) = Trim("未结账")
mrc2.Update
mrc2.Close
3.卡的余额等于卡内原有金额加本次充
mrc.Fields(7) = Val(Trim(txtCash.Text)) + mrc.Fields(7)
mrc.Fields(12) = Trim(Date)
mrc.Fields(13) = Trim(Time)
mrc.Update
mrc.Close
Private Sub cmdOk_Click()
> Dim mrc As ADODB.Recordset
> Dim mrc2 As ADODB.Recordset
> Dim mrc3 As ADODB.Recordset
> Dim txtsql As String
> Dim msgtext As String
> Dim mrc1 As ADODB.Recordset
> Dim txtEndCash As String
If Not testtxt(txtCardNo.Text) Then
MsgBox "请输入卡号!", 48, "警告"
txtCardNo.Text = ""
txtCardNo.SetFocus
Exit Sub
End If
If Not testtxt(txtCash.Text) Then
MsgBox "请输入金额!", 48, "警告"
txtCash.SetFocus
txtCash.Text = ""
Exit Sub
End If
txtsql = "select * from student_info where cardno = '" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF Then
MsgBox "该卡号不存在!", 48, "警告"
txtCardNo.SetFocus
txtCardNo.Text = ""
Text3.Text = ""
> Else
> txtsql = "select * from BasicData_info"
> Set mrc1 = ExecuteSQL(txtsql, msgtext)
> If Val(txtCash.Text) < mrc1.Fields(5) Then
> MsgBox "充值金额不能小于" & Trim(mrc.Fields(5)) & "元", 48, "警告"
> mrc1.Close
> Exit Sub
> End If
> mrc1.Close
txtsql = "select * from student_info where cardno = '" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
txtsql = "select *from User_info"
Set mrc3 = ExecuteSQL(txtsql, msgtext)
txtsql = "select * from recharge_info"
Set mrc2 = ExecuteSQL(txtsql, msgtext)
Text3.Text = "充值卡号:" & txtCash.Text & vbCrLf & "上次卡内的余额:" & Trim(mrc.Fields(7)) - txtCash.Text & vbCrLf & "现在卡内的余额:" & mrc.Fields(7) & vbCrLf & "充值日期:" & mrc.Fields(12) & vbCrLf & "充值时间:" & mrc.Fields(13) & vbCrLf & "充值老师:" & UserName
mrc2.AddNew
mrc2.Fields(1) = mrc.Fields(1)
mrc2.Fields(2) = Trim(txtCardNo.Text)
mrc2.Fields(3) = txtCash
mrc2.Fields(4) = Trim(Date)
mrc2.Fields(5) = Trim(Time)
mrc2.Fields(6) = UserName
mrc2.Fields(7) = Trim("未结账")
mrc2.Update
mrc2.Close
mrc.Fields(7) = Val(Trim(txtCash.Text)) + mrc.Fields(7)
mrc.Fields(12) = Trim(Date)
mrc.Fields(13) = Trim(Time)
mrc.Update
mrc.Close
MsgBox "充值成功!", 48, "提示"
txtCash.Text = ""
txtCardNo.Text = ""
Text3.Text = ""
txtCardNo.SetFocus
End If
End Sub
总结
这就是整个充值的过程,只要按着流程图一步一步来就好了。希望可以帮助有需求的同志,有错误地方还请指出。*