做上下机的时候,刚开始没有头绪的。总觉得下机好麻烦,还要有好多计算。后来有一个小想法,想在界面动态显示消费时间,于是下面的思考就出现了。
原思路:
以上就是我最初的思路,知道要用策略模式,但是不知道怎么去写啊,怎么办?先把功能实现了再说策略模式吧!
当与同学交流后发现,我的所有更新都是在下机之后更新的。这样做会出现两种问题:
1、程序故障以及断电故障:会出现数据丢失更新问题;
2、当查询上机记录或上机状态的时候,消费时间以及消费金额,余额等是没有发生变化的,不能及时查询上机动态。
这就是延迟更新所遇到的问题,那我们就让它及时更新呗,所以思路二诞生了!
修改后的思路:
思路一遇到的问题是消费时间,消费金额以及余额会出现丢失更新的情况。
因为在上机的时候,消费时间就开始每隔一分钟更新一次了,那消费金额,余额也可以实时更新啊!所以我们可以在上机的时候,就将这些信息写入数据库。这样查询记录的时候就可以实时看到此卡的上机动态。然后下机的时候直接更新下机时间以及下机日期即可。
上下机过程中遇到的问题:
对于上下机的管理,全部在一张表T_LineInfo中,下面我分析一下这样做的利弊:
利:全部强制下机方便。只需将所有表的下机日期以及下机时间,上机状态统一更新为当前日期时间,以及“强制下机”。不需要循环下机,因为余额已经计算完毕。
弊:正常下机麻烦。因为下机的时候要修改上机状态,所以不能将上机状态作为表的查询条件。因而我想到了用卡号以及上机时间作为查询条件。在vb.net中的Datatime取出来的时间值是连日期一起包括的,时间转换上就会麻烦一些。
查询上机状态时间要长一些。
机房也快要结束了,没有必要去改表了,就先这样吧,等合作的时候在权衡利弊去设计表吧!
总结:
到现在机房快要做完了,我才发现我的B层全写错了,逻辑方面理解错了,B层抽象错了,那我的F层也好不到哪去,同时又增加了U层的代码负担。也快完工了,就不改了,这是一个过程吧,没有错,哪有对。在磕磕绊绊中也过来了,只能这样安慰自己了。不过现在有一个自认为比较清晰的思路,下一步合作应该怎样去改!就这样在不断修改中成长!