机房收费系统之选择下机

      

 

       机房的上下机是是它的难点之一,主要是之前没有接触过类似的操作和应用,是学习对VB和数据库的新的应用。所以需要我们转变思路,去用另一个角度去思考它

       单纯主窗体的上下机来说,只要理清楚思路,画出流程图,把上机和下机的逻辑搞清楚,还是不是太难的,但是当下机学生过多时,我们不能一个学生一个学生的下机,所以为了方便,就有了选择下机和全部下机/

       选择下机和单独的下机相比,多了一个选择的功能,对软件使用者来说,可以完成多个学生卡号同时进行下机操作。在看了各位大神巨人的博客后,加上自己的总结,有了自己的选择下机的思路

       大致思路是,对选择的卡号做标记,进行选择下机操作后,判断是否存在做标记的卡号,将卡号一次赋值给一个变量,进行下机操作,再当前卡号下机完成后,将表中本条记录删除,判断表中是否还存在做标记的卡号,有,则继续进行下机操作,给变量赋值(下一个做标记的卡号)直到表中做标记的卡号全部完成下机操作,显示下机成功。

具体代码如下:

 

Rem:选择学生下机

Private Sub 选中学生下线_Click(Index As Integer)

博客

    Dim cnn As ADODB.Connection

    Dim txtSQL As String            '用来存放SQL语句,

    Dim txtsql1 As String

    Dim txtsql2 As String

    Dim txtSQL3 As String

    Dim txtSQL4 As String

 

    Dim msgText As String          '用来存放返回信息

    Dim mrc As New ADODB.Recordset

    Dim mrc1 As New ADODB.Recordset

    Dim mrc2 As New ADODB.Recordset

    Dim mrc3 As New ADODB.Recordset

    Dim mrc4 As New ADODB.Recordset     '是否上机

    Dim mrcOnline As New ADODB.Recordset

    Dim a As Integer   '计算消费时间

    Dim b As Integer    '计算消费金额

    Dim c As Integer    '计算余额

    Dim consumetime As String

    Dim consume As String

    Dim str As String   '获取选中内容

    Dim i As Integer

   

    '判断是否选中学生

    With myFlexgrid

        If .TextMatrix(.Row, 5) = "" Then     'If myFlexgrid.TextMatrix(i, 5) = "√" Then

        GoTo case2

    Else

        GoTo case1

    End If

    End With

    With myFlexgrid

case2:

    MsgBox "没有选中学生", , "提示"

     Exit Sub

