机房收费系统—结账

原创 2013年12月01日 21:28:03

第一遍机房收费系统很顺利就完成了,但是并没有完善,借着建一个样板的机会,写一个相对完善的机房收费系统。首先,就是完善结账功能,很多同学都没有做这个,因为前模板就没有完善这个功能,所以我就写这篇文章,给大家消除一下恐惧感。

 

首先,我们要了解它的控件窗体里面都有些什么。

从表中我们不难看出:左边的是一部分(主要是用到student表),右边的是另一部分(主要是用到recharge表),我分类的依据是数据库。

第二步:细化功能:

这里可以根据SStab控件的属性里面的每一个选项卡来进行细分。这里我来做最难的一个,当然,你们要是做的话,就按顺序做,因为前面的购卡、充值、退卡、临时用户都很简单。我现在就仅仅讲一下汇总选项卡。

从这里可以看到,很散,我用另一张表来记录它。

是不是看上面的表就可以很清楚的看到他们的数据关系:

不管是张数还是金额,都是很简单的,因为它们都是在select语句中限定条件外加循环做成的。

接下来就是代码实现了:

 

我觉得就是两部分:

第一:

 

    Select Case SSTab1.Tab
        Case 0
            With myFlexGrid
                .Rows = 1
                .CellAlignment = 4
                .TextMatrix(0, 0) = "学号"
                .TextMatrix(0, 1) = "卡号"
                .TextMatrix(0, 2) = "日期"
                .TextMatrix(0, 3) = "时间"
                
                txtsql = "select * from student_info where userid='" & CmbUserId & "'"     '从student表中查询出购卡的记录
                Set mrc = ExecuteSQL(txtsql, msgtext)
                
                If (mrc.EOF Or mrc.BOF) = False Then
                
                    While (mrc.EOF = False)
    
                        .Rows = .Rows + 1
                        .CellAlignment = 4


                        .TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(0))
                        .TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(1))
                        .TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(12))
                        .TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(13))
                        mrc.MoveNext
                    
                    Wend
               End If
               mrc.Close
            
            End With


 

这是购卡的一个实现,其他的跟这个很类似。

第二就是:结账

Private Sub CmdCheckout_Click()
Dim txtsql As String
Dim msgtext As String
Dim mrc As ADODB.Recordset
Dim AddCheckout_I As Integer
Dim AddCheckOut_TmpRate As Single
Dim AddCheckOut_cancelcash As Single
    
    txtsql = "select * from student_info where userid='" & CmbUserId & "'and status='使用'"    '查询student表中的信息售卡情况
    Set mrc = ExecuteSQL(txtsql, msgtext)
    
        AddCheckout_I = 0
        AddCheckOut_TmpRate = 0
        While (mrc.EOF = False)
            AddCheckout_I = AddCheckout_I + 1
            AddCheckOut_TmpRate = AddCheckOut_TmpRate = mrc.Fields(7)
            mrc.Fields(11) = Trim("结账")
            mrc.MoveNext
        Wend
        txtSaleNum = AddCheckout_I    '这里算出卖出的钱数
    mrc.Close
    
    txtsql = "select * from student_info where userid='" & CmbUserId & "'and status='不使用'"    '查询student表中的信息退卡情况
    Set mrc = ExecuteSQL(txtsql, msgtext)
    
        AddCheckout_I = 0
        AddCheckOut_cancelcash = 0
        While (mrc.EOF = False)
            AddCheckout_I = AddCheckout_I + 1
            AddCheckOut_cancelcash = AddCheckOut_cancelcash = mrc.Fields(7)     '这里是退卡的钱数
            mrc.Fields(11) = Trim("结账")
            mrc.MoveNext
        Wend
        TxtCancelNum = AddCheckout_I
        TxtCancelCash = AddCheckOut_cancelcash
        TxtAllCash = AddCheckOut_TmpRate - AddCheckOut_cancelcash         '这里算出的总的钱数

    mrc.Close
    
    txtsql = "select * from student_info where userid='" & CmbUserId & "'and type='临时用户'and status='使用'"    '查询student表中的信息临时用户的金额情况
    Set mrc = ExecuteSQL(txtsql, msgtext)
    
        AddCheckOut_TmpRate = 0
        While (mrc.EOF = False)
            AddCheckOut_TmpRate = AddCheckOut_TmpRate + mrc.Fields(7)
            mrc.Fields(11) = Trim("结账")
            mrc.MoveNext
        Wend
        TxtTmpCash = AddCheckOut_TmpRate
    mrc.Close
    
    txtsql = "select * from recharge_info where userid='" & CmbUserId & "'"    '查询student表中的信息充值金额情况
    Set mrc = ExecuteSQL(txtsql, msgtext)
        AddCheckOut_TmpRate = 0
        While (mrc.EOF = False)
            AddCheckOut_TmpRate = AddCheckOut_TmpRate + mrc.Fields(3)
            mrc.Fields(7) = Trim("结账")
            mrc.MoveNext
        Wend
        txtRechargeCash = AddCheckOut_TmpRate
    mrc.Close
    
    MsgBox "结账成功"
    
