博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一次机房收费系统【总结】——结账
阅读量:2240 次
发布时间:2019-05-09

本文共 12898 字,大约阅读时间需要 42 分钟。

       说起机房,我个人感觉最具有挑战性的就是上下机,组合查询,以及结账。下面我就来说一说结账。

结账,概括的来说,就让管理员知道每天机房的金钱收支。详细的说是把每个操作员一天收支明细列出来让管理员一目了然。

下面我们先来看看结账的界面,如下图

经过分析,我们可知道,这就是管理员看操作员一天的工作明细,即售卡,充值,退卡的情况。

1、  购卡:就是在student_info表总查询没有结账的那些新注册的学生卡号等信息。

2、  充值:在recharge_info表中查询未结账的充值信息。

3、  退卡:在cancelCard_info中查询未结账的退卡信息。

4、  临时用户:在student_info表中查询未结账的,没有退卡的临时用户。

5、  汇总:将前面所有的信息汇总起来。用到了student_Info 、Recharge_Info 、cancelcard_Info 表。

6、  售卡张数=购卡选项卡的记录总数

7、  退卡张数=退卡选项卡的记录总数

8、  退卡金额=cancelcard_Info表中的金额进行累加

9、  总售卡数=售卡数-退卡数

10、 注册和充值金额=student_Info 表中注册时候的充值金额+Recharge_Info 表中的充值金额(注册时的充值的钱和充值时充进去的钱其实都一样)

11、 临时收费=临时收费选项卡记录中的卡号上机所消费的钱的总和(Line_Info)(只是用来显示)

12、应收金额=注册和充值金额-退卡金额

  但是,这样使用三个表相互查询,略觉复杂。我们可以在recharge表中添个字段,让问题变得简单点。值使用两个表即可将此窗体功能实现。如下图:

只需添加图中的两个字段,就可以在实现本窗体功能时,丢弃student表了。

功能分析如下:

1、  购卡:就是在recharge_info表总查询没有结账的那些新注册的学生卡号等信息。

2、  充值:在recharge_info表中查询未结账的充值信息。

3、  退卡:在cancelCard_info中查询未结账的退卡信息。

4、  临时用户:在recharge_info表中查询未结账的,没有退卡的临时用户。

5、  汇总:因为我们数据表的改动,所以我们只是用到了Recharge_Info 、cancelcard_Info 表。

代码如下:

