机房收费系统——上机状态查询之下机

前言:

这部分内容整整花费了四天的时间,不过细细想来,自已想要的结果全都实现了!心里还是蛮骄傲的,接下来给大家展示一下这部分的成果

1、简单说明

这部分的内容分为查询、显示全部、上机管理、退出四个部分,查询与退出都不给予说明,这里面其实最难的就是上机管理中的选择下机了!既然是选择下机那么就可以实现一次性选择多条语句,并且可以同时下机!这样才符合实际需求,接下来给大家看一张图!这就实现了要达到的效果!

这里写图片描述

2、代码思想

全部下机相信大家都能实现了,可是选择下机就没那么好实现了,因为有的需要下机,有的不需要下机,这时候你就需要把所有带“√”的记录都放进一个容器,这个容器就是存储都需要下机的机器,因为这个容器里的内容全都是需要下机的机器,所以这样接下来就和全部下机的思想一样了!
这里写图片描述

3、代码展示

这里只展示选择下机的代码了,全部下机的代码大同小异

 Dim Bob As Boolean '用来标记是否点击显示全部按钮的状态,最开始默认的是false,点击显示全部按钮后,值为true
 Dim txtsql As String
 Dim MsgText As String
 Dim mrc As ADODB.Recordset   '代表online_info表
 Dim mrc1 As ADODB.Recordset   '代表Online_Info中有时间限制
 Dim mrc2 As ADODB.Recordset  '代表line表
 Dim mrc3 As ADODB.Recordset '代表basicdate
 Dim mrc4 As ADODB.Recordset  ' 代表学生 student_info表
'选择下机
Private Sub mnu1selectStuOutline_Click()
    Dim sz(9999) As String  '这是一个数组,用来存储带“√”的学号
    Dim xh(9999) As String  '用来存储带“√”的msflexgrid1的行号
    Dim txtCash As String
    Dim consumetime As String
    Dim consume As String
    Dim z As Integer  '存带“√”的学号用到的变量
    Dim i As Integer  '改变颜色时候调用的变量
    Dim s As Integer  '存带“√”的msflexgrid1的行号用到的变量
    With MSFlexGrid1

'记录选中下机的卡号,在最后一行加了一个勾,将这些记录的所有的卡号信息全部存到数组sz中!
    i = 0
    For j = 1 To .Rows - 1
        If .TextMatrix(j, 5) = "√" Then
            sz(i) = .TextMatrix(j, 0)  '存的是卡号
            xh(i) = Val(j)
            i = i + 1
        End If
    Next j

    For Z = 0 To i - 1      '数组是从0开始的
 '更新了表online_info与表line info中的信息
    txtsql = "select * from basicdata_info"
        Set mrc3 = ExecuteSQL(txtsql, MsgText)

        txtsql = "select * from student_Info where cardno='" & sz(Z) & "'" & "and status='使用" & "'"
        Set mrc4 = ExecuteSQL(txtsql, MsgText)

        txtsql = "select * from Online_Info where cardno='" & sz(Z) & "'"
        Set mrc1 = ExecuteSQL(txtsql, MsgText)

   '计算消费时间
       consumetime = DateDiff("n", Trim(mrc1!Date), Now)
   '计算消费金额

        '如果消费时间小于准备时间则不收钱,如果大于准备时间小于最短上机时间则半价,如果大于最短上机时间则正常收费
           If Val(consumetime) <= Val(mrc3!prepareTime) Then
               consume = "0"
           Else
               If Val(consumetime) < Val(mrc3!leastTime) Then
                   If Trim(mrc4!Type) = Trim("固定用户") Then
                       consume = 0.5 * mrc3!Rate
                   Else
                       consume = 0.5 * mrc3!tmprate
                   End If
               Else
                   If Val(consumetime) Mod Val(mrc3!unitTime) = 0 Then
                       t = Int(consumetime / mrc3!unitTime)
                   Else
                       t = Int(consumetime / mrc3!unitTime) + 1
                   End If
                   If Trim(mrc4!Type) = Trim("固定用户") Then
                       consume = t * mrc3.Fields(0)
                   Else
                       consume = t * mrc3.Fields(1)
                   End If
               End If
           End If
     '计算余额(上机时候的余额显示减去消费金额)
        txtCash = Val(mrc4!cash) - Val(consume)
    '更新数据到line_info表    
        txtsql = "update Line_info set offdate='" & Date & "'" & ", offtime='" & Time & "'" & " ,consumetime='" & consumetime & "'" & ",consume='" & consume & "'" & ",cash='" & txtCash & "'" & " ,status='" & "正常下机" & "'" & " where cardno='" & sz(Z) & "'"
        Set mrc1 = ExecuteSQL(txtsql, MsgText)
   '更新表online_info     
        txtsql1 = "delete online_info where cardno='" & sz(Z) & "'"
        Set mrc = ExecuteSQL(txtsql1, MsgText)
    Next Z

   '更新msflexgrid1的界面! 
    For s = 0 To i - 1
        .RemoveItem xh(s)
    Next s

  End With
End Sub

'msflexgrid1的设计
Private Sub msflexgrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
‘如何选中不连续的行
     Dim col As Integer
     If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√" Then
        MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = ""
     '改变行颜色(变为没选中之前的)
      For col = 0 To MSFlexGrid1.Cols - 1
        MSFlexGrid1.col = col
        MSFlexGrid1.CellBackColor = vbWhite
      Next col
      Else
        MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√"
        '改变行颜色(选中后的颜色)
     For col = 0 To MSFlexGrid1.Cols - 1
        MSFlexGrid1.col = col
        MSFlexGrid1.CellBackColor = &HFFFF00 
      Next col
     End If

'判断是否选中数据,如果选中数据那么就会让你的修改按钮为激活装态
   If (MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√") Then
        mnu1selectStuOutline.Enabled = True
   Else
       mnu1selectStuOutline.Enabled = False
   End If  
End Sub

后记:

这些东西真的是太痛苦了,想了好多天,期中也多亏了靖凡同志和赵雷同志的帮忙!现在总结了出来,希望对大家有所帮助!

评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值