关闭

[置顶] 机房收费系统—结账

标签: 机房收费系统数据库
1813人阅读 评论(26) 收藏 举报
分类:

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

 

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

从表中我们不难看出:左边的是一部分(主要是用到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

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

 

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

 


5
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:310215次
    • 积分:12095
    • 等级:
    • 排名:第1246名
    • 原创:186篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3309条
    博客专栏
    最新评论