case1:

        '获取选中卡号

        str = myFlexgrid.TextMatrix(myFlexgrid.Row, 0) 'TextMatrix方法

        '查询上机表

        txtSQL4 = "select * from ONLine_Info where cardno= '" & Trim(str) & "'"

        Set mrc4 = ExecuteSQL(txtSQL4, msgText)

            '计算上机时间

            OnTime = mrc4.Fields(9)     '上机时间

            '时间格式不一致,无法计算

            OffTime = Format(Now(), "yyyy-MM-dd H:mm:ss ")               '获取下机日期、时间

            consumetime = DateDiff("n", OnTime, OffTime)     '计算上机时间   n,代表返回的是分钟

 

            '判断上机时间

            txtsql2 = "select * from BasicData_Info where head = '" & UserName & "'"

            Set mrc2 = ExecuteSQL(txtsql2, msgText)

            '上下级记录

            strSQL = "select * from line_Info where Cardno='" & Trim(str) & "'and Status='正常上机'"

            Set mrc3 = ExecuteSQL(strSQL, msgText)

               

            If Not mrc3.EOF Then

                '判断用户类型

                '固定用户,小于准备时间

                If Trim(mrc4.Fields(1)) = "固定用户" And Trim(consumetime) < Trim(mrc2.Fields(4)) Then       '判断上机时间是否小于准备时间,是则消费金额为0

                    consume = 0

                    mrc3.Fields(8) = Date

                    mrc3.Fields(9) = Time

                    mrc3.Fields(10) = consumetime

                    mrc3.Fields(11) = consume

                Else

                End If

                '满足准备时间,少于最少上机时间,按60分钟收取费用

                If Trim(mrc4.Fields(1)) = "固定用户" And consumetime <= Trim(mrc2.Fields(2)) Then

                    consume = mrc2.Fields(5)     '计算固定用户金额

     

                    mrc3.Fields(8) = Date

                    mrc3.Fields(9) = Time

                    mrc3.Fields(10) = consumetime

                    mrc3.Fields(11) = consume       '消费金额

                Else

                End If

                '大于60分钟计算收费

                If Trim(mrc4.Fields(1)) = "固定用户" And consumetime > Trim(mrc2.Fields(2)) Then

                    '计算消费金额

                    consume = Int(mrc2.Fields(0) / 60 * Val(consumetime))     '计算固定用户金额

                    mrc3.Fields(8) = Date

                    mrc3.Fields(9) = Time

                    mrc3.Fields(10) = consumetime

                    mrc3.Fields(11) = Trim(consume)       '消费金额

                End If

            Else

                MsgBox "未查询到此用户", , "提示"

            End If

                '临时用户

 

                '计算消费金额 少于准备时间

                consume = Int(mrc2.Fields(1) / 60 * Val(consumetime))     '计算临时用户金额

                If Trim(mrc4.Fields(1)) = "临时用户" And Trim(consumetime) < Trim(mrc2.Fields(4)) Then        '判断上机时间是否小于准备时间,是则消费金额为0

                    consume = 0

                    mrc3.Fields(8) = Date

                    mrc3.Fields(9) = Time

                    mrc3.Fields(10) = consumetime

                    mrc3.Fields(11) = consume

                Else

           

                '判断大于准备时间,少于最少时间时,用户的消费金额和时间

                If Trim(mrc4.Fields(1)) = "临时用户" And consumetime <= Trim(mrc2.Fields(2)) Then      '满足准备时间,少于最少上机时间,按60分钟收取费用

                    consume = mrc2.Fields(5)

                    mrc3.Fields(8) = Date

                    mrc3.Fields(9) = Time

                    mrc3.Fields(10) = consumetime

                    mrc3.Fields(11) = Trim(consume)       '消费金额

                Else

                '大于60分钟,计算消费金额

                If Trim(mrc4.Fields(1)) = "临时用户" And consumetime > Trim(mrc2.Fields(2)) Then

                    consume = Int(mrc2.Fields(1) / 60 * Val(consumetime))     '计算临时用户金额

                    mrc3.Fields(8) = Format(Date, "yyyy-mm-dd")

                    mrc3.Fields(9) = Time

                    mrc3.Fields(10) = consumetime

                    mrc3.Fields(11) = Trim(consume)       '消费金额

                Else

                End If

                End If

                End If

                    '获取卡号信息,计算时间和金额

                    txtsql1 = "select * from student_Info where cardno= '" & Trim(str) & "'"

                    Set mrc1 = ExecuteSQL(txtsql1, msgText)

                    '计算余额

                    c = mrc1.Fields(7) - consume

                    '更新student表

                    mrc1.Fields(7) = c

                    mrc1.Update

                    '更新上下机表-Line_Info

                    mrc3.Fields(8) = Date

                    mrc3.Fields(9) = Time

                    mrc3.Fields(10) = consumetime

                    mrc3.Fields(12) = c

                    mrc3.Fields(13) = "正常下机"

                    mrc3.Update

                    '更新正在上机表--OnLine_Info

                    mrc4.Delete

                    mrc4.Update

                    '更新上机人数

                    myFlexgrid.RemoveItem myFlexgrid.Row '删除选中行

                    End With

                    With myFlexgrid

                        If .TextMatrix(.Row, 5) = "√" Then     'If myFlexgrid.TextMatrix(i, 5) = "√" Then

                        GoTo case1

                    Else

                        MsgBox "选中学生以下机", , "提示"

                    End If

                    End With

End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
机房收费管理系统 问题描述 结合我校计算机机房的运作模式,设计一种适合的收费管理系统,能够实现相关的人员检索,计时收费,管理汇总等功能模块。 开发环境 采用C或C++实现,VC++6.0 基本要求 主要功能模块: (1) 登录模块 (2) 上机管理模块 说明:上机登记时,余额不足3元或卡处于挂失状态,则拒绝登记。 每位同学的一次上机形成一条记录,每30秒遍历一次上机记录表,对表中所有正上机字段为TRUE的记录的上机用时增加30秒,同时减少上机卡表中的余额。 (3) 上机卡管理模块 (4) 充值挂失模块 (5) 查找统计模块:统计某天上机的总时数、每次上机的平均时数和机房的收入;某学生上机的次数、上机总时数、每次上机平均时间;挂失和查询余额。 参考的数据结构: 上机卡(卡号,姓名,专业班级,余额,状态),状态有:正常和挂失。 上机记录(卡号,上机日期,开始时间,上机用时,正上机,管理号代码) 上机记录表永久保存,用于事后查询和统计。 设计要求 1) 界面友好,输入信息符合逻辑:如上机时间设定在合理的时间范围。 2) 能从实践生活出发,设计合理的功能模块 3) 各类信息的数据结构明晰 4) 可根据自身生活体验添加相关功能模块。 拓展功能要求 鼓励采用Turbo C/C++、MFC等开发工具,实现彩色或图形操作界面。鼓励引入小型数据作为处理数据的来源,拓展知识面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值