机房收费系统之上下机

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

一、前言

完成了机房收费系统后,觉得之前的逻辑图只有大构架,一些细节还是不够清晰,于是回过头来,重新整理了一下上下机逻辑图,顺便晒下代码

二、内容

1、上机逻辑图

2、上机代码

  1. Private Sub cmdUp_Click()
  2. txtDate.Text = ""
  3. txtTime.Text = ""
  4. txtDistime.Text = ""
  5. txtDiscash.Text = ""
  6.  
  7. '是否为空
  8. If Not TxTe(txtCardNo.Text) Then
  9. MsgBox "请您输入上机卡号!",vbOKOnly + 48,"提示"
  10. txtCardNo.SetFocus
  11. txtCardNo.Text = ""
  12. Exit Sub
  13. End If
  14. '是否在线
  15. txtsql = "select*from online_info where cardno='" & txtCardNo.Text & "'"
  16. Set mrc = Executesql(txtsql,MsgText)
  17. If mrc.EOF = False Then
  18. MsgBox "该卡已经上机!","提示"
  19. txtCardNo.SetFocus
  20. txtCardNo.Text = ""
  21. Exit Sub
  22. mrc.Close
  23. End If
  24. '判断有无该卡号
  25. txtsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
  26. Set mrc = Executesql(txtsql,MsgText)
  27. If mrc.EOF Then
  28. MsgBox "无该卡号,请重新输入!","提示"
  29. txtCardNo.SetFocus
  30. txtCardNo.Text = ""
  31. Exit Sub
  32. End If
  33. '是否使用状态
  34. If mrc.Fields(8) = "未使用" Then
  35. If MsgBox("该卡未激活!是否修改学生信息?",vbOKCancel,"提示") = vbOK Then
  36. frmInformation.Show,Me
  37. End If
  38. Exit Sub
  39. End If
  40. '是否有余额
  41. If mrc.Fields(1) <= 0 Then
  42. If MsgBox("该卡号余额不足,是否前往充值?","提示") = vbOK Then
  43. frmRecharge.Show,Me
  44. End If
  45. Exit Sub
  46. End If
  47. mrc.Close
  48. '是否设定基础数据
  49. txtsql = "select*from basicdata_info"
  50. Set mrc = Executesql(txtsql,MsgText)
  51. If mrc.EOF Then
  52. If MsgBox("未设定基础数据,无法登陆,是否前往设定?","提示") = vbOK Then
  53. frmSetting.Show,Me
  54. End If
  55. Exit Sub
  56. End If
  57. mrc.Close
  58. '更新上机界面信息
  59. '提取学生表
  60. txtsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
  61. Set mrc = Executesql(txtsql,MsgText)
  62. txtStudentNo.Text = Trim(mrc.Fields(4))
  63. txtType.Text = Trim(mrc.Fields(9))
  64. txtCash.Text = Trim(mrc.Fields(1))
  65. txtStudentName.Text = Trim(mrc.Fields(2))
  66. txtDepartment.Text = Trim(mrc.Fields(5))
  67. txtSex.Text = Trim(mrc.Fields(3))
  68. txtOnDate.Text = Trim(Date)
  69. txtOnTime.Text = Trim(Time)
  70. '更新上机表信息
  71. Dim bas As ADODB.Recordset
  72. Dim bsql As String,bMsg As String
  73. '提取上机表和基础数据表
  74. txtsql = "select*from online_info"
  75. Set mrc = Executesql(txtsql,MsgText)
  76. bsql = "select*from basicdata_info"
  77. Set bas = Executesql(bsql,bMsg)
  78.  
  79. mrc.AddNew
  80. mrc.Fields(0) = Trim(txtCardNo.Text)
  81. mrc.Fields(1) = Trim(txtType.Text)
  82. mrc.Fields(2) = Trim(txtStudentNo.Text)
  83. mrc.Fields(3) = Trim(txtStudentName.Text)
  84. mrc.Fields(4) = Trim(txtSex.Text)
  85. mrc.Fields(5) = Trim(txtDepartment.Text)
  86. mrc.Fields(6) = Trim(txtOnDate.Text)
  87. mrc.Fields(7) = Trim(txtOnTime.Text)
  88. mrc.Fields(8) = Trim(PCName)
  89. mrc.Fields(9) = Now
  90.  
  91. mrc.Fields(10) = Trim(txtCash.Text)
  92. mrc.Fields(11) = 1
  93. '用户消费方式
  94. If txtType.Text = "固定会员" Then
  95. mrc.Fields(12) = Val(Trim(bas.Fields(0)))
  96. Else
  97. If txtType.Text = "临时用户" Then
  98. mrc.Fields(12) = Val(Trim(bas.Fields(1)))
  99. Else
  100. MsgBox "该卡号未设定用户类型,登陆失败!",vbOKOnly,"提示"
  101. Exit Sub
  102. End If
  103. End If
  104. mrc.Update
  105. txtCardNo.SetFocus
  106. txtCardNo.Text = ""
  107.  
  108. '更新上机人数
  109. txtsql = "select*from online_info"
  110. Set mrc = Executesql(txtsql,MsgText)
  111. LoginNumber.Caption = "当前上机人数为:" & mrc.RecordCount
  112. mrc.Close
  113. End Sub

