机房收费系统总结(一)——事务
前言:首先介绍一下机房收费系统需求
机房收费系统是为我们学校管理机房做的一个小MIS。因为,现在大学的英语——《新视野大学英语》是网上学习的,而且用的是本学校的内网服务器,还有一些大学要参加相应的计算机等级考试,所以,希望学校的机房可以对本学校的学生开放(在指定的时间,如果晚上、周末等)。
但是,学校如果开放机房的话,那么一定会投入相应的人力与物力(顺便赚点钱,其实大家心里都明白……),所以,希望学生有偿上机,也就是对学生上机进行收费管理,并同时记录相应的上机记录等。
该系统可以实现的功能包括、学生注册、学生充值、学生退卡、学生上机、下机管理、学生信息维护、报表统计数据等。因为,此系统所用的磁卡,是学校的饭卡,属于另一个系统,所以,不涉及关于磁卡方面的管理与维护。
好了,今天我想说的的,在实现机房收费系统中的一个细节问题。
大家可以想到,比如,学习充值(数据库包括:充值记录表,卡表(加上充值金额)),所以,我认为,在这里一定要保证学习充值这个用例的原子性。想到原子性的话,那么大家自然而然的就会想到关于数据库的一个概念,对就是——事务。
下面我想说一下,我是怎么实现的,希望大家提出宝贵意见。
在系统架构方面,我用到了三层架构,底层加上了抽象工厂模式,并用了一个SQLHelper类
下面是我的构架图:
下面是实现充值的类图:
现在是我写的SQLHelper中关于事务的一个函数:
下面这个私有函数,也在SQLHelper里,用来帮助执行
下面是RechargeRecordDAL类中的方法
下面是CardDAL里的方法:
现在是RechargeBLL里的方法(注:里面还用到了其它的表,用来获取学习、卡等信息,还有就是有一个Verify类,用来帮助验证学生是否存在。):
其实想验证一下,事务有没有起作用,很简单,只要设置一个断点(事务执行到一半),到这个断点然后强制终止程序,可以看到,数据库里面的数据没有变化,说明事务起作用了。
这是我的想法,希望大家给出您的宝贵意见!
请发表评论