本篇博客适合已经做完上下机的同学、本篇主要讲下机时、上机费用的计算
——————本文若有错误请及时指出——————
(一)流程图如下——简单
左图为计算 上机费用的流程图 我把他成了一个过程 在下机中调用 左图是简版的 数据流程图 |
(二)输入输出数据
输入
上机时间到下机时间:
上机日期时间是2013年11月12日19:03:54
下机日期时间是2013年11月12日20:03:54
那上机时间到下机时间就是
1小时或者60分钟
基本信息
基本信息我们运算只用到一部分、如图
输出
时间:
这个输出的时间的单位是小时、格式按照半小时为单位算
例:0.5 1 1.5 2 2.5
上机费用:
这个输出单位是元、格式按照1元为单位
(三)计算
我尽可能的详细写了计算的流程、方便大家理解、我画了详细的流程图、如图
time1是输入的时间
time2是输出的时间
money是输出的钱
|
(四)代码
看了流程图之后相信大家已经对计算流程有了认识、下面是整个过程的代码、有详细的备注、每个阶段都详细的划分了、相信大家很容易理解。
'计算下机收费的过程
Private Sub ConsumeMoney()
'为连接数据库定义的
Dim txtsql As String '放select语句的字符串函数
Dim mrc As ADODB.Recordset '定义mrc为记录集'注释:——记录集——就是记录的集合、是查询出来的数据生成一个临时的虚拟表
Dim msgtext As String '运行查询报错的文字容器
'用于记录基本信息中的记录
Dim Note0 As Long '固定用户半小时的费用
Dim Note2 As Long '递增单位时间
Dim Note3 As Long '至少上机时间
Dim Note4 As Long '准备时间
Dim Note5 As Long '上机最少金额
'定义时间
Dim Time1 As Currency
Dim Time2 As Currency
'记录金钱
Dim Money As Currency
'————————————————————
'计算上机开始到结束的时间(开始的日期时间到结束的日期时间算出相差分钟数)
'txtOnDate.Text = 开始日期
'txtOnTime.Text = 开始时间
'txtUnderDate.Text = 结束日期
'txtUnderTime.Text = 结束时间
Time1 = DateDiff("m", txtOnDate.Text & " " & txtOnTime.Text, txtUnderDate.Text & " " & txtUnderTime.Text)
'————————————————
'读取基本信息的内容
txtsql = "select * from DataSetting_Info"
Set mrc = executeSQL(txtsql, msgtext)
If mrc.RecordCount <> 0 Then
Note0 = Val(mrc.Fields(0))
Note2 = Val(mrc.Fields(2))
Note3 = Val(mrc.Fields(3))
Note4 = Val(mrc.Fields(4))
Note5 = Val(mrc.Fields(5))
Else
MsgBox "下机错误、因为基本数据为空", , "下机错误"
End If
'——————————————————————
'判断时间是否小于准备时间、如果小于、直接输出
If Val(Time1) < Note4 Then
txtUse.Text = 0.5
txtMoney.Text = Note5
Exit Sub
End If
'计算减去准本时间的上机时间
Time1 = Val(Time1) - Note4
'——————————————————————
'按照递增时间算出应收费的消费时间
Time2 = (Fix(Val(Time1) / Note2)) * Note2
'判断time2是否小于最小上机时间
If Val(Time2) < Note3 Then
Time2 = Note3
End If
'——————————————————
Time2 = Val(Time2) / 30 '有几个半小时
If Val(Time2) > 1 Then '如果时间大于半小时则
If Fix(Time2) <> Val(Time2) Then '判断是不是整数/如果不是整数则加1
Time2 = Fix(Time2) + 1
End If
Else '小于半小时按照30分钟算
Time2 = 1
End If
'————————————————————————
Money = Fix(Val(Time2)) * Note0 '算出上机消费金额
'判断金额是否小于最小金额
If Val(Money) < Note5 Then
Money = Note5
End If
'——————————————————
'输出
Time2 = Time2 / 2 '半小时换算成小时
If Time2 < 1 Then
txtUse.Text = "0" & Time2 '不知道为啥1除以2=.5所以只能这么写
txtMoney.Text = Money
Else
txtUse.Text = Time2
txtMoney.Text = Money
End If
End Sub
其实下机本来可以写的简单点、但是常常想起米老师的那句不能凑合、所以!——bu neng cou huo!
———————今天复习了下小学的加+减-乘*除/————————chenchen