机房管理系统——实时下机

思路

其实实时下机的实现并不是很难,反而很简单,完整的系统应该包括这个功能的。

1.“实时下机”,通过名字我们就能得到一些思路,首先他得先上机对吧。不上机何谈下机。根据这条思路我们去查询online表。

2.其次,下机的时候是得进行计算吧,计算的代码我们在 【上下机】 的部分写过了。进行计算我们需要知道用户的“上机日期时间”、“余额”和“类型”。刚好我们从“”online表“”和“”student表“”分别能得到这些信息。

3.我们需要做什么呢?我们需要在一个“不能关闭”的窗体进行timer1判定。什么窗体符合这个条件呢?当然是主窗体。判定的内容是什么呢?将余额小于0的卡号,进行下机处理(也可以是余额小于准备时间,给与提示,留出一个缓冲的时间。)。

4.下机处理步骤:
①.计算各项金额
②.将计算出来的金额输入到相对应的表,然后更新表
③.将相关数据放到line表
④.将当前记录从online删除

5.其他问题见代码,有疑问回复,有时间就相互交流,我说一下我自己的想法。


代码

Private Sub Timer1_Timer()
Dim mrc As ADODB.Recordset                      '其实吧,好多声明可以合并,当时没养成习惯。
Dim mrcc As ADODB.Recordset
Dim mrcStu As ADODB.Recordset
Dim MsgText As String
Dim txtsqlStu As String
Dim txtsql As String
Dim txtsqlcc As String
Dim Minute As String
Dim Day As String
Dim Hour As Long
Dim readytime As String
Dim Alltime As String
Dim Lmoney As String      '最低消费金额,我没用到这个,我感觉这个是很鸡肋。
Dim Fmoney As String		'固定用户收费标准
Dim Tmoney As String			'临时用户收费标准
Dim Money As String     '计算目前上机总金额
Dim cash As Long
Dim Ncash As Long      '计算目前余额
    
    txtsql = "select * from basicdata_info"      '读取数据设定信息
    Set mrc = ExecuteSQL(txtsql, MsgText)
    readytime = mrc.Fields(4)
    Lmoney = mrc.Fields(5)
    Fmoney = mrc.Fields(0)
    Tmoney = mrc.Fields(1)
    
    txtsql = "select * from online_info"         '连接上机表
    Set mrc = ExecuteSQL(txtsql, MsgText)
    
    If mrc.RecordCount <> 0 Then
        mrc.MoveFirst
    
        Do While Not mrc.EOF
    
        Day = DateDiff("d", mrc.Fields(6), Date)       '计算上机下机的日期差
        Minute = DateDiff("n", mrc.Fields(7), Time)        '计算上机下机的同日时间差
        Alltime = 3600 * Val(Day) + Minute               '计算总时间差,分钟为单位
        If Minute <= readytime Then         '上机时间不超过准备时间,不收钱。
            Hour = 0
        Else
            txtsqlStu = "select * from student_info where cardno='" & Trim(mrc.Fields(0)) & "'"       '连接上机表
            Set mrcStu = ExecuteSQL(txtsqlStu, MsgText)
            cash = mrcStu.Fields(7)      '余额
            
            Hour = Val(Alltime) \ 60
            Hour = Hour + 1
            
            If Trim(mrc.Fields(1)) = "固定用户" Then
                Money = Hour * Fmoney
                Ncash = Val(cash) - Val(Money)
                If Val(Fmoney) >= Ncash Then
                    txtsqlcc = "select * from line_info "
                    Set mrcc = ExecuteSQL(txtsqlcc, MsgText)
                    mrcc.AddNew              '将数据添加到数据库中
                    mrcc.Fields(1) = mrc.Fields(0)
                    mrcc.Fields(2) = mrc.Fields(2)
                    mrcc.Fields(3) = mrc.Fields(3)
                    mrcc.Fields(4) = mrc.Fields(4)
                    mrcc.Fields(5) = mrc.Fields(5)
                    mrcc.Fields(6) = mrc.Fields(6)
                    mrcc.Fields(7) = mrc.Fields(7)
                    mrcc.Fields(8) = Date
                    mrcc.Fields(9) = Time
                    mrcc.Fields(10) = Alltime
                    mrcc.Fields(11) = Val(Money)
                    mrcc.Fields(12) = Ncash
                    mrcc.Fields(13) = "正常下机"
                    mrcc.Fields(14) = VBA.Environ("computername")
                    mrcc.Update
                    
                    mrcStu.Fields(7) = Ncash
                    mrcStu.Update
                    MsgBox "账户:" & mrc.Fields(0) & "余额不足,已下机!", vbOKOnly, "提示"
                    mrc.Delete
                End If
            Else    'r如果是临时用户
                txtsqlStu = "select * from student_info where cardno='" & Trim(mrc.Fields(0)) & "'"       '连接上机表
                Set mrcStu = ExecuteSQL(txtsqlStu, MsgText)
                cash = mrcStu.Fields(7)      '余额
            
                Money = Hour * Tmoney
                Ncash = Val(cash) - Val(Money)
                If Val(Tmoney) >= Val(Ncash) Then
                    txtsqlcc = "select * from line_info "
                    Set mrcc = ExecuteSQL(txtsqlcc, MsgText)
                    mrcc.AddNew              '将数据添加到数据库中
                    mrcc.Fields(1) = mrc.Fields(0)
                    mrcc.Fields(2) = mrc.Fields(2)
                    mrcc.Fields(3) = mrc.Fields(3)
                    mrcc.Fields(4) = mrc.Fields(4)
                    mrcc.Fields(5) = mrc.Fields(5)
                    mrcc.Fields(6) = mrc.Fields(6)
                    mrcc.Fields(7) = mrc.Fields(7)
                    mrcc.Fields(8) = Date
                    mrcc.Fields(9) = Time
                    mrcc.Fields(10) = Alltime
                    mrcc.Fields(11) = Val(Money)
                    mrcc.Fields(12) = Ncash
                    mrcc.Fields(13) = "正常下机"
                    mrcc.Fields(14) = VBA.Environ("computername")
                    mrcc.Update

                    
                    mrcStu.Fields(7) = Ncash
                    mrcStu.Update
                    MsgBox "账户:" & mrc.Fields(0) & "余额不足,已下机!", vbOKOnly, "提示"
                    mrc.Delete
                End If
            End If
        End If
        mrc.MoveNext
        Loop
    End If
    
End Sub

你可能感兴趣的:(VB语言,机房管理系统)