【机房收费系统】——上机
【前言】
上机部分还是比较简单的,逻辑也很好理清,只是有很多判断一不留神就会漏掉,现将上机逻辑与代码分享给大家,还望广大网友提出宝贵指点!
【正文】
一、逻辑
- 点击上机按钮:
- 判断student_Info表中此卡号是否存在,若不存在则提示“此卡号不存在!”,若存在则:
- 判断是否正在上机:从OnLine_Info表中搜索有无此卡号记录:
- 若有记录(正在上机):则弹框提示“该卡号正在上机”并从OnLine_Info表中加载出当前卡号的上机信息(上机日期和时间)
- 若无记录(没在上机):判断余额是否大于basicdata_Info表中的leastcash,若小于leastcash则提示“余额不足,请充值!”
- 若大于leastcash则将信息加载到文本框中,并将上机信息添加到数据库OnLine_Info表中,弹框提示“该卡号已成功上机!”
二、流程图
三、代码
Private Sub CmdOnline_Click()
txtSQL = "select * from Online_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from Line_Info where "
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc2 = ExecuteSQL(txtSQL, MsgText)
If mrc2.EOF Then
MsgBox "该卡号不存在,请重新输入卡号!"
txtCardNo.Text = ""
txtID.Text = ""
txtDepartment.Text = ""
txtType.Text = ""
txtName.Text = ""
txtSex.Text = ""
txtOnlinedate.Text = ""
txtOnlinetime.Text = ""
txtOfflinedate.Text = ""
txtOfflinetime.Text = ""
txtCash.Text = ""
txtdependtime.Text = ""
txtdependcash.Text = ""
Else
If mrc.EOF = False Then
MsgBox "该卡号正在上机!"
txtOnlinedate = mrc.Fields(6)
txtOnlinetime = mrc.Fields(7)
Else
txtSQL = "select * from basicdata_Info "
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
If txtCash.Text > mrc1.Fields(5) Then
mrc.AddNew
txtOnlinedate = Trim(Label15.Caption)
txtOnlinetime = Trim(Label20.Caption)
mrc.Fields(0) = Trim(txtCardNo.Text)
mrc.Fields(1) = Trim(txtType.Text)
mrc.Fields(2) = Trim(txtID.Text)
mrc.Fields(3) = Trim(txtName.Text)
mrc.Fields(4) = Trim(txtDepartment.Text)
mrc.Fields(5) = Trim(txtSex.Text)
mrc.Fields(6) = Trim(txtOnlinedate.Text)
mrc.Fields(7) = Trim(txtOnlinetime.Text)
mrc.Fields(8) = Trim(VBA.Environ("computername"))
mrc.Fields(9) = Trim(Date)
mrc.Update
mrc.Close
MsgBox "该卡号已成功上机!"
Else
MsgBox "余额不足,请充值!"
End If
End If
End If
End Sub
四、重难点
在判断余额否充足时,发现一个有意思的现象:
If Trim(txtCash.Text) > Trim(mrc1.Fields(5) Then
'将数据加载到文本框中
Else
MsgBox "余额不足,请充值!"
End If
其中 txtCash.Text 是student_Info表中的余额,mrc1.Fields(5) 是Basicdata_Info表中的最小余额限制,理论上应该是学生的余额>最小余额时,才可以使学生上机,否则提示“余额不足,请充值!”,但我在运行过程中发现当余额为2,最小余额为5,也就是说当余额<最小余额时竟然执行了 " 将数据加载到文本框中 " ,于是我将余额改为30,最小余额还是为5,也就是说余额>最小余额,此时再运行,却弹出了“余额不足,请充值!”。也就是说他们两个竟然反过来了!
然后开始调试,细心的小编发现了不同之处:
一个返回值带引号,一个不带引号,考虑到可能是数据类型的问题,于是用一个Val()函数,将这两个都改为统一的数据类型即可:
If Val(Trim(txtCash.Text)) > Val(Trim(mrc1.Fields(5))) Then
'将数据加载到文本框中
Else
MsgBox "余额不足,请充值!"
End If
【结尾】
机房做到最后有些做不动的感觉,前期感觉特别顺利,逻辑也很好理清。到了后面感觉好长时间自己还进入不了理机房思路的状态,感觉做的也有些困难,大概这就是瓶颈时期吧!
有志者事竞成,破釜沉舟百二秦关终属楚
苦心人天不负,卧薪尝胆三千越甲可吞吴