机房收费系统--上机

检查一个卡号能否使用,需要检查以下几点:

机房收费系统--上机_第1张图片

只有这几点同时满足,此卡才能正常上机。

1、当然不用多说,不输入卡号当然不能使用。

2、与要求的最小余额进行比较,小于最小余额则禁止上机使用

3、此卡没用注册,注册表中没有这条记录

4、次卡正在处于上机状态,提示正在上机,一卡禁止重复上机使用

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面的这段代码仅为借鉴使用,由于当初刚做,所以代码不规范。

Private Sub Command1_Click()
   Dim mrc As ADODB.Recordset         ' adodb是动态数据链接对象    Recordset 是adodb的一个子类 (数据集,数据表在内存的映射)
    
    Dim txtsql As String


    Dim msgtext As String    '声明定义


    Dim mrc1 As ADODB.Recordset   '链接数据库
    Dim mrc2 As ADODB.Recordset
    Dim mrc3 As ADODB.Recordset
    Dim mrc4 As ADODB.Recordset






    '判断卡号是否为空
    If Testtxt(cardno.Text) = False Then
       MsgBox "请输入卡号!", vbOKOnly + vbExclamation, "提示"
       cardno.SetFocus
       Exit Sub
    End If
    
    Set mrc1 = New ADODB.Recordset
    txtsql = "select * from student_Info where cardno='" & cardno.Text & "'"
    Set mrc1 = ExecuteSQL(txtsql, msgtext)
    
    '判断该卡是否存在
    If mrc1.EOF And mrc1.Bof Then
       MsgBox "该卡号未注册!", vbOKOnly + vbExclamation, "提示"
       cardno.Text = ""
       cardno.SetFocus
       Exit Sub
    Else
    '判断余额是否充足


         txtsql = "select * from BasicData_info"
         Set mrc2 = ExecuteSQL(txtsql, msgtext)
         
         
        If Trim(mrc1.Fields(14)) = "固定用户" Then
            If mrc1.Fields(7) < mrc2.Fields(5) Then
                MsgBox "余额只有" & mrc1.Fields(7) & "元,余额不足,请充值后再上机!", 0 + 1 + 48, "提示"
                cardno.Text = ""
                Call frmrecharge.Show
                mrc1.Close
                
                Exit Sub
            End If
        Else
            If mrc1.Fields(7) < mrc2.Fields(5) Then
                    MsgBox "您是临时用户,余额为" & mrc1.Fields(7) & "元,余额不足,请充值后再上机", 0 + 48, "提示"
                    cardno.Text = ""
                    mrc1.Close
                    Exit Sub
            End If
    End If
    
''    判断该卡号是否正在上机


           txtsql = "select * from OnLine_Info where cardno='" & cardno.Text & "'"
           Set mrc4 = ExecuteSQL(txtsql, msgtext)
    If mrc4.EOF = False Then
           MsgBox "该卡正在上机!", vbOKOnly + 48, "提示"
           cardno.Text = ""
           cardno.SetFocus
           Exit Sub
    Else
           studentNo.Text = Trim(mrc1.Fields(1))       ' Trim 的作用是返回 Variant (String),其中包含指定字符串的拷贝,没有前导空白 (LTrim)、尾随空白 (RTrim) 或前导和尾随空白 (Trim)。
           studentName.Text = Trim(mrc1.Fields(2))  'LTrim 及 RTrim 函数将某字符串的开头及结尾的空格全部去除。只使用 Trim 函数也可以做到将两头空格全部去除。
           cardtype.Text = Trim(mrc1.Fields(14))
           sex.Text = Trim(mrc1.Fields(3))             '一个数据库中的一个表的第几个字段
           department.Text = Trim(mrc1.Fields(4))       '系别从数据库中的表中的第几个字段 来赋值
           ondate.Text = Date
           ontime.Text = Time
           leastmoney.Text = Trim(mrc1.Fields(7))
           


           '将上机的信息添加到OnLine_Info表中
           Set mrc3 = New ADODB.Recordset
           txtsql = "select * from OnLine_Info "
          
           Set mrc3 = ExecuteSQL(txtsql, msgtext)
           mrc3.AddNew
           mrc3.Fields(0) = Trim(cardno.Text)
           mrc3.Fields(1) = Trim(cardtype.Text)
           mrc3.Fields(2) = Trim(studentNo.Text)
           mrc3.Fields(3) = Trim(studentName.Text)
           mrc3.Fields(4) = Trim(department.Text)
           mrc3.Fields(5) = Trim(sex.Text)
           mrc3.Fields(6) = Trim(ondate.Text)
           mrc3.Fields(7) = Trim(ontime.Text)
           mrc3.Fields(8) = Trim(Winsock1.LocalHostName)
           mrc3.Update
           
         Label16.Caption = mrc3.RecordCount
        mrc3.Update
        mrc3.Close
    End If
  End If
End Sub




上机用了三个表中的内容 分别是student_info 、BasicData_info、 OnLine_Info 。所以做上机的时候一定要先搞清楚数据库中每个之间的联系。

你可能感兴趣的:(机房收费系统--上机)