机房收费系统总结篇(二)

           对于机房收费系统来说很重要的就是上下机了。敲上下机之前一定要理清好思路。最好画一个流程图,这样能更好的帮助尽量不出现逻辑性的错误。

      上机:

      


      我觉得上机时代码部分比较容易忽略的地方或者是说比较难想的地方有如下两个部分:

     1.判断是否金额不足:

     

 strSQL3 = "select * from student_Info where cardno='" & Trim(txtcard.Text) & "'"
                Set objRst3 = executeSQL(strSQL3, strMsgText3)
                           
                strSQL4 = "select * from BasicData_Info "
                Set objRst4 = executeSQL(strSQL4, strMsgText4)
                
                If objRst3.Fields(13) < objRst4.Fields(5) Then
                    MsgBox "金额不足,请充值!", vbOKOnly + vbExclamation, "提示"
                    txtxtcard.Text = ""
                    txtcard.SetFocus
                    Exit Sub


      2.显示上机人数  

strSQL6 = "select * from OnLine_Info"
                Set objRst6 = executeSQL(strSQL6, strmsgtext6)
                
                If objRst6.EOF = True Then
                    lblshangji.Caption = 0
                Else
                  lblshangji.Caption = objRst6.RecordCount
                End If
                          
      其实下机差不多是同样的道理:

     下机:判断卡号是否为空——判断该卡是否注册——判断该卡是否正在上机

      其中计算消费时间以及消费金额是难点:

      

If txtcard.Text = "" Then
       MsgBox "卡号不能为空", vbOKOnly + vbExclamation, "警告"
    Exit Sub
  End If
  
  '判断此号有没有注册
  txtSQL = "select * from student_Info where cardno='" & txtcard.Text & "'"
  Set mrc = executeSQL(txtSQL, msgText)
  If mrc.EOF = True Then
    MsgBox "此号还没有注册!请先注册。", vbInformation, "提示"
  Else
    '判断该卡号是否上机
    txtSQL = "select * from OnLine_Info where cardno='" & txtcard.Text & "'"
    Set mrcc = executeSQL(txtSQL, msgText)
    If mrcc.EOF = True Then
        MsgBox "该号没有上机!", vbOKOnly + vbExclamation, "提示"
     txtcard.Text = ""
    txtbuytime.Text = ""
    txtsex.Text = ""
    txtmoney.Text = ""
    txtextra.Text = ""
    txtdept.Text = ""
    txtSID.Text = ""
    txtonline.Text = ""
    txttime.Text = ""
    txtout.Text = ""
    txtouttime.Text = ""
    txtname.Text = ""
    txtdept.Text = ""
    txttype.Text = ""
    txtmoney.Text = ""
    
    Else  '如果此号在上机,下机时从online表中把数据输出
        '在添加一个下机提示
         txtSID.Text = mrcc.Fields(2)
         txttype.Text = mrcc.Fields(1)
         txtname.Text = mrcc.Fields(3)
         'txtextra.Text = mrc.Fields(7)
         txtsex.Text = mrc.Fields(3)
        txtdept.Text = mrc.Fields(4)
         txtout.Text = Date
        txtouttime.Text = Time
         txtextra.Text = Trim(mrc.Fields(7))
         txtonline.Text = mrcc.Fields(6)
        txttime.Text = mrcc.Fields(7)
         '计算消费时间
'
         'http://zhidao.baidu.com/question/33366253datediff函数的用法
         a = DateDiff("n", Trim(txtonline.Text), Trim(txtout.Text))
         b = DateDiff("n", Trim(txttime.Text), Trim(txtouttime.Text))
        txtbuytime.Text = Val(a + b)
         
         mrcc.Delete      '删除记录
         mrcc.Update
        'labcount.Caption = Trim(mrcc.RecordCount)
      End If
    End If
    
  '显示消费金额
  txtSQL = "select * from BasicData_Info "
  Set mrs = executeSQL(txtSQL, msgText)
  If Trim(txttype.Text) = "固定用户" Then
    If Val(a + b) < Trim(mrs.Fields(4)) Then
      txtmoney.Text = 0
    Else
     c = (Int(Val((Val(a + b) - Val(mrs.Fields(4))) / 60) + 1) * mrs.Fields(0))
     txtmoney.Text = c
    End If
  Else
    If Val(a + b) < Trim(mrs.Fields(4)) Then
      txtmoney.Text = 0
    Else
      c = (Int(Val((Val(a + b) - Val(mrs.Fields(4))) / 60) + 1) * Val(mrs.Fields(1)))
     txtmoney.Text = c
    End If
  End If
  
  '显示消费余额
 txtextra.Text = Val(txtextra.Text) - Val(c)
  
  
  '将上下机信息传送到line表中
  
  txtSQL = "select * from line_Info where cardno='" & txtcard.Text & "' and status='" & "正常上机" & "' and ondate='" & Date & "'"
  Set mrss = executeSQL(txtSQL, msgText)
   If mrss.EOF = False Then
'         mrs.AddNew
         mrss.Fields(1) = Trim(txtcard.Text)
         mrss.Fields(2) = Trim(txtSID.Text)
         mrss.Fields(3) = Trim(txtname.Text)
         mrss.Fields(4) = Trim(txtdept.Text)
         mrss.Fields(5) = Trim(txtsex.Text)
         mrss.Fields(6) = Trim(txtonline.Text)
         mrss.Fields(7) = Trim(txttime.Text)
         mrss.Fields(8) = Date
         mrss.Fields(9) = Time
         mrss.Fields(10) = Trim(txtbuytime.Text)
         mrss.Fields(11) = Trim(txtmoney.Text)
         mrss.Fields(12) = Trim(txtextra.Text)
         mrc.Fields(7) = Trim(mrc.Fields(7)) - c
         mrss.Fields(13) = "正常下机"
         mrss.Fields(14) = Environ("computername")
         
         mrss.Update
         mrc.Update
    End If
    strSQL6 = "select * from OnLine_Info"
                Set objRst6 = executeSQL(strSQL6, strmsgtext6)
                
                If objRst6.EOF = True Then
                    lblshangji.Caption = 0
                Else
                  lblshangji.Caption = objRst6.RecordCount
                End If
                        

' http://zhidao.baidu.com/question/33366253datediff函数的用法该链接为datediff函数的用法。

计算消费金额的时候注意固定用户和临时用户的金额是不一样的。具体看基本数据表中的信息。


猜你喜欢

转载自blog.csdn.net/oncemore520/article/details/51585954