1
2
假设您每天都运行此批处理,您可以有一个表来跟踪他们获得的所有学分和使用的学分(负学分)。 在下个月初,你的工作是简单地找出哪些学分赚取的第一天没有花在这个月。 第一天获得的学分数-他们上个月花费的学分。如果数字是正数,他们有一些信用需要过期。所以简单地在表中添加一条信用为负的记录。这将使未使用的学分归零。 第二天,重复这个过程,看看他们在第二天获得了多少学分减去他们在上个月获得的所有学分之和,同时考虑到你在前一天创建的负学分记录。 |
2
3
因此,当用户注册时,他们有:
第二天与系统交互后:
买了东西之后:
等等。 |
3
3
为系统的每个用户保留一个数组,该数组存储有关该用户接下来连续30天可获得的信用额度的信息
每次用户获得一些学分时,您都会根据获得的学分数增加所有天数的金额。例如,如果用户获得了2个学分,则表将更改如下。就像把整个图表都抬高一样。
每天你都把图表移到左边来模拟过期的信用卡。用户明天将有以下金额
|
4
1
在支出上加个旗子怎么样?如果未设置该标志,则可以在必要时将该支出包含在批中。如果您确实使用支出来抵消到期日,则设置标志。下次通过时,您将忽略该支出,因为标志已设置。 |
5
1
使用借方记录记录正常支出。当每月批处理作业运行时,它可以计算小于或等于过期信用的总借方。如果有信用证到期,只需插入适当的借记记录(适当==在您的应用程序中取消超额)。这样,任何只检查贷项和借项的“运行总计”代码都将达到批处理代码预期的余额。 |
6
0
解决这个问题的一种方法是只存储事务,而不存储余额。然后你总是在需要的时候实时计算余额。数据如下:
任何时候的余额只是所有尚未到期的交易的总和。不需要运行任何批处理过程。 |
7
0
关于朱利安的回答(我还不能评论),我正在处理同样的问题,朱利安的方法不会起作用,因为这会导致帐户能够变成负数。 如果用户在一个月内没有使用该服务,那么8/4的账户余额将为-3,一个值为5的活动将使余额达到2,而不是应该的5。 |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |