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

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

一、【信息查询】

       

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

二、【信息汇总】

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


三、【经验教训】

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


【机房收费系统】之结账相关推荐

  1. 机房收费系统 之 结账BUG

    声明:以下内容只对将卡表和退卡表放在同一张表的同学适用! 最近大家都已经开始做VB.NET机房收费系统重构版,在这里跟大家聊聊我在机房收费系统中发现的漏洞. 在机房收费系统中有这样一个窗体--结账.个 ...

  2. 【VB与数据库】——机房收费系统之结账

    到现在机房收费基本完成,相对之前的学生管理系统,有了一些小难度,个人感觉尤其在结账部分,由于涉及的表比较多,这更需要我们理清思路,保持清晰的思路,才是我们尽快完成王道! 在这一部分内容中涉及到一个之前 ...

  3. 【机房收费系统】---结账

    一.查看某操作员的工作数据信息 代码: Private Sub comboUserName_Click()Dim txtSQL As StringDim MsgText As StringDim mr ...

  4. 【VB】机房收费系统(结账)

    结账,我觉得他的作用就是能让管理员能对这一天每一位操作员的收支有一个一目了然的了解. 汇总的小知识:        售卡张数=购卡选项卡的记录总数        退卡张数=退卡选项卡的记录总数     ...

  5. 机房收费系统之纵观全局

    验收项目的时候,师父们从四方面进行了审核:界面.功能.代码.业务.之后师父布置了三项任务:用自己的理解将一般用户.操作员还有管理员的主要职能搞清楚:将本系统的主要功能化成流程图:"谈钱不伤系 ...

  6. 机房收费系统——报表(2)

    二.代码部分 跟之前写的excel相比,我觉得报表还是有点相同的.大体思路是这样的: 先定义. (报表:Dim Withevents 对象变量 As 类名 这种用法是加载该类的事件,Withevent ...

  7. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  8. 机房收费系统的退卡和结账

    在做机房收费系统的时候为了保证核心功能的实现,我将计费时间调成了秒.这样就可以迅速,快捷地看到了收费的结果. 在这种环境下,我的机房收费系统不负众望,终于一次又一次将金额搞错,经过n次实验,将测试的结 ...

  9. VB.net版机房收费系统——结账功能实现(代码部分)

    实现结账功能的时候,被选项卡控件整的有点郁闷,瞬间脑袋就凌乱了,听上去自己好像很可笑的样子--于是,便去爬巨人的肩膀了~ 看了欢哥的博客,发现她的结账博客是按照"索引"思想写的,在 ...

最新文章

  1. PHP脚本管理kvm,kvm管理脚本
  2. Excel导入SQL SERVER,数字和字符会被系统自动置为NULL的解决方法
  3. C++ pancake sort煎饼排序的实现算法(附完整源码)
  4. 操作系统实验报告16:CPU 调度
  5. SAP UI5 ConnectionManager - drives initialization of odata model
  6. log4j2自动删除_登录样式:log4j 2,上下文,自动清除…全部不附带任何字符串!...
  7. jquery可见性选择器(综合)
  8. 现代软件工程系列 创新靠学分
  9. ipmsg飞鸽传书系统即时通讯
  10. springboot 优雅停机_Spring boot 2.3优雅下线,距离生产还有多远?
  11. oracle 12c 取消omf,Oracle12c创建及删除PDB
  12. 工具-Sublime Text:便捷设置 小三角
  13. CSUST-2018区域赛选拔个人赛-1019 看直播(二分+DP)
  14. MOSSE相关滤波跟踪算法
  15. 正确获取CleanMyMac注册码并激活
  16. excel柱状图堆叠图显示总和_excel堆积柱形图显示百分比 在Excel堆积图中显示百分比标签的方法...
  17. 系统集成项目管理工程师是哪个部门发证?
  18. 搭建安装kubesphere平台——在 Linux 上以 All-in-One 模式,附安装步骤—{全篇踩坑排坑记} kubernetes:k8s
  19. 维夏英语暑期调研小分队——第二天
  20. 10万行代码电商项目

热门文章

  1. 电源适配器适用GB8898-2001和GB4943-2001的差异
  2. PRN(20201231):驾驶人驾驶决策机制遵循最小作用量原理
  3. rocketdock 修改隐藏快捷键
  4. mysql占用服务器cpu过高的原因以及解决办法
  5. 使用Mac的浏览器调试ios设备上的cordova app
  6. 容器监控之cadvisor介绍
  7. Base128编码规范
  8. 控制霍尔编码器电机(有刷)的一个思路
  9. 如何测试代理IP的质量?
  10. 锁存器 触发器 寄存器 区别