机房收费系统之上机扣费

前端之家收集整理的这篇文章主要介绍了机房收费系统之上机扣费前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

学生上机后,都会有一个扣费的过程,之前做这个的时候,想得很简单,就是下机时间减去上机时间,所得时间差就是上机消耗的时间,这里边有个漏洞就是,如果学生更改系统时间,结账后消耗金额就会为负数,总不能倒找钱吧!于是我改进了我的上机扣费程序,添加了一个Timer控件,每隔多少分钟扣费一次,大概的流程是这样的:


代码如下:

  1. <pre name="code" class="html">Private Sub DisTimer_Timer() '设置每分钟执行一次
  2. Dim mrcc As ADODB.Recordset
  3. Dim tsql As String,tMSG As String
  4. '上机表
  5. tsql = "select*from online_info"
  6. Set mrcc = Executesql(tsql,tMSG)
  7. Do While Not mrcc.EOF '对所有学生执行一遍
  8. '基础数据表
  9. txtsql = "select*from basicdata_info"
  10. Set mrc = Executesql(txtsql,MsgText)
  11. '判断有无上机学生
  12. If mrcc.EOF Then
  13. Exit Sub
  14. End If
  15. '消费时间,每分钟加一
  16. DisTime = DisTime + 1
  17. '判断收费类型
  18. 'DisTime<准备时间
  19. If DisTime <= Val(Trim(mrc.Fields(4))) Then
  20. mrcc.Fields(10) = 0
  21. End If
  22. '准备<DisTime<优惠
  23. If Val(Trim(mrc.Fields(4))) < DisTime <= Val(Trim(mrc.Fields(3))) Then
  24. mrcc.Fields(10) = 1 '可改为收取正常收费时的一半
  25. End If
  26. 'DisTime>优惠时间:正常收费
  27. If DisTime > Val(Trim(mrc.Fields(3))) Then
  28. If T = 1 Then 'T用来循环
  29. mrcc.Fields(10) = Val(Trim(mrcc.Fields(10))) + Val(Trim(mrcc.Fields(12)))
  30. Else
  31. If T >= Val(Trim(mrc.Fields(3))) Then
  32. T = 0
  33. End If
  34. T = T + 1
  35. End If
  36.  
  37. '判断余额是否充足
  38. Dim STU As ADODB.Recordset
  39. Dim ssql As String,sText As String
  40. ssql = "select*from student_info where cardno='" & Trim(mrcc.Fields(0)) & "'"
  41. Set STU = Executesql(ssql,sText)
  42. If Val(Trim(STU.Fields(1))) < Val(Trim(mrcc.Fields(10))) Then
  43. txtCardNo.Text = mrcc.Fields(0)
  44. Call cmdDown_Click
  45. Else
  46. mrcc.Update
  47. End If
  48. mrcc.MoveNext
  49. Loop
  50. End Sub

猜你在找的VB相关文章