您的位置:首页 > 其它

机房收费——上下机

2015-11-18 21:17 162 查看
上下机是机房的最主要的功能,在开始之前要先进行详尽的分析。

 上机:    

1、检查卡号的情况,包括输入是否正确、是否注册、是否正在上机等 

2、查看卡内余额是否还能满足学生上机的要求

3、上机后显示的基本信息和添加数据库中的上机信息
4、更改上机人数

'#################################################################  

'上机,将上机记录写入到上机记录表里  

'#################################################################  

Private Sub cmdOn_Click()  

    Dim strSQL As String, strSQL2 As String, strSQL3 As String  

    Dim strMsgText As String, strMsgText2 As String, strMsgText3 As String  

    Dim objRst As ADODB.Recordset, objRst2 As ADODB.Recordset, objRst3 As ADODB.Recordset  

      

    '让下机日期和时间,消费时间和金额为空  

    txtOutDate.Text = ""  

    txtOutTime.Text = ""  

    txtPayTime.Text = ""  

    txtPayMoney.Text = ""  

      

    If txtCardNo.Text = "" Then  

        '判断卡号是否为空  

        MsgBox "请输入卡号!", vbOKOnly, "警告!"  

        txtCardNo.SetFocus  

        Exit Sub  

    Else  

        If Len(txtCardNo.Text) > 10 Then  

            '判断输入卡号是否超过设定的长度,防止出错  

            MsgBox "卡号过长,请输入长度<10的卡号", vbOKOnly, "警告!"  

            txtCardNo.SetFocus  

            Exit Sub  

        End If  

        '查询数据库里学生基本信息表  

        Set objRst = New ADODB.Recordset  

        strSQL = "select * from student_Info where cardNo='" & Trim(txtCardNo.Text) & "'"  

        Set objRst = ExecuteSQL(strSQL, strMsgText)  

        If objRst.BOF And objRst.EOF Then  

            '判读该卡号是否存在  

            MsgBox "该卡号未注册!", vbOKOnly, "警告!"  

            txtCardNo.Text = ""  

            txtCardNo.SetFocus  

            Exit Sub  

        Else  

            '判断余额是否充足  

            If objRst.Fields(3) < GetLeastMoney() Then  

                MsgBox "余额只有" & objRst.Fields(3) & ",少于最少金额,请先充值!", vbOKOnly, "警告!"  

                Exit Sub  

            Else  

              

                '判断该卡号是否正在上机  

                Set objRst3 = New ADODB.Recordset  

                strSQL3 = "select * from online_Info where cardNo='" & Trim(txtCardNo.Text) & "' and outDate is null"  

                Set objRst3 = ExecuteSQL(strSQL3, strMsgText3)  

                If Not (objRst3.BOF And objRst3.EOF) Then  

                    Label1.Caption = "该卡正在上机!"  

                    txtCardNo.SetFocus  

                    Exit Sub  

                Else  

                  

                    '显示该卡号的一些基本信息  

                    txtStudentNo.Text = checkField(objRst.Fields(0))  

                    txtDepartment.Text = checkField(objRst.Fields(4))  

                    txtType.Text = checkField(objRst.Fields(14))  

                    txtStudentName.Text = checkField(objRst.Fields(1))  

                    txtSex.Text = checkField(objRst.Fields(7))  

                    txtOnDate.Text = Date  

                    'onTime = Time  

                    txtOnTime.Text = Time  

                    txtAllCash.Text = checkField(objRst.Fields(3))  

              

                    '将上机前的余额提出来,用于下机时计算余额  

                    'curAllCash = checkField(objRst.Fields(3))  

                    Label1.Caption = "欢迎光临!"  

              

                    '将该卡上机的信息填入到online_Info表里  

                    Set objRst2 = New ADODB.Recordset  

                    strSQL2 = "select * from online_Info "  

                    Set objRst2 = ExecuteSQL(strSQL2, strMsgText2)  

                    'objRst2.MoveLast  

                    objRst2.AddNew  

                    objRst2.Fields(0) = txtCardNo.Text  

                    objRst2.Fields(1) = txtStudentName.Text  

                    objRst2.Fields(2) = Date  

                    objRst2.Fields(3) = Time  

                    objRst2.Fields(4) = Null  

                    objRst2.Fields(5) = Null  

                    objRst2.Update  

                    '查询此时正在上机的人数。(可以直接加1)  

                    lblPeopleCount.Caption = GetPeopleCount()  

                    PeopleCount = GetPeopleCount()   '保存正在上机的人数  

                    objRst2.Close  

              

                    objRst.Close  

                End If  

            End If  

        End If  

    End If  

      

              

          

End Sub  

下机:

1、检查输入卡号的情况(输入是否正确、是否注册、是否正在上机)

2、显示下机信息,将下机信息添加到数据库中

3、计算下机时间、下机消耗的金额

4、更新数据库中的相关信息

下机,计算余额,将余额写入学生信息表里,和上机信息表里  

'#####################################################################  

