机房收费系统之上下机

  上下机顾名思义就是给用户进行上机和下机操作。
先说上机部分,上机需要先判断是否有卡号或卡号在使用,如果有卡号就判断是否在上机,在上机就将此卡信息添加到文本框中,不在上机就判断用余额是否充足,余额充足就可以让用户正常上机
上机代码

  '先判断卡号是否存在,包括有卡号和在使用
  txtSQL = "select * from student_info where cardno= '" & Trim(cardno.Text) & "' And Status = '使用'"
  Set mrc = ExecuteSQL(txtSQL, MsgText)

  If mrc.EOF Then
      MsgBox "您未输入卡号或此卡未注册!", vbOKOnly + vbExclamation, "提示"
      cardno.SetFocus
      cardno.Text = ""
      mrc.Close
  Else
      mrc.Close
       '判断是否在上机
      txtSQL = "select * from online_info where cardno= '" & Trim(cardno.Text) & "'"
      Set mrc = ExecuteSQL(txtSQL, MsgText)

      If mrc.EOF = False Then                                   '若在上机
          MsgBox "该用户已上机", vbOKOnly + vbExclamation, "提示"
          mrc.Close
                                                                   '自动添加第一次上机信息
         txtSQL = "select * from student_info where cardno= '" & Trim(cardno.Text) & "'"
         Set mrc = ExecuteSQL(txtSQL, MsgText)

         studentno.Text = mrc.Fields(1)
         studentname.Text = mrc.Fields(2)
         sex.Text = mrc.Fields(3)
         department.Text = mrc.Fields(4)
         cash.Text = mrc.Fields(7)
         txttype.Text = mrc.Fields(14)
         mrc.Close


                                                                   '上机日期时间显示
         txtSQL = "select * from online_info where cardno= '" & Trim(cardno.Text) & "'"
         Set mrc = ExecuteSQL(txtSQL, MsgText)

         ondate.Text = mrc.Fields(6)
         ontime.Text = mrc.Fields(7)
          Timer1.Enabled = True
      Else
          mrc.Close
                                                                   '判断是否有余额,不足提示余额不足调用充值界面进行充值
                                                                   '查看余额
       txtSQL = "select cash from student_info where cardno= '" & Trim(cardno.Text) & "'"
       Set mrc = ExecuteSQL(txtSQL, MsgText)

        If mrc.Fields(0) <= 0 Then
           MsgBox "余额不足请充值后上机", vbOKOnly + vbExclamation, "警告"
           mrc.Close
           frmRecharge.Show
        Else
         '可以上机,自动添加信息
         txtSQL = "select * from student_info where cardno= '" & Trim(cardno.Text) & "'"
         Set mrc = ExecuteSQL(txtSQL, MsgText)

         studentno.Text = mrc.Fields(1)
         studentname.Text = mrc.Fields(2)
         sex.Text = mrc.Fields(3)
         department.Text = mrc.Fields(4)
         cash.Text = mrc.Fields(7)
         txttype.Text = mrc.Fields(14)
         offdate.Text = ""
         offtime.Text = ""
         consumetime.Text = ""
         consume.Text = ""
         ondate.Text = Date
         ontime.Text = Time
         Timer1.Enabled = True
         MsgBox "上机成功!", vbOKOnly + vbExclamation, "警告"


         '更新数据库online_info里的信息
       txtSQL = "select * from online_info "
       Set mrc = ExecuteSQL(txtSQL, MsgText)

      mrc.AddNew
      mrc.Fields(0) = cardno.Text
      mrc.Fields(1) = txttype.Text
      mrc.Fields(2) = studentno.Text
      mrc.Fields(3) = studentname.Text
      mrc.Fields(4) = department.Text
      mrc.Fields(5) = sex.Text
      mrc.Fields(6) = ondate.Text
      mrc.Fields(7) = ontime.Text
      mrc.Fields(8) = "公子电脑"
      mrc.Update

         lbloncount.Caption = mrc.RecordCount

        End If
     End If
 End If

