机房收费——上下机

上下机是机房的最主要的功能,在开始之前要先进行详尽的分析。
 上机:    
1、检查卡号的情况,包括输入是否正确、是否注册、是否正在上机等 
2、查看卡内余额是否还能满足学生上机的要求
3、上机后显示的基本信息和添加数据库中的上机信息
4、更改上机人数
  1. '#################################################################  
  2. '上机,将上机记录写入到上机记录表里  
  3. '#################################################################  
  4. Private Sub cmdOn_Click()  
  5.     Dim strSQL As String, strSQL2 As String, strSQL3 As String  
  6.     Dim strMsgText As String, strMsgText2 As String, strMsgText3 As String  
  7.     Dim objRst As ADODB.Recordset, objRst2 As ADODB.Recordset, objRst3 As ADODB.Recordset  
  8.       
  9.     '让下机日期和时间,消费时间和金额为空  
  10.     txtOutDate.Text = ""  
  11.     txtOutTime.Text = ""  
  12.     txtPayTime.Text = ""  
  13.     txtPayMoney.Text = ""  
  14.       
  15.     If txtCardNo.Text = "" Then  
  16.         '判断卡号是否为空  
  17.         MsgBox "请输入卡号!", vbOKOnly, "警告!"  
  18.         txtCardNo.SetFocus  
  19.         Exit Sub  
  20.     Else  
  21.         If Len(txtCardNo.Text) > 10 Then  
  22.             '判断输入卡号是否超过设定的长度,防止出错  
  23.             MsgBox "卡号过长,请输入长度<10的卡号", vbOKOnly, "警告!"  
  24.             txtCardNo.SetFocus  
  25.             Exit Sub  
  26.         End If  
  27.         '查询数据库里学生基本信息表  
  28.         Set objRst = New ADODB.Recordset  
  29.         strSQL = "select * from student_Info where cardNo='" & Trim(txtCardNo.Text) & "'"  
  30.         Set objRst = ExecuteSQL(strSQL, strMsgText)  
  31.         If objRst.BOF And objRst.EOF Then  
  32.             '判读该卡号是否存在  
  33.             MsgBox "该卡号未注册!", vbOKOnly, "警告!"  
  34.             txtCardNo.Text = ""  
  35.             txtCardNo.SetFocus  
  36.             Exit Sub  
  37.         Else  
  38.             '判断余额是否充足  
  39.             If objRst.Fields(3) < GetLeastMoney() Then  
  40.                 MsgBox "余额只有" & objRst.Fields(3) & ",少于最少金额,请先充值!", vbOKOnly, "警告!"  
  41.                 Exit Sub  
  42.             Else  
  43.               
  44.                 '判断该卡号是否正在上机  
  45.                 Set objRst3 = New ADODB.Recordset  
  46.                 strSQL3 = "select * from online_Info where cardNo='" & Trim(txtCardNo.Text) & "' and outDate is null"  
  47.                 Set objRst3 = ExecuteSQL(strSQL3, strMsgText3)  
  48.                 If Not (objRst3.BOF And objRst3.EOF) Then  
  49.                     Label1.Caption = "该卡正在上机!"  
  50.                     txtCardNo.SetFocus  
  51.                     Exit Sub  
  52.                 Else  
  53.                   
  54.                     '显示该卡号的一些基本信息  
  55.                     txtStudentNo.Text = checkField(objRst.Fields(0))  
  56.                     txtDepartment.Text = checkField(objRst.Fields(4))  
  57.                     txtType.Text = checkField(objRst.Fields(14))  
  58.                     txtStudentName.Text = checkField(objRst.Fields(1))  
  59.                     txtSex.Text = checkField(objRst.Fields(7))  
  60.                     txtOnDate.Text = Date  
  61.                     'onTime = Time  
  62.                     txtOnTime.Text = Time  
  63.                     txtAllCash.Text = checkField(objRst.Fields(3))  
  64.               
  65.                     '将上机前的余额提出来,用于下机时计算余额  
  66.                     'curAllCash = checkField(objRst.Fields(3))  
  67.                     Label1.Caption = "欢迎光临!"  
  68.               
  69.                     '将该卡上机的信息填入到online_Info表里  
  70.                     Set objRst2 = New ADODB.Recordset  
  71.                     strSQL2 = "select * from online_Info "  
  72.                     Set objRst2 = ExecuteSQL(strSQL2, strMsgText2)  
  73.                     'objRst2.MoveLast  
  74.                     objRst2.AddNew  
  75.                     objRst2.Fields(0) = txtCardNo.Text  
  76.                     objRst2.Fields(1) = txtStudentName.Text  
  77.                     objRst2.Fields(2) = Date  
  78.                     objRst2.Fields(3) = Time  
  79.                     objRst2.Fields(4) = Null  
  80.                     objRst2.Fields(5) = Null  
  81.                     objRst2.Update  
  82.                     '查询此时正在上机的人数。(可以直接加1)  
  83.                     lblPeopleCount.Caption = GetPeopleCount()  
  84.                     PeopleCount = GetPeopleCount()   '保存正在上机的人数  
  85.                     objRst2.Close  
  86.               
  87.                     objRst.Close  
  88.                 End If  
  89.             End If  
  90.         End If  
  91.     End If  
  92.       
  93.               
  94.           
  95. End Sub  

