需要有关信用到期算法的帮助

spi*_*non 7 language-agnostic algorithm

所以我被卡住了.我正在制定一个到期的信用系统.与信用卡里程类似但不完全相同.顺便说一下,我很抱歉这本书,但我需要添加足够的细节来帮助全面了解.

我需要的是一个用户为进行活动积累信用的系统.但他们也可以将这些学分用于活动.如果不使用,则学分将在30天后到期.我似乎被困在如何在每晚运行的批次中准确计算出来.任何语言的任何想法都会受到高度赞赏,因为我似乎只是抓住了一个我无法解决的小细节.以下是数据示例:

7/1:+5 - 用户注册
7/2:+5 - 用户与系统
7/2 交互:-3 - 用户购买活动
7/3:+5 - 用户与系统交互

所以在这一点上,用户已经获得了15个学分,并且花了3个学分.总共12学分.(至少我得到了基本的数学:P)

我要补充的是,目前我们正在尝试使用两个字段:最后处理,下一个处理.因此,假设这是一个新的注册,这个值是:

最后处理日期:7/1
下一个处理日期:8/1

所以现在8/1来了.批次开始并查看超过30天的所有信用.在这一点上是5.

这是它开始变得模糊的地方.

然后,系统应查看过去30天内所花费的所有积分,以查看他们是否正在使用任何积分.因为它们只有在未被使用时才会过期.所以有3个.所以我然后扣除用户2个学分,因为这是30天以上的学分与花费的差异.所以我完成批处理并相应地设置第二天的日期.现在假设他们已经没有花费我了,我开始计算超过30岁的积分,这是5和积分花费再次是3.但我显然不想考虑我昨天考虑的3个学分.什么是不再包括这3个学分考虑的好方法.

那是我被困的地方.

我们正在考虑为过期的积分编写借记记录,以便我们可以跟踪它们,但很难看到我如何在此计算中使用它.

如果你读到这里,谢谢你.如果你甚至在答案上做了一些努力,我将至少给你一个投票的努力.

编辑:
好的@Greg提到了我忘记解决的问题.考虑信用标志的想法.由于以下情形,有效点但不能正常工作:

假设用户在某一天花费10个学分.但是批次考虑的过期积分只累积到5个.那么他还应该剩下5个积分才能没有过期,因为他花了不止一次到期.所以这面旗帜不起作用,因为我们会跳过这5个额外的积分.希望有道理吗?

And*_*NET 2

假设您每天运行此批次,您可以有一个表来跟踪他们获得的所有学分以及他们使用的学分(负学分)。

下月初,您的工作只是找出第一天获得的积分中有哪些在该月内没有花费。

第一天获得的积分数 - 他们上个月花费的积分。如果该数字为正,则他们有一些积分需要过期。如此简单地在表中添加一条带有负信用的记录。这会将未使用的积分清零。

第二天,重复该过程,查看他们在第二天获得的学分减去上个月获得的所有学分的总和,同时考虑到您前一天创建的负学分记录。