⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmain.frm

📁 提供一个网吧管理系统的VB源代码供大家学习
💻 FRM
📖 第 1 页 / 共 5 页
字号:
Select Case Data1.Recordset.Fields("状态")
Case "Y", "P"
'TabStrip1.Tabs(2).Selected = True
 cdJF3_Click
Case "N", "S"
'TabStrip1.Tabs(1).Selected = True
cdJF1_Click
End Select

'Image2.Visible = True
'Form_Resize
End Sub

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
On Error Resume Next
StatusBar1.Panels(1).Text = ListView1.ToolTipText
SelectComputer = Item.Index

With Data1.Recordset

.MoveFirst
'MsgBox Item.Index
.Move Item.Index - 1
 SelectJSJ

End With
ListView1.SetFocus

End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 2 Then
    If cdJF1.Enabled = True Then
    PopupMenu cdJF, , , , cdJF1
    Else
    PopupMenu cdJF, , , , cdJF3
    End If
  End If
End Sub



Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'移动鼠标
'ListView1.HitTest(x, y).Text
On Error Resume Next
Select Case ListView1.HitTest(X, Y).Icon
Case 3
 tt = "正在记费中"
Case 2
 tt = "已经关机"
Case 5
 tt = "正在待机中"
End Select

ListView1.ToolTipText = ListView1.HitTest(X, Y).Text & "状态:" & tt
If Err <> 0 Then ListView1.ToolTipText = ""
'StatusBar1.Panels(1).Text = ListView1.ToolTipText
End Sub


Private Sub Timer1_Timer()
StatusBar1.Panels(3).Text = Format(Now, "yyyy年mm月dd日hh:nn:ss  ") & GetWeek(Date)
End Sub

Public Sub Timer2_Timer()
'每分钟刷新一次
On Error Resume Next
'a = CountJF
'ListView1_ItemClick ListView1.SelectedItem
With Data1.Recordset
Y = 0
n = 0
s = 0
p = 0
aa = .AbsolutePosition
.MoveFirst
For i = 1 To .RecordCount
FlashListView i

Select Case .Fields("状态")
Case "Y"
 st = 3
 Y = Y + 1
 If .Fields("到点时间") < Now Then
 For j = 0 To Winsock1.Count - 1
 ' MsgBox Winsock1(j).RemoteHostIP
 If Winsock1(j).RemoteHostIP = .Fields("IP") Then
   Winsock1(j).SendData "_comm" + Chr(0) + "stop" + Chr(0) + "OK$"
   ' "_comm" + Chr(0) + "stop"
   DoEvents
   Winsock1(j).SendData "_msgb" + Chr(0) + "你所定的时间已经到了,请到吧台去结帐!" + Chr(0) + "OK$"
   DoEvents
   Exit For
 End If
 Next j
 
  If SupperMsgbox(.Fields("名称") & " 时间到了,是否要结帐?" & vbCrLf & _
            "先择[确定]进入结帐界面,否则继续记费!", vbOKCancel) = vbOK Then
   ListView1.ListItems(i).Selected = True
   ListView1_ItemClick ListView1.ListItems(i)
   TabStrip1.Tabs(2).Selected = True
  Else
   .Edit
    .Fields("到点时间") = Null
   .Update
     For j = 0 To Winsock1.Count - 1
        If Winsock1(j).RemoteHostIP = .Fields("IP") Then
        Winsock1(j).SendData "_comm" + Chr(0) + "start" + Chr(0) + "OK$"
        DoEvents
       Exit For
     End If
     Next j
   Timer2_Timer
  End If
 End If
Case "N"
 n = n + 1
 st = 2
Case "S"
 st = 5
 s = s + 1
 findIt = False
 For j = 0 To Winsock1.Count - 1
  If Winsock1(j).RemoteHostIP = .Fields("IP") And .Fields("IP") <> "" Then
   .Edit
   .Fields("状态") = "S"
   .Update
   findIt = True
  End If
 Next j
 If findIt = False Then
    .Edit
   .Fields("状态") = "N"
   .Update
   st = 2
 End If
Case "P"
 p = p + 1
 st = 4
End Select
ListView1.ListItems(i).SmallIcon = st
ListView1.ListItems(i).Icon = st
.MoveNext
Next i

StatusBar1.Panels(2).Text = Y & "台记费中 " & p & "台暂停中"
.MoveFirst
.Move aa
End With
End Sub





Private Sub txtSJName_Change()
On Error Resume Next
 comSjZhengJi.Text = ""
 txtZhengJian.Text = ""
      With Data9.Recordset
For i = 0 To txtSJName.ListCount - 1
    If txtSJName.Text = txtSJName.List(i) Then
    .MoveFirst
    .Move txtSJName.ItemData(i)
    comSjZhengJi.Text = .Fields("证件")
    txtZhengJian.Text = .Fields("证件号码")
    End If
Next i

End With
End Sub



