机房收费系统——结账

机房收费系统的逻辑性很强。师傅也说了,第一次做机房,首要的是理清思路,明白它的逻辑。

做到结账这里,跟大家分享一下我对结账的一点理解:

钱分三个状态:用户的钱,柜台的钱(账面),老板的钱(实际)

用户充值,退卡,钱在用户自己和柜台之间流动;用户实际消费之后,用户充值后存在柜台的钱中消费的部分实际上就划归为老板所属了。

操作员结账:

售卡不收钱,充值收钱,退卡退钱。

充值的钱-退卡退的钱=应收的钱

要注意:用户注册卡的时候包含了一次充值过程,需要把这次充值过程在充值记录里体现出来。

老板查账:

上期充值卡余额+本期充值金额-本期消费金额-本期退款金额=本期充值卡余额

对应到数据库里记录的操作就是:

用户每次下机计算一下本次消费了多少钱,用账户里的钱减去消费的钱,得到的结果写入账户,更新账户余额。

操作员结账:

1)按操作员检索充值记录里未结账的记录,统计对应记录的充值金额,求和就是自上次结账之后的总的充值金额。把检索出来的未结账记录的状态改为结账。

2)按操作员检索退卡记录里未结账的记录,统计对应记录的退卡金额,求和就是自上次结账之后的总的退卡金额。把检索出来的未结账记录的状态改为结账。

3)用求得的总的充值金额-总的退卡金额=应收金额

(算得的应收金额在实际上就是为了核对实际柜台上收的钱数对不对。)

4)临时收费金额是临时用户消费的金额。在学生上机记录里查询上次结账之后的临时用户的记录,把它们的消费金额求和即得。

临时用户与固定用户的区别:收钱单价不一样。

老板查账:

1)按日期检索学生上机记录里对应的记录,对检索出的记录中的消费金额求和,得到本期消费金额。

2)检索学生卡记录里所有的记录,对所有记录中的余额求和,得到本期充值卡余额。

3)我认为日结账单就是按照日期来结账,如果一天当中中午结了一次帐有了当日的结账记录,当天晚上又结一次帐,则应该更新中午的那次结账记录,而不是重新再建一条记录。如果某一天没有结账,第二天结账,则应该按照日期记录把第一天的结了,同时产生一条记录,再进行第二天的结账。而不是什么时候进行结账操作,就把之前的未结账记录全部结账而不分日期。

4)日结账单是简单地全部地显示结账记录。周结账单是对日结账单的按日期查询。

本人对于算钱不太懂,难免有考虑的不合理的地方,还请批评指正。

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...