机房收费系统——定时检查卡内余额

收费系统中我们凭卡上机,上之前,我们会线检查卡呢余额,如果不足多少元请持卡人充值后在上机.我们需要设置一个金额,假如说五元.但是这样其实是有点不太合理,有些人的卡内余额其实还可以上,但是也必须得充值到最少余额才可以上.这样其实还有一个漏洞:持卡人可以上机两小时,但是他上了三个小时或是更多,这样就会出现负值.所以我们提前设置一个门槛值是有局限的.所以我稍微做了一下改进:定时检查卡内余额.

 

定时检测

在系统中增加一个timer 事件,定时检查各个正在上机的卡的余额,到门槛值时提醒用户,如果余额为0,那么就强制用户被迫下机。

思路如下:

其中判断计算消费时间用到了时间函数:datediff ;和自定义的判断消费金额函数:DynCash。

 

定时长短,可以根据具体情况而定.在timer控件的interval属性设置就好。

代码如下:

 

Private sub timer_click()

StrSqla = "select CID,ontime from Online"

Set objrsa = ExecuteSQL(StrSql, StrMsg)

 

ReDim DynCard(objrsa.RecordCount) As Integer            '定义卡号数组

ReDim DynTime(objrsa.RecordCount) As String       '定义上机时间字符串数组

Dim StaticOver As Integer              '定义消费前余额

Dim DynInterval As Integer         '定义实时时间间隔

Dim Intindex As Integer

Dim DynOver As Integer                      ’定义动态余额

 

'将卡号和余额依次放入到数组中

For Intindex = 0 To objrsa.RecordCount - 1

    objrsa.MoveFirst

    DynCard(Intindex) = objrsa!CID

    DynTime(Intindex) = objrsa!OnTime

'计算余额

    StrSqlb = "select Cash from stuinfo where CID='" & DynCard(Intindex) & "'"

    Set objrsb = ExecuteSQL(StrSqlb, StrMsg)

    StaticOver = objrsb!Cash

'1求时间间隔

    DynInterval = interval(DynTime(Intindex), Time)

'2消费的金额

    DynOver = DynCash(DynInterval)

'3求余额

    StaticOver = StaticOver - DynOver

'对余额进行判断

If StaticOver < 5 Then

    MsgBox "您的余额不足五元,请酌情上机", vbOKOnly, "提示"

End If

If StaticOver = 0 Then

    MsgBox "卡内余额不足", vbOKOnly, "提示"

    cmdOff_Click

    StrSqlb = "select * from consumeinfo where cid='" & DynCard(Intindex) & "'"

    Set objrsb = ExecuteSQL(StrSqlb, StrMsg)

    

    objrsb!Status = "被迫下机"

    MsgBox DynCard(Intindex) & "号卡已经下机!", vbOKOnly, "下机提示"

End If

 

'卡号向后移动

objrsa.MoveNext

Next

End sub

’******************************************************************************

’调用的自定义函数如下:

'        '获取时间间隔

Private Function interval(StrStart As String, StrEnd As String) As Integer

        interval = DateDiff("n", StrStart, StrEnd)

End Function

 

Private Function DynCash(IntConsumeTime As Integer) As Integer

'判断用户类型,收取费用。

        If txtType.Text = "一般用户" Then

            '上机时间少于五分钟,收费为0

            If IntConsumeTime < 5 Then

                DynCash = 0

            Else

                DynCash = (Int(IntConsumeTime / 30) + 1) * 1

            End If

        Else

            '上机时间少于五分钟,收费为0

            If IntConsumeTime < 5 Then

                DynCash = 0

            Else

                DynCash = Int(IntConsumeTime / 30) * 0.5

            End If

        End If

End Function


 

有不足之处请指正。

 

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值