Private Sub Winsock1_Close(Index As Integer)
'计算机关机
On Error Resume Next
With Data1.Recordset
     aa = .AbsolutePosition
     .MoveFirst
     For i = 1 To .RecordCount
        If .Fields("IP") = IndexSock(Index).Ip Then
            If .Fields("状态") = "S" Then
              .Edit
               .Fields("状态") = "N"
              .Update
              ListView1.ListItems(i).Icon = 2
              ListView1.ListItems(i).SmallIcon = 2
            End If
        End If
        .MoveNext
     Next i
     .MoveFirst
     .Move aa
     Timer2_Timer
End With
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'当接到信息时
 Dim strData As String
     Dim comm As String
      Dim findIt As Boolean
 Dim ThisStr() As String, cc As Long
 On Error Resume Next
 Winsock1(Index).GetData strData, vbString
 Select Case Left(strData, 5)
  Case "_talk"
     XianShiTalk strData, Index
  Case "_comm"
    comm = ""
    cc = 0
    For i = 1 To Len(strData)
     a$ = Mid(strData, i, 1)
     If a$ = Chr(0) Then
     cc = cc + 1
     Else
     If cc = 1 Then comm = comm + a$
     End If
    Next i
    Select Case comm
    Case "start"
    If frmScreen.Visible = True Then
     Winsock1(Index).SendData "_msgb" + Chr(0) + "主机已被锁定,请稍后再试!" + Chr(0) + "OK$"
     DoEvents
     Exit Sub
    End If
    Unload frmScreen
      With Data1.Recordset
      aa = .AbsolutePosition
      .MoveFirst
      For i = 1 To .RecordCount
      If .Fields("IP") = Winsock1(Index).RemoteHostIP Then
        pd = vbNo
        pd = SupperMsgbox(.Fields("名称") & "要求开机,是否同意?", vbYesNo)
         If pd = vbYes Then
             txtSJName = ""
             txtZhengJian = ""
            comSjZhengJi.Text = ""
            Winsock1(Index).SendData "_comm" + Chr(0) + "start" + Chr(0) + "OK$"
            DoEvents
            .Edit
            .Fields("状态").Value = "Y"
            .Fields("开始时间").Value = Now
            .Fields("客户姓名") = txtSJName
            .Fields("客户证件") = comSjZhengJi
            .Fields("证件号码") = txtZhengJian
            .Fields("上机方式") = "N"
            .Update
            Timer2_Timer
          End If
            Exit Sub
      End If
      .MoveNext
      Next i
      .MoveFirst
      .Move aa
      End With
    End Select
  Case "_good" '商品
   
    If frmScreen.Visible = True Then
     Winsock1(Index).SendData "_msgb" + Chr(0) + "主机已被锁定,请稍后再试!" + Chr(0) + "OK$"
     DoEvents
     Exit Sub
    End If
    Unload frmScreen
    cc = 0
           ReDim Preserve ThisStr(cc) As String
    For i = 1 To Len(strData)
        ab$ = Mid(strData, i, 1)
        If ab$ = Chr(0) Then
            cc = cc + 1
            ReDim Preserve ThisStr(cc) As String
        Else
            ThisStr(cc) = ThisStr(cc) + ab$
        End If
     Next i
     sps = ""
     'MsgBox thisStr(1)
      For i = 1 To cc Step 3
       sps = sps + ThisStr(i + 1) + Space(50 - LenB(StrConv(ThisStr(i + 1), vbFromUnicode))) & "数量:" & ThisStr(i + 2) & vbCrLf
      Next i
      With Data1.Recordset
      aa = .AbsolutePosition
      .MoveFirst

      For i = 1 To .RecordCount
         If .Fields("IP") = Winsock1(Index).RemoteHostIP Then
               If SupperMsgbox(.Fields("名称") & "要求选择下列商品,是否同意?" + vbCrLf + sps, vbYesNo, "有人要商品", 90) = vbYes Then
                Winsock1(Index).SendData "_msgb" + Chr(0) + "请您稍候,马上把你要的商品送到!" + Chr(0) + "OK$"
                For j = 1 To cc Step 3
                     Data3.Recordset.MoveFirst
                     For k = 1 To Data3.Recordset.RecordCount
                     If ThisStr(j) = Data3.Recordset.Fields("商品编号") Then
                      Data3.Recordset.Edit
                      Data3.Recordset.Fields("库存数量") = Data3.Recordset.Fields("库存数量") - Val(ThisStr(j + 2))
                      Data3.Recordset.Update
                      Exit For
                     End If
                      Data3.Recordset.MoveNext
                    Next k
                     Data2.Recordset.MoveFirst
                    For k = 1 To Data2.Recordset.RecordCount
                    
                        If Data2.Recordset.Fields("商品编号") = ThisStr(j) And Data2.Recordset.Fields("机号") = .Fields("机号") Then
                             findIt = True
                              Exit For
                         End If
                     Data2.Recordset.MoveNext
                    Next k
                    If findIt = True Then
                        Data2.Recordset.Edit
                    Else
                        Data2.Recordset.AddNew
                    End If
                    Data2.Recordset.Fields("机号") = .Fields("机号")
                    Data2.Recordset.Fields("商品编号") = ThisStr(j)
                    Data2.Recordset.Fields("数量") = Data2.Recordset.Fields("数量") + Val(ThisStr(j + 2))
                    Data2.Recordset.Fields("时间") = Now
                    Data2.Recordset.Update

                Next j
                DoEvents
               End If
               Exit Sub
         End If
         .MoveNext
      Next i
      Timer2_Timer
      .MoveFirst
      .Move aa
      End With
  Case "_gets" '获取
       ReDim ThisStr(4) As String
    cc = 0
    For i = 1 To Len(strData)
        a$ = Mid(strData, i, 1)
        If a$ = Chr(0) Then
            cc = cc + 1
        Else
            ThisStr(cc) = ThisStr(cc) + a$
        End If
     Next i
    Select Case ThisStr(1)
    Case "good"
        With Data3.Recordset
            .MoveFirst
            strData = "_gets" + Chr(0) + "good" + Chr(0)
            For i = 1 To .RecordCount
                strData = strData + .Fields("商品编号") + Chr(0) + .Fields("商品名称") + Chr(0) + CStr(.Fields("零售价格")) + Chr(0)
                .MoveNext
            Next i
            Winsock1(Index).SendData strData + Chr(0) + "OK$"
            DoEvents
        End With
    Case "time"
     For i = 0 To Winsock1.Count - 1
      If Index = IndexSock(i).Index Then
        'ListView1.ListItems(IndexSock(i).JSJ).Text
        Winsock1(Index).SendData "_msgb" + Chr(0) + "您的上机情况是:" + vbCrLf + _
                        "开始时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(1) + vbCrLf + _
                        "到点时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(2) + vbCrLf + _
                        "已用时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(3) + vbCrLf + _
                        "暂停时间:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(4) + vbCrLf + _
                        "金    额:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(5) + vbCrLf + _
                        "其他费用:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(6) + vbCrLf + _
                        "总 金 额:" + ListView1.ListItems(IndexSock(i).JSJ).SubItems(7) + Chr(0) + "OK$"
        DoEvents
        DoEvents
        Exit Sub
      End If
     Next i
    Case "card"
     Data6.Recordset.MoveFirst
      For i = 1 To Data6.Recordset.RecordCount
       'MsgBox Data6.Recordset.Fields("卡号"), , thisStr(2)
       If Data6.Recordset.Fields("卡号") = ThisStr(2) Then
        If Data6.Recordset.Fields("密码") = ThisStr(3) Then
        Winsock1(Index).SendData "_msgb" + Chr(0) + "你要查的卡号是:" + Data6.Recordset.Fields("卡号") + vbCrLf + _
                                       "总金额为:" + Format(Data6.Recordset.Fields("总金额"), "###0.0元") + "    总机时为:" + Format(Data6.Recordset.Fields("总机时"), "###0.00小时") + vbCrLf + _
                                       "已用机时:" + Format(Data6.Recordset.Fields("已用机时"), "###0.00小时") + vbCrLf + _
                                       "剩余金额:" + Format(Data6.Recordset.Fields("金额"), "###0.0元") + Chr(0) + "OK$"
        Else
        Winsock1(Index).SendData "_msgb" + Chr(0) + "您所输入的密码错误!" + Chr(0) + "OK$"
        End If
            DoEvents
            Exit Sub
       End If

        Data6.Recordset.MoveNext
       Next i
        Winsock1(Index).SendData "_msgb" + Chr(0) + "您所输入的卡号错误!" + Chr(0) + "OK$"
        DoEvents

    End Select
     DoEvents
  Case "_ereg"
  Case "_sets"
  Case "_vali"
    ReDim ThisStr(3) As String
    cc = 0
    For i = 1 To Len(strData)
        a$ = Mid(strData, i, 1)
        If a$ = Chr(0) Then
            cc = cc + 1
        Else
            ThisStr(cc) = ThisStr(cc) + a$
        End If
     Next i
     'MsgBox thisStr(3)
     Select Case ThisStr(3)
     Case "setup", "close", "shutdown" '如果是设置
        With Data8.Recordset
            .MoveFirst
            For i = 1 To .RecordCount
            If .Fields("用户名称") = ThisStr(1) And .Fields("用户密码") = ThisStr(2) Then
             If (ThisStr(3) = "close" Or ThisStr(3) = "setup") And .Fields("权限") < "C" Then
                Winsock1(Index).SendData "_msgb" + Chr(0) + "验证用户名权限不够!" + Chr(0) + "OK$"
                DoEvents
                Exit Sub
             End If
             Winsock1(Index).SendData "_comm" + Chr(0) + ThisStr(3) + Chr(0) + "OK$"
             DoEvents
             Exit Sub
            End If
            .MoveNext
            Next i
            Winsock1(Index).SendData "_msgb" + Chr(0) + "验证用户名或密码错误,不能完成指令!" + Chr(0) + "OK$"
            DoEvents
        End With
     Case "cardend"
        If frmScreen.Visible = True Then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -