机房收费系统下机之动态显示余额和强制下机(1)

优化
在做下机的时候,要考虑到强制下机的问题,如果我卡里面只有30元,却玩了40元的,那么在下机余额就是负的了,这时候再去充值就不合理了,所以我加了一个动态显示余额和强制下机的功能,我的动态计算是15分钟计算一次的,涉及到小数点,一分钟扣除一次误差可能比较大,所以就以15作为一次扣费单位

思路
动态显示
消费时间,消费金额和余额不断变化
消费时间每一分钟都在变化
消费金额每15分钟扣除一次
余额每15分钟扣除一次
强制下机
当余额低于15分钟的收费金额的时候,提示金额不足,强制下机

小知识点
1.timer事件如何能够用15分钟执行一次操作
VB中Timer的间隔最大为65535ms,不能通过直接设置interval来使他15分钟执行一次计算
需要用到下列代码来实现每隔15分钟timer响应一次:

Private Sub Form_Load()
	Timer1.Interval = 60000     '每分钟触发一次
End Sub
Private Sub Timer2_Timer()
	Static iCount As Integer
	iCount = iCount + 1
	If iCount =15 Then
		iCount = 0      ’重新开始计时
		'每15分钟触发一次的代码
	End If
End Sub

2. 如何每隔15分钟计费一次

	Alltime---总消费分钟数
	Rate---一小时的费用
	Unitmoney---15分钟的费用
	Unitmoney =1/4 * rate
	
	消费分钟数为15的倍数的(可以被整除):
	消费金额=(alltime/15) * unitmoney
	消费分钟数不是15的倍数的:
	消费金额=((fix(alltime/15)+1)) * unitmoney
	
	Fix(x)函数是一个取整函数,就相当于直接去掉x后面的小数点
	例如:
	Fix(5.8)=5
	Fix(0)=0
	Fix(-1.2)=-1

3.余额不足强制下机时调用下机代码,将下机代码进行封装

  If Val(txtbalance.Text) <= unitmoney Then
       MsgBox "卡号:" & username & ",余额不足,即将下机", 0 + 48, "提示"
       '调用下机代码
       Call offline(username)
       Exit Sub
   End If
'判断余额是否低于最低充值要求
 If Val(txtbalance.Text) <= unitmoeny + 1 Then
     MsgBox "卡号:" & username & ",余额不足,请先充值!", 0 + 48, "提示"
 End If

具体的代码请点击下列链接:
机房收费系统下机之动态显示余额和强制下机(2)

发布了45 篇原创文章 · 获赞 10 · 访问量 6193

猜你喜欢

转载自blog.csdn.net/wtt15100/article/details/103165028
今日推荐