下机:
1、检查输入卡号的情况(输入是否正确、是否注册、是否正在上机)
2、显示下机信息,将下机信息添加到数据库中
3、计算下机时间、下机消耗的金额
4、更新数据库中的相关信息
  1. 下机,计算余额,将余额写入学生信息表里,和上机信息表里  
  2. '#####################################################################  
  3. Private Sub cmdOff_Click()  
  4.   
  5.     Dim strSQL As String, strSQL2 As String, strSQL3 As String  
  6.     Dim strMsgText As String, strMsgText2 As String, strMsgText3 As String  
  7.     Dim objRst As ADODB.Recordset, objRst2 As ADODB.Recordset, objRst3 As ADODB.Recordset  
  8.     Dim intTime As Single  
  9.     Dim fixedRate As Single  
  10.     Dim AllMoney As Currency  
  11.     Dim pay As Currency  
  12.   
  13.   
  14.     If txtCardNo.Text = "" Then  
  15.         '判断卡号是否为空  
  16.         MsgBox "请输入卡号!", vbOKOnly, "警告!"  
  17.         txtCardNo.SetFocus  
  18.         Exit Sub  
  19.     Else  
  20.         If Len(txtCardNo.Text) > 10 Then  
  21.             '判断输入卡号是否超过设定的长度,防止出错  
  22.             MsgBox "卡号过长,请输入长度<10的卡号", vbOKOnly, "警告!"  
  23.             txtCardNo.SetFocus  
  24.             Exit Sub  
  25.         End If  
  26.     End If  
  27.     Set objRst = New ADODB.Recordset  
  28.     strSQL = "select * from student_Info where cardNo='" & Trim(txtCardNo.Text) & "'"  
  29.     Set objRst = ExecuteSQL(strSQL, strMsgText)  
  30.     If objRst.BOF And objRst.EOF Then  
  31.         '判读该卡号是否存在  
  32.         MsgBox "该卡号未注册!", vbOKOnly, "警告!"  
  33.         txtCardNo.Text = ""  
  34.         txtCardNo.SetFocus  
  35.         Exit Sub  
  36.           
  37.     End If  
  38.     objRst.Close  
  39.     strSQL = ""  
  40.     strMsgText = ""  
  41.       
  42.       
  43.       
  44.     Set objRst = New ADODB.Recordset  
  45.     strSQL = "select * from online_Info where cardno='" & Trim(txtCardNo.Text) & "' and outDate is null "  
  46.     Set objRst = ExecuteSQL(strSQL, strMsgText)  
  47.     If objRst.BOF And objRst.EOF Then  
  48.         '判断该卡是否正在上机  
  49.         Label1.Caption = "该卡没有上机!"  
  50.         txtCardNo.SetFocus  
  51.         Exit Sub  
  52.     Else  
  53.         '显示下机的一些信息  
  54.         txtOutDate.Text = Date  
  55.         outTime = Time  
  56.         txtOutTime.Text = outTime  
  57.           
  58.         onTime = CDate(Format(objRst.Fields("onTime"), "hh:mm:ss"))  
  59.       
  60.         txtCardNo.Text = checkField(objRst.Fields("cardNo"))  
  61.         txtStudentName.Text = checkField(objRst.Fields("studentName"))  
  62.         txtOnDate.Text = checkField(objRst.Fields("onDate"))  
  63.         txtOnTime.Text = checkField(objRst.Fields("onTime"))  
  64.           
  65.         Set objRst3 = New ADODB.Recordset  
  66.         strSQL3 = "select * from student_Info where cardNo='" & txtCardNo.Text & "'"  
  67.         Set objRst3 = ExecuteSQL(strSQL3, strMsgText3)  
  68.         txtStudentNo.Text = objRst3.Fields("studentNo")  
  69.         txtDepartment.Text = objRst3.Fields("department")  
  70.         txtSex.Text = objRst3.Fields("sex")  
  71.         txtType.Text = "固定用户"  
  72.           
  73.         '删除该记录,将此时信息填入online_Info表里  
  74.         objRst.Delete  
  75.         objRst.AddNew  
  76.         objRst.Fields(0) = txtCardNo.Text  
  77.         objRst.Fields(1) = txtStudentName.Text  
  78.         objRst.Fields(2) = txtOnDate.Text  
  79.         objRst.Fields("onTime") = txtOnTime.Text  
  80.         objRst.Fields(4) = txtOutDate.Text  
  81.         objRst.Fields("outTime") = txtOutTime.Text  
  82.         objRst.Fields(9) = "正常下机"  
  83.         'intTime = Val(txtOutTime.Text - txtOnTime.Text)  
  84.           
  85.         '计算上机的时间  
  86.         intTime = (outTime - onTime) * 24 * 2  
  87.                   
  88.          Set objRst2 = New ADODB.Recordset  
  89.          strSQL2 = "select * from basicDate_Info "  
  90.          Set objRst2 = ExecuteSQL(strSQL2, strMsgText2)  
  91.          '查询固定用户30分钟的费用  
  92.          fixedRate = Val(objRst2.Fields(0))  
  93.          If intTime < (GetPreparTime() / 30) Then  
  94.              '判断上机时间是否超过了准备时间,没超过则花费为0  
  95.              objRst.Fields("pay") = 0  
  96.              objRst.Fields("allCash") = GetAllMoney(txtCardNo.Text)  
  97.          Else  
  98.              If intTime <= (GetLeastTime() / 30) Then  
  99.                  '判断上机时间是否超过半个小时,没则当成已经上了30分钟  
  100.                  objRst.Fields("pay") = fixedRate  
  101.                  AllMoney = GetAllMoney(txtCardNo.Text) - fixedRate  
  102.                  objRst.Fields("allCash") = AllMoney     '将余额写入上机记录表里  
  103.                  WriteAllMoney txtCardNo.Text, AllMoney  '将余额写入学生基本信息表里  
  104.              Else  
  105.                  If intTime > Int(intTime) Then  
  106.                      intTime = Int(intTime) + 1  
  107.                  Else  
  108.                      intTime = Int(intTime)  
  109.                  End If  
  110.                  pay = fixedRate * intTime  
  111.                  objRst.Fields("pay") = pay  
  112.                  AllMoney = GetAllMoney(txtCardNo.Text) - pay  
  113.                  objRst.Fields("allCash") = AllMoney    '将余额写入上机记录表里  
  114.                  WriteAllMoney txtCardNo.Text, AllMoney  '将余额写入学生基本信息表里  
  115.              End If  
  116.          End If  
  117.            
  118.          '显示消费的时间金额,和余额  
  119.          txtPayTime.Text = Format(outTime - onTime, "hh-mm-ss")  
  120.          txtPayMoney.Text = objRst.Fields(6)  
  121.          txtAllCash.Text = GetAllMoney(txtCardNo.Text)     '- objRst.Fields(6)  
  122.          Label1.Caption = "欢迎下次再来!"  
  123.            
  124.          objRst.Fields(7) = txtAllCash.Text    '将余额写到online_Info表里  
  125.            
  126.          lblPeopleCount.Caption = GetPeopleCount()  '显示正在上机人数  
  127.          PeopleCount = GetPeopleCount()  
  128.          objRst.Update  
  129.           
  130.          objRst.Close  
  131.          objRst2.Close  
  132.          objRst3.Close  
  133.            
  134.     End If  
  135.       
  136.           
  137. End Sub  
以上就是我对机房上下机的理解,望大神指教哦!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值