【机房收费系统】之结账

来源:互联网 发布:小学生编程 编辑:程序博客网 时间:2024/04/25 15:29

           机房收费系统中遇到的第二个难题就是结账的部分了。还是那句话,首先最重要的一点就是要有思路。不知道结账是谁结,不知道给谁结,那肯定也就无从谈起结账。下面是我对机房结账的一点理解。      

         我们都将机房看作是一个网吧。里边的人员都是有着不同权限不同什么的人,管理员,相当于网吧里最大的老板,而操作员是给老板干活的人,是管理这么多人上机的人,也相当于网吧里的网管,一般用户就是比操作员权限更低的人,只能做一些“查”的工作。。首先我们清楚了他们各自的什么,然后就是要搞清楚所谓的结账应该是谁结账,又是给谁结账。  平时的时候是操作员坐在柜台的地方管理着同学们的上机、下机、充值、退卡一系列的工作。所以他会有管账的工作,而管理员则需要查明某个操作员在职时收了多少钱退了多少钱,“抽屉里”应该有多少钱。所以弄明白这一点,我们就应该明白了,所谓的结账就应该是管理员结账,结的是操作员工作时的账。。

一、【信息查询】

       

       我们可以看到,结账的前几个选项卡都是购卡、充值、退卡的情况,以便于为汇总做基础。这些都是“查”记录。当管理员为某个操作员结账的时候,操作员用户名的下拉菜单应该自动显示所有操作员的用户名,当管理员选中某个操作员的用户名的时候,右边就应该能直接显示此操作员的真实姓名。同时,如果我们选择真实姓名的时候。左边就会自动显示此操作员的用户名。表示我们马上为此操作员结账。购卡、充值、退卡都是类似的一些内容。拿充值来说,我们要从recharge表中找到操作员是选中的操作员且还没有结账的用户,找到之后显示相应的信息。或者退卡,我们就要从cancelcard表中找到是此操作员且未结账的用户。从这里我们还能明白,在新用户注册、用户退卡、用户充值的之后更新相应的表的时候,状态都应该是未结账的状态。(那些都是操作员所做的工作,他们虽然收到钱了,或退钱了,都是操作员给用户结账了,而不是我们意义上的管理员给操作员结账,这就回到了我们上文结账的含义)最后,每个选项卡显示出信息之后,别忘了,还要将对应的表更新为“已结账”。。

二、【信息汇总】

       查询过后就是将查询的信息进行汇总了,也就是最后的结账。从前几个选项卡中我们可以得到售卡张数,退卡张数,充值金额,退卡金额等信息。。那么这里就有了一些式子。

总售卡数=售卡张数-退卡张数

应收金额=充值金额-退卡金额

        那么,问题就来了。。下面三个问题都是我在机房中思考的问题。

问题(1)    结账中的临时收费金额应该归到哪里呢?    

        临时收费金额应该是用户上机时的消费金额。所以我觉得这个应该换个名称叫做用户上机消费金额。所谓的上机消费金额也就相当于我们充在卡上的钱当我们上机后会被扣掉的部分,而这个临时收费金额也就是这个操作员所操作的用户所消费的金额总数。它是以一种电子的形式显示在计算机上,而不是我们实实在在拿到的钱。就像我们饭卡刷在机子上显示在刷卡机上的数字。所以结账的时候不应该把它算在其中。

问题(2)    临时收费中的临时到底指什么

         其实这个问题基本上从上一个问题中也可以分析出来,我们需要明确的一点就是这里的“临时”一定不是临时用户中的临时,而是相对于收费状态来说的一种临时,所以当我们进行对临时收费金额结账的时候,一定是对所有的用户所消费的金额结账,而不是指对”临时“用户进行结账。

问题(3)    临时收费金额应该怎么结?

         我们都知道了临时收费金额是所有用户的上机消费金额,那么应该怎么对于 某个操作员来说进行临时收费结账呢,可能有的人会说找到line表中这个操作员所操作的未结账的用户的消费金额,然后相加,但是line 表中根本没有userid这个字段。而student表中的userid是在给学生注册卡时的操作员,而此学生上下机就不一定是这个操作员操作的了。那我们要怎么计算所有临时消费金额呢?   这个问题我始终绕不过来。。按照从第一个问题的思路这样下来下边这个临时收费金额根本没有办法去算,因为我们要算的是此操作员所操作的临时收费。。要不就是从第一个问题思路就错了???我始终想不通。后来,找了美红理了一下思路。。

原来,上边的问题错了!!

       让我们在来从新理下思路。。

问题(1)     临时用户和固定用户到底有什么区别?

           这个问题如果用上边的思路来回答的话那么临时用户和固定用户就没有任何区别了,所以我们再一次验证了上边的思路是错误的,临时收费金额是显示在机子上的用户消费金额没有错,但是,这里的临时就是临时用户的临时!!临时用户和固定用户到底有什么区别呢?所谓的固定用户就是,比如说,一个人经常来上网,所以注册的时候注册为固定用户,他可能会在卡中充值100元,供平时用。而临时用户则是平常不会常来机房,来一次就会注册一个卡号,充上点钱一次性可能就用完了,如果没有用完将卡退回到柜台前,操作员会退给剩余的钱。如果还有下次来,那一定还要再次注册一个卡号。

问题(2)     从哪里给临时用户结账

            既然临时用户到底怎么回事已经弄明白了,那么就要思考怎样给他们结账了,既然是临时注册的卡号,那么这时此卡上下机一定还是给此卡注册的操作员管理,这样student表中的操作员就和line表中对应起来(line表中没有userid这个字段,我们可以使用外键,也就是说,给这个临时用户注册卡的操作员也一定是管理他上下机的操作员)所以,结账的时候,我们要在student表中先搜出此操作员并且未结账的卡号在line表中的消费金额总和。。这就是临时消费金额。

问题(3)    这时的汇总应该变成了什么样?

            如果是这样的思路的话,那么“应收金额”就不应该按照原来的思路来计算了,这会儿,应收金额=充值金额+临时收费金额 -退卡金额      (充值金额是固定用户平时充值的记录,而临时用户不具备充值这个功能)。所以在管理员算今天柜台上的收入的时候,就应该算上临时用户消费的金额和固定用户充值的金额,再减掉退卡金额。。这样才算合理。。。


三、【经验教训】

       师姐告诉我说,其实这个临时收费金额你想让它是怎样就能是怎样,没有一个对与错的概念,只有优化的概念,只要你全心全意为人民考虑了,那这就是对的。上边的只是一种思路,其实还有很多方法去定义临时用户。我觉得从这个收费结账中,我发现了很多我们建表中的问题,也发现了其中的利与弊。只有经历过了,只有认真思考过了,我们才能找到更好的方法。才能更好的为人民服务。。。




0 0
原创粉丝点击