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

    【前言】

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

    【正文】

    一、逻辑

    • 点击下机按钮:
    • 判断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():表示系统当前日期和时间

    【结尾】

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

  • 相关阅读:
    Linux | Ubuntu 生成二维码实例
    Ubuntu 添加wine安装程序的快捷方式
    mysql 中文 排序
    Received disconnect from **.**).***.*** port 22:2: Too many authentication failures 解决办法
    php 数组与URL相互转换
    ssh `快捷键` 快速链接服务器
    使用ssh生成密钥并保存在不同的文件(ubuntu)
    H5移动端调试 weinre
    简单的 图片下载 php
    linux 系统生成二维码
  • 原文地址:https://www.cnblogs.com/txge/p/13973631.html
Copyright © 2011-2022 走看看