【机房收费系统】——上机

【前言】

上机部分还是比较简单的,逻辑也很好理清,只是有很多判断一不留神就会漏掉,现将上机逻辑与代码分享给大家,还望广大网友提出宝贵指点!

 

【正文】

一、逻辑

  • 点击上机按钮:
  • 判断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

 

【结尾】

机房做到最后有些做不动的感觉,前期感觉特别顺利,逻辑也很好理清。到了后面感觉好长时间自己还进入不了理机房思路的状态,感觉做的也有些困难,大概这就是瓶颈时期吧!

 


 

有志者事竞成,破釜沉舟百二秦关终属楚

苦心人天不负,卧薪尝胆三千越甲可吞吴

posted @ 2019-02-16 20:22  肥宅快乐鼠  阅读(31)  评论(0编辑  收藏  举报