我想把机房收费系统中,关于上机时间和消费金额的东西写下来。当时,这两部分可真是难为我了。
上机时间
我其实刚开始都算不出来上机时间,师姐还笑话我笨。后来,几经周折,也试了一些函数(别人都是一下子就找到那个函数了,我是试了一些,才弄出一个我使着顺手的),最后还是用了 DateDiff 函数。有关于这个函数的使用,我不多说,因为度娘会比我更清楚。
刚开始,师姐说只需要一行代码就算出来了。其实,师姐也没有说错。用这个函数,确实只需要一行代码。可是,前提条件是:用户当天上机,当天下机。也就是说:上机日期和下机日期必须是同一天。不然,用这个函数,一行代码,是绝对算不出的(有算出的,请发慈悲告诉我,我好好学习)。
我也和一些人交流过,也查了博客。大都说因为是学校机房用,所以,是不可能出现上机日期超过一天的(也就是说,不可能有上通宵的)。也因此,真的只需要那么一行代码CostTime = DateDiff("n", StartTime, EndTime),就可以搞定。
可是,就像师姐说的那样:你太较真了!我真的不明白,为什么要先用学校机房用,所以上机日期不可能超过一天去限制我们对于时间的算法。我认为,他能不能上通宵,是他的事儿,时间该怎么算就还得怎么算。所以,对于时间的算法,我计算了三种(粗略写一下)。
一、CostTime = DateDiff("n", StartTime, EndTime) ’ 当天上机,当天下机
二、CostTime =TimeValue(24 * 60 - StartTime + EndTime) '上机间隔一天,比如说今天20:00上机,明天02:00下机。
三、CostTime =TimeValue(24 * 60 - StartTime + EndTime) + (CostDate - 1) * 24 * 60 ' 上机日期超过一天
因为,有一些格式转换的问题,所以看起来可能不搭。但我就是说这么个意思。不是还有个强制下机嘛,所以,个人觉得时间就是得算齐全了。万一,哪天系统不在学校用了呢,或者对外开放可以上通宵呢。(其实,后来想想也真是不大可能。但再给我一次机会,我会说说五个字:我要这样算!)全当我给鸡窝多加了几根草吧!
消费金额
消费金额这一块儿也是把我给卡住了,我最初做出来的系统,是不管你什么用户,不管你上机多久,我都按每分钟给你算,根本没有考虑到准备时间、至少上机时间、递增单位时间这些东西。后来,也给想明白了(至少,现在的我,还没有想出更对的算法了)。
一、上机时间在准备时间内,所有类型用户均不收费,也就是消费金额为零。
二、超过了准备时间,但在至少上机时间内。那么上机时间就按至少上机时间给不同类型的用户计算消费金额。
消费金额=至少上机时间 * 单位时间消费
三、超过了至少上机时间。
X=(消费时间-最少上机时间)/ 递增单位时间 ' X保留一位小数
IF int( x ) <> x then int(x)=int(x+1) , else x=x (不要求格式滴哈,就简单说明一下)
消费金额=(至少上机时间+递增单位时间 * X )* 单位时间消费(分用户类型)
脑袋瓜儿也不好使,都想了好久,才想到现在这个程度。要是发现有什么错的,真诚的希望大家能帮我指出来。
请大家多多指教,谢谢!