机房收费系统——下机

上下机是机房收费系统中比较重要的一部分,所以我们一定要把上下机的思路理清楚才可以,不然会很乱,一会儿就把自己绕进去了,现在我们一起分析一下下机的思路吧!
在这里插入图片描述

代码片段:
判断上下机的情况

  Private Sub cmdOffLine_Click()
    Dim mrconline As ADODB.Recordset
    Dim mrconline2 As ADODB.Recordset
    Dim mrcStudent As ADODB.Recordset
    Dim mrcbasic As ADODB.Recordset
    Dim mrcline As ADODB.Recordset
    Dim mrcline2 As ADODB.Recordset
    Dim mrc As ADODB.Recordset
    
    Dim time1 As Long
    Dim time2 As Long
    Dim time3 As Long
    
    Dim msgtext As String
    Dim txtsql1 As String
    Dim txtsql2 As String
    Dim txtsql3 As String
    
    '消费时间
    Dim consumetime As String
    
    '连接表
    
    
    txtsql2 = "select * from basicdata_info" '从数据表中获取基本数据
    Set mrcbasic = ExecuteSQL(txtsql2, msgtext)
    
     txtsql3 = "select * from student_info where cardno='" & Trim(txtCardNo.Text) & "'and status='" & "使用" & "'" '得出余额
    Set mrcStudent = ExecuteSQL(txtsql3, msgtext)
    
    If txtCardNo.Text = "" Then
            MsgBox "请输入卡号!", 0 + 48, "警告"
        Else
        
        '判断此卡是否已经下机
        txtsql1 = "select * from online_info where cardno= '" & Trim(txtCardNo.Text) & "'"
        Set mrconline = ExecuteSQL(txtsql1, msgtext)
            If mrconline.EOF = True Then
                MsgBox "没有上机"
               
            Else
                
            '从online_info数据表中获取数据到下机界面
                txtSID.Text = mrconline.fields(2)
                txtDept.Text = mrconline.fields(4)
                txttype.Text = mrconline.fields(1)
                txtName.Text = mrconline.fields(3)
                txtSex.Text = mrconline.fields(5)
                txtOndate.Text = mrconline.fields(6)
                txtOffDate.Text = Date
                txtOntime.Text = mrconline.fields(7)
                txtOffTime.Text = Time

计算消费时间和消费金额

    '计算上机时间
            consumetime = Abs(Val(DateDiff("n", Trim(mrconline!Date), Now))) '把日期差转换成分钟
            '判断是否小于准备时间
            txtCtime.Text = consumetime
            mrconline.Update
            
            If consumetime < mrcbasic.fields(4) Then
              
                txtCMoney.Text = "0"
                txtCtime.Text = "0"
                txtBalance.Text = Trim(mrcstudent.fields(7))
            Else
            '判断是否小于最小上机时间
                '判断消费时间小于最小上机时间时消费金额为1
                If consumetime > mrcbasic!leasttime Then
                    
                    txtCMoney.Text = "1" '消费金额为1元
                    txtBalance.Text = Val(mrcstudent.fields(7)) - Val(txtCMoney.Text)
                Else

            
                    If mrconline.fields(1) = "固定用户" Then
                        txtCMoney.Text = Round((mrcbasic.fields(0) / 60 * consumetime)) 'cdbl将时间转换成double类型,round是将数据四舍五入,保留两位小数
                        
                        txtBalance.Text = Val(mrcstudent.fields(7)) - Val(txtCMoney.Text)
                        
                    Else
                        txtCMoney.Text = Round((mrcbasic.fields(1) / 60 * consumetime)) '计算临时用户金额
                        txtBalance.Text = Val(mrcstudent.fields(7)) - Val(txtCMoney.Text)
                        
                        mrcstudent.fields(7) = Trim(txtBalance.Text)
                        mrcstudent.fields(11) = "未结账"
                        mrcstudent.Update
                        
                        txtCtime.Text = consumetime
              
                    
                    End If
            End If
        End If

    End If
    End If

更新记录

txtsql = “select * from line_info where ontime=’” & Trim(txtOntime.Text) & “‘and cardno=’” & Trim(txtCardNo.Text) & “’”
Set mrcline2 = ExecuteSQL(txtsql, msgtext)

If mrcline2.EOF = True Then
    MsgBox "该用户没有上机记录,请退出!", 0 + 46, "提示"
Else

mrcline2.fields(8) = Date
mrcline2.fields(9) = Time
mrcline2.fields(10) = Trim(txtCtime.Text)
mrcline2.fields(11) = Val(txtCMoney.Text)
mrcline2.fields(12) = Val(txtBalance.Text)
mrcline2.fields(13) = "正常下机"

mrcline2.Update
mrcline2.MoveNext
    MsgBox "下机成功", 0 + 48, "提示"
    

mrconline.Delete
mrconline.Update

End If

以上内容就是上下机的具体代码!上下机是机房的核心部分,也是最关键的部分,所以一定要一次性的把它做好,不然后期优化还会再找麻烦的,下机一般不同的人有不同的写法, 以下是我遇到的两个思路:

**1、先判断online_info表中是否有记录,若有则代表该卡正在上机,若没有则代表该卡已经下机!

2、判断line_info表中是否有“正常下机”的记录,若有则代表已经下机,若没有则代表正在上机!**

第二种思路可能会有漏洞,因为一个卡号如果多次上下机的话会出现错误,我刚开始就用的第二种思路,但是发现这种思路如果一直走下去的会很麻烦,所以还不如换个方向呢,于是我就采取了第一种思路,这种思路还是比较简单的,同时也是我上面的思路,建议大家用第二种方法,会节省不少代码量!
以上就是下机的思路和代码,如果有不合适的代码,欢迎大家给我指正!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值