我感觉上下机这块是整个系统中逻辑分析最纠结,需要考虑的问题最多的一部分。一开始没怎
么想通,计算消费金额时,消费时间 与基本数据设定中各个数据之间的逻辑关系,如何联系起
来,没怎么想明白。计算消费金额时,就直接用消费时间 / 30 * "固定用户半小时费用",操作时得
到的全是无限小数。呵呵
其实,不单单是完成上机、下机 然后把钱计算一下就完了。这部分需要很严密,并且和基本数
据设定那一块联系也很紧密,刚开始做的时候并没有意识到这一点,跟本不知道数据设定有什么意
义(其实也不是一点也不知道,但是对很多数据设定并不是很理解,不知道在这个系统中起什么作
用),后来随着系统的逐渐完善,对系统的逐步地深入的理解,自己潜意识的要求系统的完善,就
渐渐理解了。
基本数据设定对消费金额计算的影响:
数据设定时,我的理解和设计:
递增时间不得大于30分钟;准备时间不得大于5分钟;
最少金额不得低于固定用户半小时费用;
不理解"至少上机时间"这一项设定有什么用处;
在下机计算金额时,我没用到"至少上机时间"这一项,因为我不知道为什么要设置至少上机时间,我的
想法是只要上机时间(按从开始刷卡计算)超过准备时间就收费,具体怎么收费,再不同情况不同讨论.
上机时的限制:
卡内余额<"最少金额" 的话,不允许上机
已经刷卡上机的卡号,不得再次刷卡上机
下机时的消费金额的计算:
1,消费时间小于"准备时间":
consumeCash=0
2,消费时间大于"准备时间",小于等于30分钟:
consumeCash=数据设定 "固定用户半小时费用"
3,消费时间大于30分钟:
(1)消费时间是30分钟的整数倍,则消费金额:
consumeCash=consumeTime/30 * "固定用户半小时费用"
(2)消费时间不是30分钟的整数倍,且非整数部分小于递增时间,则消费金额:
consumeCash=consumeTime \ 30 *"固定用户半小时费用"
(3)消费时间不是30分钟的整数倍,且非整数部分大于或等于递增时间,则消费金额:
consumeCash=(consumeTime \30 + 1) * "固定用户半小时费用"
还有一个想法是:当下机时,计算为完消费金额后,余额不能小于0吧。所以,我想实现每隔一分
钟计算一次上机用户的消费情况,当余额处于大于0小于"最少金额"时,给出提示“余额不足,请充
值”,之后强制下机。但是目前还没有实现。实现之后再做总结。