前言

       机房收费系统最关键的几个部分包括上下机,组合查询,结账。上下机这部分主要还是理逻辑关系,理清各个窗体之间的关系,还有表与表之间的关系。把基本功能实现之后,自己就会发现原来需要注意和完善的地方还有很多,需要我们认真细心去对待。

主要内容

        由于frmMain窗体为MDI窗体,所以不能直接添加控件,需要借助picturebox。

一、上机

       上机涉及到的表有student表(判断该卡是否注册和不使用),basicdata表(卡内余额是否小于最小上机金额),online表(将上机信息更新到online表中)

              上机逻辑图:

机房收费系统上下机_IT


上机代码:

Private Sub cmdonline_Click()

    Dim txtSQL, txtSQL1, txtSQL2, MsgText As String
    Dim mrc As ADODB.Recordset
    Dim mrc1 As ADODB.Recordset
    Dim mrc2 As ADODB.Recordset
        
    '判断是否为空
     If txtcardno.Text = "" Then
        MsgBox "请输入要上机的卡号!", 48, "提示"
        txtcardno.SetFocus
        Exit Sub
     End If
     
    '判断卡号是否注册
    txtSQL = "select * from student_Info where cardno= '" & Trim(txtcardno.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    If mrc.EOF = True Then
       MsgBox "此卡号不存在", vbOKOnly + vbExclamation, "警告"
       txtcardno.Text = ""
       txtcardno.SetFocus
       mrc.Close
       Exit Sub
    End If

    '查BasicData_Info,判断卡内余额是否小于最小金额
     txtSQL2 = "select * from BasicData_Info"
     Set mrc2 = ExecuteSQL(txtSQL2, MsgText)
    'mrc2.MoveFirst
     If Val(mrc.Fields(7)) < Val(mrc2.Fields(5)) Then
         MsgBox "余额不足,请充值后上机", 48, "提示"
         Exit Sub
     End If
      
    '数据集中有记录,但是该卡已经停用
        txtSQL = "select * from student_Info where cardno='" & txtcardno.Text & "'and status='不使用'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
        If mrc.EOF = False Then
            MsgBox "该卡已经注销,请重新输入!", 48, "提示"
            txtcardno.Text = ""
            txtcardno.SetFocus
            Exit Sub
        End If
        
    '查OnLine_Info,看该卡是否在上机
    txtSQL1 = "select * from OnLine_Info where cardno='" & Trim(txtcardno.Text) & "'"
    Set mrc1 = ExecuteSQL(txtSQL, MsgText)
    If mrc1.EOF = False Then
        MsgBox "该卡正在上机!"
       '正常上机,显示卡号信息
        txtSQL = "select * from student_Info where cardno='" & Trim(txtcardno.Text) & "'"
        Set mrc = ExecuteSQL(txtSQL, MsgText)
            txttype.Text = Trim(mrc.Fields(14))
            txtstudentno.Text = Trim(mrc.Fields(1))
            txtstudentname.Text = Trim(mrc.Fields(2))
            txtdepartment.Text = Trim(mrc.Fields(4))
            txtsex.Text = Trim(mrc.Fields(3))
            txtontime.Text = Trim(mrc.Fields(6))
            txtontime1.Text = Trim(mrc.Fields(7))
     Else
            txttype.Text = Trim(mrc.Fields(14))
            txtstudentno.Text = Trim(mrc.Fields(1))
            txtstudentname.Text = Trim(mrc.Fields(2))
            txtdepartment.Text = Trim(mrc.Fields(4))
            txtsex.Text = Trim(mrc.Fields(3))
            txtontime.Text = Trim(mrc.Fields(6))
            txtontime1.Text = Trim(mrc.Fields(7))
            
            mrc.Close
            mrc1.Close
            Exit Sub
    End If
      
    
             
        '更新OnLine_Info数据
        txtSQL1 = "select * from OnLine_Info"        '增加状态为上机的表的数据
        Set mrc1 = ExecuteSQL(txtSQL1, MsgText)
        mrc1.AddNew
        mrc1.Fields(0) = Trim(txtcardno.Text)
        mrc1.Fields(1) = Trim(txttype.Text)
        mrc1.Fields(2) = Trim(txtstudentno.Text)
        mrc1.Fields(3) = Trim(txtstudentname.Text)
        mrc1.Fields(4) = Trim(txtdepartment.Text)
        mrc1.Fields(5) = Trim(txtsex.Text)
        mrc1.Fields(6) = Trim(Date)
        mrc1.Fields(7) = Trim(Time)
        mrc1.Fields(8) = "SOPHIA"     '将计算机名同步到数据库的相应表格中
        mrc1.Fields(9) = Date
        mrc1.Update
        
        '显示当前上机人数
         txtSQL = "select * from OnLine_Info"
         Set mrc1 = ExecuteSQL(txtSQL, MsgText)
         If mrc1.EOF Then
            labcount.Caption = 0
         Else
            labcount.Caption = mrc1.RecordCount
         End If
        
End Sub

1、当前时间显示以秒计算:

        需要用到timer控件,设置timer控件的interval为1000

代码:

Private Sub Timer1_Timer()
labtime.Caption = Time
End Sub
2、label显示设置为不透明:

     只需要更改一下label的属性即可实现,将backstyle设置为0—transparent

 二、下机    

     下机逻辑图:

机房收费系统上下机_IT_02

      下机部分需要考虑的地方比上机多一些,重点是计算消费时间和消费金额,只要按照自己的思路走,不同的计算方法也可以,在这部分我看到了百花齐放。

      下机涉及到的表有:

line表:下机的时候把下机有关的信息更新到line表中。

online表和student表:判断卡号是否存在和上机,显示当前的上机人数,卡号下机之后把online表中的信息需要删除。

basicdata表:消费时间需要和准备时间和最小上机时间做比较,计算消费时间和消费金额用。