下机部分也是先判断是否有卡号在上机,如果有就可以进行下机操作,先判断消费时间是否小于最小上机时间和准备时间(不列入计算之中,显示为0),如果大于就可以进行实际计费,重点是时间的计算,可以用公式 DateDiff(“n”,上机时间, 下机时间)进行计算。然后将消金额,所剩余额计算出来显示并更新到数据库就ok了。
下机

                                                             '调用数据
    txtSQL = "select * from student_info where cardno='" & Trim(cardno.Text) & "' and status='使用'"
    Set mrc1 = ExecuteSQL(txtSQL, MsgText)

    txtSQL = "select * from online_info where cardno='" & Trim(cardno.Text) & "'"
    Set mrc2 = ExecuteSQL(txtSQL, MsgText)

    txtSQL = "select * from basicdata_info "
    Set mrc3 = ExecuteSQL(txtSQL, MsgText)

    txtSQL = "select * from line_info "
    Set mrc4 = ExecuteSQL(txtSQL, MsgText)

                '显示正在上机的人数
    If mrc2.EOF Then
        MsgBox "此卡没有上机", vbInformation, "提示"
        lbloncount.Caption = mrc2.RecordCount
    Else

        studentno.Text = mrc2.Fields(2)
        txttype.Text = mrc2.Fields(1)
        studentname.Text = mrc2.Fields(3)
        sex.Text = mrc2.Fields(5)
        department.Text = mrc2.Fields(4)
        ontime.Text = mrc2.Fields(7)
        ondate.Text = mrc2.Fields(6)
        offtime.Text = Time
        offdate.Text = Date
        cash.Text = mrc1.Fields(7)
        abc = DateDiff("n", mrc2.Fields(9), Format(Now(), "yyyy-mm-dd hh:mm:ss"))    '实际消费时间

        If abc > mrc3.Fields(3) And abc Mod 60 = 0 Then
        consumetime.Text = Int(abc / 60)
        Else
        consumetime.Text = (Int(abc / 60) + 1)
        End If

        '判断实际消费时间是否小于准备时间
        If abc < Trim(mrc3.Fields(4)) Then
            consumetime.Text = 0
            consume.Text = 0
            cash.Text = mrc1.Fields(7)
        End If

        '判断实际消费时间是否小于至少上机时间
        If abc < Trim(mrc3.Fields(3)) Then
            consumetime.Text = "0"
            consume.Text = "0"
            cash.Text = Trim(mrc1.Fields(7)) - Trim(consume.Text)
            MsgBox "下机成功", vbOKOnly + vbExclamation, "提示"

        Else
            If Trim(mrc1.Fields(14)) = "临时用户" Then '若为临时用户,消费金额的计算
                consume.Text = (Int(abc / 60) + 1) * (Trim(mrc3.Fields(1)))
                cash.Text = Trim(mrc1.Fields(7)) - Trim(consume.Text)
            Else '若为固定用户,消费金额的计算
                consume.Text = Int((abc / 60) + 1) * (Trim(mrc3.Fields(0)))
                cash.Text = Trim(mrc1.Fields(7)) - Trim(consume.Text)
            End If

            MsgBox "下机成功", vbOKOnly + vbExclamation, "提示"
        End If

        '更新online表
        mrc2.Delete
        mrc2.Update

        '更新line表

         mrc4.Fields(8) = Trim(offdate.Text)
         mrc4.Fields(9) = Trim(offtime.Text)
         mrc4.Fields(10) = Trim(consumetime.Text)
         mrc4.Fields(11) = Trim(consume.Text)
         mrc4.Fields(12) = Trim(cash.Text)
         mrc4.Fields(13) = "正常下机"
         mrc4.Update
         mrc4.Close

        '更新student表
        mrc1.Fields(7) = cash.Text
        mrc1.Update
        mrc1.Close
    End If
        '记录上机人数
    lbloncount.Caption = mrc2.RecordCount

欢迎小伙伴们提出我的错误与不足,我会继续完善的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值