机房收费系统 — 下机

   一,   下机,是机房三大难点之一,下机当时费了我不少脑细胞,下机其实不难,    思路和逻辑思想最重要,当然,下机时候考虑的问题要比上机的时候要多,下机主要考虑以下几点:

     1:用户上机的时间是多少(上机时间)

     2:用户在上机时间内花了多少钱(消费金额)

     3:用户下机完之后卡内还剩多少钱(余额)

     4:上机时间转换(最好是分钟) 

     5: 余额 = 总金额 - 消费金额

     6:最后别忘了用 Delete删除上机表中的记录!

   二,主要用到的表:

    1:OnLine_info(上机表)

    2::Line_info(上机记录表)

    2:Student_info(学生表)

    3:Cancel_info(退卡表)

    5:BasicData_info(基础信息表)

                                                        好啦,直接上干货了 ~                                                
 

                  
                                     '下机
Private Sub CmdOffLine_Click()
 
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrc As ADODB.Recordset
    Dim mrcc As ADODB.Recordset
    Dim mrc1 As ADODB.Recordset      '上机Online表
    Dim mrc2 As ADODB.Recordset
    Dim mrcb As ADODB.Recordset   '连接基础表
    Dim mrcLin As ADODB.Recordset   '上机记录表Line
    Dim mrcxj As ADODB.Recordset   '判断是否下机
    
    Dim consumetime As String       '定义上机时间
    
    Dim consume As Single   '消费金额
    Dim Money As Single



                                  '卡号不能为空
    If Trim(txtCardNo.Text = "") Then
        MsgBox "卡号不能为空!", vbOKOnly + vbExclamation, "温馨提示"
        txtCardNo.Text = ""
        txtCardNo.SetFocus
        Exit Sub
    End If
    
                       '判断卡号是否存在
    txtSQL = "select * From student_info where cardno = '" & Trim(txtCardNo.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    
        If mrc.EOF Then
            MsgBox "此卡号不存在,请重新输入!", vbOKOnly + vbExclamation, "温馨提示"
            txtCardNo.SetFocus
            txtCardNo.Text = ""
            Exit Sub
        End If
        
                           '判断是否退卡
    txtSQL = "select * From CancelCard_info where cardno = '" & Trim(txtCardNo.Text) & "'"
    Set mrcc = ExecuteSQL(txtSQL, MsgText)
    
        If mrcc.EOF = False Then
            MsgBox "该卡已退卡,不能使用,请重新输入!", vbOKOnly + vbExclamation, "温馨提示"
            txtCardNo.SetFocus
            txtCardNo.Text = ""
            Exit Sub
        End If
        
                        '判断是否上机
    txtSQL = "select * From OnLine_info where cardno = '" & Trim(txtCardNo.Text) & "'"
    Set mrc1 = ExecuteSQL(txtSQL, MsgText)
    
        If mrc1.EOF = True Then
            MsgBox "该卡号未上机", vbOKOnly + vbExclamation, "温馨提示"
            txtCardNo.Text = ""
            txtCardNo.SetFocus
            Exit Sub
        End If
        
    txtSQL = "select * From Online_info where cardno = '" & Trim(txtCardNo.Text) & "'"
    Set mrc2 = ExecuteSQL(txtSQL, MsgText)
    
    txtSQL = "select * From BasicData_info "
    Set mrcb = ExecuteSQL(txtSQL, MsgText)

                                     
    txtOnDate = mrc2.Fields(6)   '上机日期
    txtOntime = mrc2.Fields(7)
    OffDate = Format(Now(), " yyyy-MM-dd")                 '把下机者时间和日期给弄出来
    Offtime = Format(Now(), " H:mm:ss")      '下机时间
    
    consumetime = Val(DateDiff("n", OnTime, Offtime))      '计算上机时间,  n,代表返回的是分钟



txtCTime = consumetime
       
                        '消费金额
    consume = (mrcb.Fields(1) / 60 * Val(txtCTime.Text))
    txtCMoney = consume
    
                         '余额
    txtCash.Text = (mrc.Fields(7) - txtCMoney.Text)
    
                             '更新Line表格
    txtSQL = "select * From line_info where cardno = '" & Trim(txtCardNo.Text) & "'"
    Set mrcLin = ExecuteSQL(txtSQL, MsgText)
    mrcLin.AddNew
    mrcLin.Fields(1) = txtCardNo.Text
    mrcLin.Fields(2) = txtStudentNo.Text
    mrcLin.Fields(3) = txtName.Text
    mrcLin.Fields(4) = txtDept.Text
    mrcLin.Fields(5) = txtSex.Text
    mrcLin.Fields(6) = txtOnDate.Text
    mrcLin.Fields(7) = txtOntime.Text
    '.Fields(12) = mrc.Fields(7)
    'mrcLin.Fields(13) = "正常上机"
    mrcLin.Fields(8) = OffDate.Text
    mrcLin.Fields(9) = Offtime.Text
     mrcLin.Update
     
     mrc2.Delete               '下机,删除表中内容!
     
    MsgBox "下机成功!", vbOKOnly + vbExclamation, "感谢充钱,下次zai'l"
    
   
End Sub

  为了方便大家看,我把上机所有代码都总结上来了,上机不难,难的是自己心态和思路,这两样解决了所有的问题都迎刃而解!

猜你喜欢

转载自blog.csdn.net/M_hcCSDN/article/details/86437433