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

【前言】

下机比上机用到的表要多一些,需要判断的条件也多了几个,还有计算消费时间时可能会觉得难一点,但是不要怕,只要理清思路,代码实现什么的肯定是“车到山前必有路,船到桥头自然直”啦!接下来小编将以 [逻辑——流程图——代码——重难点] 的顺序为大家揭秘下机的真实面目!

 

【正文】

一、逻辑

  • 点击下机按钮:
  • 判断student_Info表中此卡号是否存在,若不存在则提示“此卡号不存在!”,若存在则:
  • 判断是否正在上机: 从OnLine_Info表中搜索有无此卡号记录:
  • 若无记录(没在上机):弹框提示“此卡号未上机!”
  • 若有记录 (正在上机): 弹框提示 "是否使该卡号下机":
  • 若点击“是”:判断上机时长是否小于最小限制时长,若小于则消费金额为0,若大于则判断是否是固定用户,若是:则消费金额=固定用户价格×消费时间,否则消费金额=临时用户价格×消费时间
  • 将下机信息加载到文本框中,将下机信息更新到Line_Info表中,将余额字段更新到student_Info表中,删除Online_Info表中的记录并弹框提示“该卡号已成功下机!”;
  • 若点击“否”则关闭弹框;

二、流程图

 

三、代码

Private Sub CmdOffline_Click()

    txtSQL = "select * from Online_Info where cardno='" & Trim(txtCardNo.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    
    txtSQL = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'"
    Set mrc2 = ExecuteSQL(txtSQL, MsgText)
    
    If mrc2.EOF Then
        MsgBox "该卡号不存在,请重新输入卡号!"
    Else
        If mrc.EOF Then
            MsgBox "该卡号未上机!"
        Else
            '利用MsgBox的返回值做判断
            a = MsgBox("是否使该卡号下机", vbYesNo)
            If a = vbYes Then
                txtSQL = "select * from basicdata_Info "
                Set mrc1 = ExecuteSQL(txtSQL, MsgText)

                    If Trim(txtCash.Text) > Trim(mrc1.Fields(5)) Then
                        
                        '将数据加载到文本框中
                        txtCardNo.Text = Trim(mrc2.Fields(0))
                        txtID.Text = Trim(mrc2.Fields(1))
                        txtDepartment.Text = Trim(mrc2.Fields(4))
                        txtType.Text = Trim(mrc2.Fields(14))
                        txtName.Text = Trim(mrc2.Fields(2))
                        txtSex.Text = Trim(mrc2.Fields(3))
                        txtCash.Text = Trim(mrc2.Fields(7))
                        txtOnlinedate.Text = Trim(mrc.Fields(6))
                        txtOnlinetime.Text = Trim(mrc.Fields(7))
                        txtOfflinedate.Text = Date
                        txtOfflinetime.Text = Time

                        datediff1 = mrc.Fields(6) & " " & mrc.Fields(7)
                        txtdependtime.Text = DateDiff("n", datediff1, Now())
                        
                        If txtdependtime < mrc1.Fields(3) Then
                            txtdependcash.Text = 0
                        Else
                            '判断用户是固定用户还是临时用户
                            If Trim(mrc2.Fields(14)) = "固定用户" Then
                                txtdependcash.Text = Trim(txtdependtime.Text) * Trim(mrc1.Fields(0))
                            Else
                                txtdependcash.Text = Trim(txtdependtime.Text) * Trim(mrc1.Fields(1))
                            End If
                            
                        End If
                        
                        mrc2.Fields(7) = Trim(txtCash.Text) - Trim(txtdependcash.Text)
                        txtCash = Trim(mrc2.Fields(7))
                        
                        txtSQL = "select * from Line_Info "
                        Set mrc3 = ExecuteSQL(txtSQL, MsgText)
                        
                        '将数据更新到Line_Info表中
                        mrc3.AddNew
                        mrc3.Fields(1) = Trim(txtCardNo.Text)
                        mrc3.Fields(2) = Trim(txtID.Text)
                        mrc3.Fields(3) = Trim(txtName.Text)
                        mrc3.Fields(4) = Trim(txtDepartment.Text)
                        mrc3.Fields(5) = Trim(txtSex.Text)
                        mrc3.Fields(6) = Trim(txtOnlinedate.Text)
                        mrc3.Fields(7) = Trim(txtOnlinetime.Text)
                        mrc3.Fields(8) = Trim(txtOfflinedate.Text)
                        mrc3.Fields(9) = Trim(txtOfflinetime.Text)
                        mrc3.Fields(10) = Trim(txtdependtime.Text)
                        mrc3.Fields(11) = Trim(txtdependcash.Text)
                        mrc3.Fields(12) = True
                        mrc3.Fields(13) = Trim(VBA.Environ("computername"))
                        mrc3.Fields(15) = Trim(txtCash.Text)
                        mrc3.Update
                        mrc3.Close                        
                        mrc.Delete     
                        MsgBox "此卡号已成功下机!"
                    Else
                        MsgBox "余额不足,请充值!"
                    End If
            Else
            End If
        End If
    End If
End Sub

四、重难点

本来以为这块也很简单,但还是在进行计算消费时间时卡住了!倒是想到用DateDiff函数了,但却没能弄明白DateDiff函数在VB中的用法!下面介绍一下DateDiff函数的使用:

  •  
  • 1.表达式:DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])  
  • 2.参数意义:
  • ①DateDiff表示date1和date2之间间隔的时间
  • ②timeinterval 表示相隔时间的类型,如:yyyy 年,q 季,m 月,y 一年的日数,d 日,w 一周的日数,ww 周,h 时,n 分钟,s 秒
  • 3.实例:
  •                         datediff1 = mrc.Fields(6) & " " & mrc.Fields(7)
  •                         txtdependtime.Text = DateDiff("n", datediff1, Now())
  • ①在这里 mrc.Fields(6) 和 mrc.Fields(7) 分别是 Online_Info 表中的 OnlineDate 和 OnlineTime。
  • ②"n":表示将结果显示为分钟数
  • ③Now():表示系统当前日期和时间

【结尾】

不要轻易被一点点小困难所吓倒,更不要轻易的否定自己!你的潜力永远比你想象的要大的多!坚信自己一定能行!在不断的积累中感受“车到山前必有路,船到桥头自然直”的奇妙!

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