3、扣费

有关扣费请观阅: 机房收费系统之上机扣费

4、下机逻辑图

5、下机代码

  1. Private Sub cmdDown_Click()
  2. '是否为空
  3. If Not TxTe(txtCardNo.Text) Then
  4. MsgBox "请您输入下机卡号!",MsgText)
  5. If mrc.EOF Then
  6. MsgBox "用户未上机。","提示"
  7. txtCardNo.SetFocus
  8. txtCardNo.Text = ""
  9. Exit Sub
  10. End If
  11. '更新界面信息
  12. txtStudentNo.Text = Trim(mrc.Fields(2))
  13. txtType.Text = Trim(mrc.Fields(1))
  14. txtStudentName.Text = Trim(mrc.Fields(3))
  15. txtDepartment.Text = Trim(mrc.Fields(5))
  16. txtSex.Text = Trim(mrc.Fields(4))
  17. txtOnDate.Text = Trim(mrc.Fields(6))
  18. txtOnTime.Text = Trim(mrc.Fields(7))
  19. txtcash.Text = Trim(mrc.Fields(10))
  20. txtDistime.Text = Trim(mrc.Fields(11))
  21. txtDate.Text = Date
  22. txtTime.Text = Time
  23. '更新Online表数据
  24. mrc.Delete
  25. mrc.Close
  26. '计算消费金额
  27. txtsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
  28. Set mrc = Executesql(txtsql,MsgText)
  29. txtDiscash.Text = Val(Trim(mrc.Fields(1))) - Val(Trim(txtcash.Text))
  30. mrc.Close
  31. '更新下机信息
  32. Dim STD As ADODB.Recordset
  33. Dim tsql As String,mText As String
  34. '提取学生表和下线表
  35. tsql = "select*from student_info where cardno='" & txtCardNo.Text & "'"
  36. Set STD = Executesql(tsql,mText)
  37. txtsql = "select*from line_info order by serial desc"
  38. Set mrc = Executesql(txtsql,MsgText)
  39. '写入数据
  40. mrc.AddNew
  41. mrc.Fields(1) = Trim(txtCardNo.Text)
  42. mrc.Fields(2) = Trim(txtStudentNo.Text)
  43. mrc.Fields(3) = Trim(txtStudentName.Text)
  44. mrc.Fields(4) = Trim(txtDepartment.Text)
  45. mrc.Fields(5) = Trim(txtSex.Text)
  46. mrc.Fields(6) = Trim(txtOnDate.Text)
  47. mrc.Fields(7) = Trim(txtOnTime.Text)
  48. mrc.Fields(8) = Trim(txtDate.Text)
  49. mrc.Fields(9) = Trim(txtTime.Text)
  50. mrc.Fields(10) = Trim(txtDistime.Text)
  51. mrc.Fields(11) = Trim(txtDiscash.Text)
  52. mrc.Fields(12) = Trim(txtcash.Text)
  53. mrc.Fields(14) = Trim(PCName)
  54. STD.Fields(1) = Trim(txtcash.Text)
  55. '学生卡状态
  56. If Trim(STD.Fields(8)) = "使用" Then
  57. mrc.Fields(13) = Trim("使用")
  58. Else
  59. mrc.Fields(13) = Trim("未使用")
  60. End If
  61. mrc.Update
  62. STD.Update
  63. STD.Close
  64. mrc.Close
  65. '更新上机人数
  66. txtsql = "select*from online_info"
  67. Set mrc = Executesql(txtsql,MsgText)
  68. LoginNumber.Caption = "当前上机人数为:" & mrc.RecordCount
  69. mrc.Close
  70. End Sub


三、总结

做项目前,做好产品逻辑构造,可以起到事半功倍的作用,大构架掌控的是方向,而模块逻辑把控的是产品质量,每一次锻炼,都让我在待人待物上得到很大的提升。

猜你在找的VB相关文章