zoukankan      html  css  js  c++  java
  • 【机房收费系统】——上机

    【前言】

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

    【正文】

    一、逻辑

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

     

    【结尾】

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


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

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

  • 相关阅读:
    路径操作OS模块和Path类(全)一篇够用!
    数据可视化:绘图库-Matplotlib
    matplotlib中文显示的问题
    Microsoft Visual C++ 14.0 is required问题解决
    python习题——随机整数生成类
    python——时间模块
    怎么获取10个线程的结果再返回
    集群服务器定时任务,只运行一个定时器的设计
    分布式事务
    分布式数据库---分库分表
  • 原文地址:https://www.cnblogs.com/txge/p/13973632.html
Copyright © 2011-2022 走看看