Private Sub cmdOff_Click()  

  

    Dim strSQL As String, strSQL2 As String, strSQL3 As String  

    Dim strMsgText As String, strMsgText2 As String, strMsgText3 As String  

    Dim objRst As ADODB.Recordset, objRst2 As ADODB.Recordset, objRst3 As ADODB.Recordset  

    Dim intTime As Single  

    Dim fixedRate As Single  

    Dim AllMoney As Currency  

    Dim pay As Currency  

  

  

    If txtCardNo.Text = "" Then  

        '判断卡号是否为空  

        MsgBox "请输入卡号!", vbOKOnly, "警告!"  

        txtCardNo.SetFocus  

        Exit Sub  

    Else  

        If Len(txtCardNo.Text) > 10 Then  

            '判断输入卡号是否超过设定的长度,防止出错  

            MsgBox "卡号过长,请输入长度<10的卡号", vbOKOnly, "警告!"  

            txtCardNo.SetFocus  

            Exit Sub  

        End If  

    End If  

    Set objRst = New ADODB.Recordset  

    strSQL = "select * from student_Info where cardNo='" & Trim(txtCardNo.Text) & "'"  

    Set objRst = ExecuteSQL(strSQL, strMsgText)  

    If objRst.BOF And objRst.EOF Then  

        '判读该卡号是否存在  

        MsgBox "该卡号未注册!", vbOKOnly, "警告!"  

        txtCardNo.Text = ""  

        txtCardNo.SetFocus  

        Exit Sub  

          

    End If  

    objRst.Close  

    strSQL = ""  

    strMsgText = ""  

      

      

      

    Set objRst = New ADODB.Recordset  

    strSQL = "select * from online_Info where cardno='" & Trim(txtCardNo.Text) & "' and outDate is null "  

    Set objRst = ExecuteSQL(strSQL, strMsgText)  

    If objRst.BOF And objRst.EOF Then  

        '判断该卡是否正在上机  

        Label1.Caption = "该卡没有上机!"  

        txtCardNo.SetFocus  

        Exit Sub  

    Else  

        '显示下机的一些信息  

        txtOutDate.Text = Date  

        outTime = Time  

        txtOutTime.Text = outTime  

          

        onTime = CDate(Format(objRst.Fields("onTime"), "hh:mm:ss"))  

      

        txtCardNo.Text = checkField(objRst.Fields("cardNo"))  

        txtStudentName.Text = checkField(objRst.Fields("studentName"))  

        txtOnDate.Text = checkField(objRst.Fields("onDate"))  

        txtOnTime.Text = checkField(objRst.Fields("onTime"))  

          

        Set objRst3 = New ADODB.Recordset  

        strSQL3 = "select * from student_Info where cardNo='" & txtCardNo.Text & "'"  

        Set objRst3 = ExecuteSQL(strSQL3, strMsgText3)  

        txtStudentNo.Text = objRst3.Fields("studentNo")  

        txtDepartment.Text = objRst3.Fields("department")  

        txtSex.Text = objRst3.Fields("sex")  

        txtType.Text = "固定用户"  

          

        '删除该记录,将此时信息填入online_Info表里  

        objRst.Delete  

        objRst.AddNew  

        objRst.Fields(0) = txtCardNo.Text  

        objRst.Fields(1) = txtStudentName.Text  

        objRst.Fields(2) = txtOnDate.Text  

        objRst.Fields("onTime") = txtOnTime.Text  

        objRst.Fields(4) = txtOutDate.Text  

        objRst.Fields("outTime") = txtOutTime.Text  

        objRst.Fields(9) = "正常下机"  

        'intTime = Val(txtOutTime.Text - txtOnTime.Text)  

          

        '计算上机的时间  

        intTime = (outTime - onTime) * 24 * 2  

                  

         Set objRst2 = New ADODB.Recordset  

         strSQL2 = "select * from basicDate_Info "  

         Set objRst2 = ExecuteSQL(strSQL2, strMsgText2)  

         '查询固定用户30分钟的费用  

         fixedRate = Val(objRst2.Fields(0))  

         If intTime < (GetPreparTime() / 30) Then  

             '判断上机时间是否超过了准备时间,没超过则花费为0  

             objRst.Fields("pay") = 0  

             objRst.Fields("allCash") = GetAllMoney(txtCardNo.Text)  

         Else  

             If intTime <= (GetLeastTime() / 30) Then  

                 '判断上机时间是否超过半个小时,没则当成已经上了30分钟  

                 objRst.Fields("pay") = fixedRate  

                 AllMoney = GetAllMoney(txtCardNo.Text) - fixedRate  

                 objRst.Fields("allCash") = AllMoney     '将余额写入上机记录表里  

                 WriteAllMoney txtCardNo.Text, AllMoney  '将余额写入学生基本信息表里  

             Else  

                 If intTime > Int(intTime) Then  

                     intTime = Int(intTime) + 1  

                 Else  

                     intTime = Int(intTime)  

                 End If  

                 pay = fixedRate * intTime  

                 objRst.Fields("pay") = pay  

                 AllMoney = GetAllMoney(txtCardNo.Text) - pay  

                 objRst.Fields("allCash") = AllMoney    '将余额写入上机记录表里  

                 WriteAllMoney txtCardNo.Text, AllMoney  '将余额写入学生基本信息表里  

             End If  

         End If  

           

         '显示消费的时间金额,和余额  

         txtPayTime.Text = Format(outTime - onTime, "hh-mm-ss")  

         txtPayMoney.Text = objRst.Fields(6)  

         txtAllCash.Text = GetAllMoney(txtCardNo.Text)     '- objRst.Fields(6)  

         Label1.Caption = "欢迎下次再来!"  

           

         objRst.Fields(7) = txtAllCash.Text    '将余额写到online_Info表里  

           

         lblPeopleCount.Caption = GetPeopleCount()  '显示正在上机人数  

         PeopleCount = GetPeopleCount()  

         objRst.Update  

          

         objRst.Close  

         objRst2.Close  

         objRst3.Close  

           

    End If  

      

          

End Sub  

以上就是我对机房上下机的理解,望大神指教哦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机房收费