Dim txtSQL As StringDim msgtext As StringDim checkDaymrc As ADODB.RecordsetDim LineMrc As ADODB.RecordsetDim CancelMrc As ADODB.RecordsetDim REChargeMrc As ADODB.RecordsetDim Yescheckmrc As ADODB.Recordset'Dim cancelCash1 As String '用于记录退卡总金额Dim Allcash1 As String '用户记录注册和充值总金额Private Sub cmdcheckout_Click()    '打开日结账单 的表,查询上次结账时是否有记录,如果没有则    'remainCash清零。否则将上次的记录填上。    '每次都是增加一条记录,将汇总里面的信息填上即可。并且情况,然后对其数据库标记        Dim Remaincash As String '上期余额    Dim RechargeCash As String '上期充值    Dim ConsumCash As String '学生消费    ConsumCash = 0        '判断下拉菜单中是否有东西    If ComLevel.Text = "" Then        MsgBox "先选择员工", vbOKOnly + vbExclamation, "提示"        Exit Sub    End If        txtSQL = "select * from checkday_info"    Set checkDaymrc = ExecuteSQL(txtSQL, msgtext)    Call SQL_Timer    txtSQL = "select * from checkday_info where date='" & Trim(Left(Sqlser_time, 9)) & "'"    Set Yescheckmrc = ExecuteSQL(txtSQL, msgtext)                   '看看checkday数据库是否有记录,有记录的话上次的余额等内容填写上次的,否则为零    If checkDaymrc.EOF = False Then '如果有记录        checkDaymrc.MoveLast '跳到最后一条记录        Remaincash = checkDaymrc.Fields(4)          'remaincash        '计算今日消费        txtSQL = "select * from line_info where ischeck='未结账'and status='正常下机'"        Set LineMrc = ExecuteSQL(txtSQL, msgtext)                If LineMrc.EOF = False Then            Do While LineMrc.EOF = False                ConsumCash = Val(ConsumCash) + Val(LineMrc.Fields(11))                LineMrc.Fields(13) = "已结账"                LineMrc.MoveNext            Loop                End If        If Yescheckmrc.EOF = True Then  '如果今天没有结账            checkDaymrc.AddNew            checkDaymrc.Fields(0) = Val(Remaincash)                 'remaincash            checkDaymrc.Fields(1) = Val(labRechargeCash.Caption)    'rechargecash            checkDaymrc.Fields(2) = Val(ConsumCash)            checkDaymrc.Fields(3) = Val(labCancelCash.Caption)      'cancelcash            checkDaymrc.Fields(4) = Val(labAllCash.Caption)            Call SQL_Timer            checkDaymrc.Fields(5) = Trim(Left(Sqlser_time, 9))      'date            checkDaymrc.Update            checkDaymrc.Close        Else                      Yescheckmrc.Fields(0) = Val(Remaincash)                 'remaincash            Yescheckmrc.Fields(1) = Val(labRechargeCash.Caption) + Val(Yescheckmrc.Fields(1))   'rechargecash            Yescheckmrc.Fields(2) = Val(ConsumCash) + Val(Yescheckmrc.Fields(2))            Yescheckmrc.Fields(3) = Val(labCancelCash.Caption) + Val(Yescheckmrc.Fields(3))     'cancelcash            Yescheckmrc.Fields(4) = Val(labAllCash.Caption) + Val(Yescheckmrc.Fields(4))            Call SQL_Timer            Yescheckmrc.Fields(5) = Trim(Left(Sqlser_time, 9))      'date            Yescheckmrc.Update            Yescheckmrc.Close        End If    Else '如果没有记录        txtSQL = "select * from line_info where ischeck='未结账'and status='正常下机'"        Set LineMrc = ExecuteSQL(txtSQL, msgtext)                If LineMrc.EOF = False Then            Do While LineMrc.EOF = False                ConsumCash = Val(ConsumCash) + Val(LineMrc.Fields(11))                LineMrc.Fields(13) = "已结账"                LineMrc.MoveNext            Loop                End If                checkDaymrc.AddNew        checkDaymrc.Fields(0) = 0                               'remaincash        checkDaymrc.Fields(1) = Val(labRechargeCash.Caption)    'rechargecash        checkDaymrc.Fields(2) = Val(ConsumCash)        checkDaymrc.Fields(3) = Val(labCancelCash.Caption)      'cancelcash        checkDaymrc.Fields(4) = Val(labAllCash.Caption)        Call SQL_Timer        checkDaymrc.Fields(5) = Trim(Left(Sqlser_time, 9))      'date        checkDaymrc.Update        checkDaymrc.Close    End If        '对数据库进行结账标记    '对cancelcard标记    txtSQL = "select * from cancelcard_info where status='未结账'and userid='" & ComLevel.Text & "'"    Set CancelMrc = ExecuteSQL(txtSQL, msgtext)        Do While CancelMrc.EOF = False        CancelMrc.Fields(5) = "结账"        CancelMrc.MoveNext    Loop        '对recharge数据库标记    txtSQL = "select * from recharge_info where status='未结账'and userid='" & ComLevel.Text & "'"    Set REChargeMrc = ExecuteSQL(txtSQL, msgtext)        Do While REChargeMrc.EOF = False        REChargeMrc.Fields(8) = "结账"        REChargeMrc.MoveNext    Loop        labCardNo.Caption = 0    labCancelNo.Caption = 0    labRechargeCash.Caption = 0    lablinCash.Caption = 0    labCancelCash.Caption = 0    laballCardNo.Caption = 0    labAllCash.Caption = 0    End SubPrivate Sub comLevel_Click()     '当在点击下拉菜单中的选项,则显示真是姓名    txtSQL = "select * from user_info where userid='" & ComLevel.Text & "'"    Set mrc = ExecuteSQL(txtSQL, msgtext)        labName.Caption = Trim(mrc.Fields(3))   '显示姓名    lablevel.Caption = Trim(mrc.Fields(2))  '级别    mrc.Close        Call viewdateEnd SubPrivate Sub ComLevel_KeyPress(KeyAscii As Integer)  '下拉菜单不可输入。               KeyAscii = 0End SubPrivate Sub Form_Deactivate()       '失去焦点时,窗体卸载    Unload MeEnd SubPrivate Sub Form_Load()    '窗体初始加载时,在下拉菜单中加载userid(级别)    txtSQL = "select * from user_Info"      '查询    Set mrc = ExecuteSQL(txtSQL, msgtext)        '在下来菜单中显示所有userid    Do While mrc.EOF = False        ComLevel.AddItem mrc.Fields(0)    '操作员用户名        mrc.MoveNext    Loop        mrc.Close        '窗体加载时,加载购卡卡片的字段名    With MfgBugCard        .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "日期"  'date        .TextMatrix(0, 3) = "时间"  'time        .TextMatrix(0, 4) = "金额"  'cash    End With            With MfgRecharge        .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "充值金额"  'cash        .TextMatrix(0, 3) = "日期"  'date        .TextMatrix(0, 4) = "时间"        .TextMatrix(0, 5) = "方式"  'source    End With        With MfgCancelCard        .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "日期"  'cash        .TextMatrix(0, 3) = "时间"  'date        .TextMatrix(0, 4) = "退卡金额"    End With        With MSHFlexGrid4         .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "日期"  'date        .TextMatrix(0, 3) = "时间"  'time    End WithEnd SubPrivate Sub viewdate()      '根据已经选择好人员信息来修改SSTab里面的汇总信息    Dim txtSQL As String    Dim msgtext As String    Dim mrcSD As ADODB.Recordset    Dim mrcRC As ADODB.Recordset    Dim mrcCC As ADODB.Recordset    Dim mrcTmp As ADODB.Recordset    Dim RechargeCash As Variant         '用于存储,充值的 所有金额    Dim cancelCash As Variant           '用于存储,退钱的 所有金额    Dim TmpCash As Variant              '临时用户金额          '把他的所有信息,未结账的显示出来       '购卡    txtSQL = "select * from recharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'and source='注册'"    Set mrcSD = ExecuteSQL(txtSQL, msgtext)          MfgBugCard.Rows = mrcSD.RecordCount + 1          With MfgBugCard                .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "日期"  'date        .TextMatrix(0, 3) = "时间"  'time               While mrcSD.EOF = False            .Rows = .Rows + 1            .CellAlignment = 4            .TextMatrix(.Rows - 1, 0) = Trim(mrcSD.Fields(1)) 'studentno            .TextMatrix(.Rows - 1, 1) = Trim(mrcSD.Fields(0)) 'cardno            .TextMatrix(.Rows - 1, 2) = Trim(mrcSD.Fields(5)) 'date            .TextMatrix(.Rows - 1, 3) = Trim(mrcSD.Fields(6)) 'time            .TextMatrix(.Rows - 1, 4) = Trim(mrcSD.Fields(3)) 'cash            mrcSD.MoveNext        Wend    End With    AutoColWidth Me, MfgBugCard                    '自动调整表格大小          '把该操作员的所有未结账的充值信息汇总到表格,一个注册信息对应一个充值信息    '充值结账    txtSQL = "select * from ReCharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'and source='充值'"    Set mrcRC = ExecuteSQL(txtSQL, msgtext)           RechargeCash = 0          With MfgRecharge         .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "充值金额"  'cash        .TextMatrix(0, 3) = "日期"  'date        .TextMatrix(0, 4) = "时间"        While Not mrcRC.EOF            .Rows = .Rows + 1            .TextMatrix(.Rows - 1, 0) = Trim(mrcRC.Fields(1)) 'studentno            .TextMatrix(.Rows - 1, 1) = Trim(mrcRC.Fields(2)) 'cardno            .TextMatrix(.Rows - 1, 2) = Trim(mrcRC.Fields(3)) 'rechargecash            .TextMatrix(.Rows - 1, 3) = Trim(mrcRC.Fields(4)) 'date            .TextMatrix(.Rows - 1, 4) = Trim(mrcRC.Fields(5)) 'time                        mrcRC.MoveNext        Wend    End With    AutoColWidth Me, MfgRecharge                    '自动调整表格大小    '退卡    '把所有信息汇总到表格    txtSQL = "select * from CancelCard_Info where status='未结账' and UserID='" & ComLevel.Text & "'"    Set mrcCC = ExecuteSQL(txtSQL, msgtext)          cancelCash = 0                With MfgCancelCard        .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "日期"  'cash        .TextMatrix(0, 3) = "时间"  'date        .TextMatrix(0, 4) = "退卡金额"                  While mrcCC.EOF = False            .Rows = .Rows + 1            .CellAlignment = 4            .TextMatrix(.Rows - 1, 0) = Trim(mrcCC.Fields(0))  'studentno            .TextMatrix(.Rows - 1, 1) = Trim(mrcCC.Fields(1))   'cardno            .TextMatrix(.Rows - 1, 2) = Trim(mrcCC.Fields(2))   'date            .TextMatrix(.Rows - 1, 3) = Trim(mrcCC.Fields(3))   'time            .TextMatrix(.Rows - 1, 4) = Trim(mrcCC.Fields(6))   'cancelcash            cancelCash = cancelCash + mrcCC.Fields(6)            mrcCC.MoveNext        Wend    End With    AutoColWidth Me, MfgCancelCard                    '自动调整表格大小        '临时用户    txtSQL = "select * from Recharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'and source='注册'and type='临时用户'"    Set mrcTmp = ExecuteSQL(txtSQL, msgtext)        TmpCash = 0    With MSHFlexGrid4        .Rows = 1        .CellAlignment = 4      '居中        .TextMatrix(0, 0) = "学号"  'studentid        .TextMatrix(0, 1) = "卡号"  'cardid        .TextMatrix(0, 2) = "日期"  'date        .TextMatrix(0, 3) = "时间"  'time                  While mrcTmp.EOF = False            .Rows = .Rows + 1            .CellAlignment = 4            .TextMatrix(.Rows - 1, 0) = Trim(mrcTmp.Fields(1))  'studentno            .TextMatrix(.Rows - 1, 1) = Trim(mrcTmp.Fields(0))   'cardno            .TextMatrix(.Rows - 1, 2) = Trim(mrcTmp.Fields(5))    'date            .TextMatrix(.Rows - 1, 3) = Trim(mrcTmp.Fields(6))   'time                        TmpCash = cancelCash + mrcTmp.Fields(7)            mrcTmp.MoveNext        Wend    End With    AutoColWidth Me, MSHFlexGrid4                    '自动调整表格大小        txtSQL = "select * from Recharge_Info where status='未结账' and UserID='" & ComLevel.Text & "'"    Set mrcTmp = ExecuteSQL(txtSQL, msgtext)    Do While mrcTmp.EOF = False                        RechargeCash = RechargeCash + mrcTmp.Fields(3)            mrcTmp.MoveNext    Loop            '然后,把操作员 的所有统计 信息  汇总 到 汇总列表    labCardNo.Caption = Trim(mrcSD.RecordCount)    labCancelNo.Caption = Trim(mrcCC.RecordCount)    labRechargeCash.Caption = RechargeCash    lablinCash.Caption = TmpCash    labCancelCash.Caption = cancelCash    laballCardNo.Caption = Val(labCardNo.Caption) - Val(labCancelNo.Caption)    labAllCash = Val(labRechargeCash.Caption) - Val(labCancelCash.Caption)          mrcSD.Close         '关闭释放空间    mrcRC.Close    mrcCC.Close    mrcTmp.CloseEnd SubPrivate Sub SSTab1_Click(PreviousTab As Integer)    If SSTab1.Caption = "退出" Then                    Unload Me        Else            Call viewdate            End IfEnd Sub

你可能感兴趣的文章
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>
TP5.1事务操作和TP5事务回滚操作多表
查看>>
composer install或composer update 或 composer require phpoffice/phpexcel 失败解决办法
查看>>
TP5.1项目从windows的Apache服务迁移到linux的Nginx服务需要注意几点。
查看>>
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>