End Sub

别看它的代码这么长,其实懂了里面的一个功能段其他的就很简单了,无非就是循环相加和注意它的数据类型就行了。

 

上升到思想的高度,首先我们要有全局观,知道我们大体是要实现什么样的功能,哪里的功能是一样的。其次就是细节决定成败,我没有自己把自己给弄乱了,是应为我干什么都用自己的笔记从新给他们分类,就简单了。最后,就是代码的思维了,我一直想这事一种什么思维,其实,很简单,当你把前两条做好了,然后参照代码就行了。

 


版权声明:本文为博主原创文章,未经博主允许不得转载。

机房收费系统之日结账单和周结账单

日结和周结其实逻辑是一样的,不过就是日结只结了今天的账,而周结结的是选中日期之间的账。 一、日结账单 我日结账单采取的方法是:先判断今天的账结了吗,如果已经结了,就从日结账单表中删除记录,再结一次...
  • u013031565
  • u013031565
  • 2014年10月09日 09:41
  • 2285

【机房收费系统C#版】——导出Excel

前言        机房合作开始好长了一段时间,反反复复开了几次会,项目也是一拖再拖,作为组长,有80%的责任都在于我。为了不让这个项目陪着我过年,要求自己一定要在这几天敲完。还是一样的问题,用C#敲...
  • u013044029
  • u013044029
  • 2015年12月29日 11:41
  • 1155

机房收费系统重构之策略模式

前面我们学习了23种设计模式,不过一直没用过,这次机房重构就是让
  • u010168160
  • u010168160
  • 2014年10月05日 16:33
  • 2070

机房收费系统—日结账单

前言  这个星期机房敲完了日周结账单和上下机,但是不同的人看待问题的角度不一样,所以大家做出来的机房也有一些差别,下面我就说一说我的想法。问题的由来  经过机房收费系统的尝试,相信大家都对原来的系统有...
  • zwj_jyzl
  • zwj_jyzl
  • 2017年12月24日 17:36
  • 145

机房收费系统之日结账单和周结账单

日结和周结其实逻辑是一样的,不过就是日结只结了今天的账,而周结结的是选中日期之间的账。 一、日结账单 我日结账单采取的方法是:先判断今天的账结了吗,如果已经结了,就从日结账单表中删除记录,再结一次...
  • u013031565
  • u013031565
  • 2014年10月09日 09:41
  • 2285

【机房收费系统】——结账

结账,结的就是哪些账,给谁结账,结账需要涉及到哪些表?这些都是开始设计代码之前首先要想的。        看到这个界面,你会怎么想?对,首先要看需要哪些表来查询相关信息。               ...
  • hongwei15732623364
  • hongwei15732623364
  • 2015年08月24日 11:17
  • 590

机房收费系统(1)之结账

结账?首先
  • u012704843
  • u012704843
  • 2014年08月22日 11:01
  • 980

【机房收费系统】日、周结账单

这个功能其实当时做的时候很马虎,不明所以的就查看别人的博客,稀里糊涂的就完成了,但是在后来再看的时候,怎么都觉得不对劲。现在我要从新理一下思路。。 一、【作用功能】         报表的制作方法...
  • u013035615
  • u013035615
  • 2014年11月25日 18:02
  • 1167

机房收费系统学生下机结账小结

这几天一直在考虑机房收费系统学生下机操作。学生下机,一则需要添加学生下机记录信息;还需要计算学生在整个上机过程中所花费的金额,并且更新学生余额。那么如何做在性能上或者扩展上更好一些呢? ...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2014年05月31日 10:58
  • 2188

机房收费系统之周结账单

机房收费的周结账单是日结账单的衍生,因为在每一天中都可以结好几次帐,最后在日结账单表中一天的记录有好几个,而周结账单就是为了解决这个问题。把每一天的记录汇总成一条来显示出来,方便管理员清楚的了解到每天...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2013年09月21日 21:32
  • 1679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:机房收费系统—结账
举报原因:
原因补充:

(最多只允许输入30个字)