1. 程式人生 > >機房收費系統之下機

機房收費系統之下機

下機找好邏輯然後慢慢來,平靜下心來,其實也不難。 主要邏輯和上機還是挺像的。 如圖: 在這裡插入圖片描述 部分程式碼如下: 一、判斷卡號是否為空:

If Trim(txtCardno.Text) = "" Then
    MsgBox "請輸入卡號,卡號不能為空!", 48, "提示"
    Exit Sub '防止錯誤 3021

二、判斷此卡是否存在

Else
    txtsql = "select * from student_info where cardno='" & txtCardno.Text & "'"
    Set mrc = ExecuteSQL(txtsql, msgtext)
    If mrc.EOF = True Then
        MsgBox "此卡不存在,請重新輸入", 48, "提示"

三、檢查此卡是否登出

Else
    txtsql = "select * from student_info where cardno='" & txtCardno.Text & "'and status='不使用'"
    Set mrc = ExecuteSQL(txtsql, msgtext)
   	 If mrc.EOF = False Then
            MsgBox "此卡已經被登出,請重新輸入卡號", 48, "提示"
            txtCardno.Text = ""
            mrc.Close

四、檢查此卡是否上機

 Else
       txtsql = "select * from online_info where cardno='" & txtCardno.Text & "'"
        Set mrc = ExecuteSQL(txtsql, msgtext)
        If mrc.EOF = True Then
            MsgBox "此卡未上機,請輸入其他卡號!", 48, "提示"
            Exit Sub '防止出現錯誤 3021

五、計算消費金額,這裡只有小於兩分鐘的,大於兩分鐘的和計算消費餘額寫在了一起。

Else
            txtofftime.Text = Time
            txtoffdate.Text = Date
            txtlinetime.Text = DateDiff("n", txtOntime.Text, txtofftime.Text) '注意datediff函式的使用 n代表計算的單位,這裡是分鐘,後面依次是開始時間和結束時間。
            '計算消費金額
            '先判斷消費時間是否小於兩分鐘,如果小於兩分鐘,則不收費的
            txtsql = "select * from basicdata_info"
            Set mrc1 = ExecuteSQL(txtsql, msgtext)
            txtsql = "select* from student_info where cardno='" & txtCardno.Text & "'"
            Set mrc = ExecuteSQL(txtsql, msgtext)
            If txtlinetime.Text <= 2 Then
                txtconsume.Text = 0
                txtbalance.Text = mrc.Fields(7)
                   

六、計算消費餘額,用已有的錢減去消費的金額。這裡分為固定使用者和臨時使用者,臨時使用者是一小時三元錢,固定使用者是一小時兩元錢,這在basicbase表中有顯示。

If mrc.Fields(14) = "固定使用者" Then
      txtconsume.Text = (txtlinetime.Text / mrc1.Fields(2)) * mrc1.Fields(0)
         '計算消費餘額
      txtbalance.Text = Format(Val(mrc.Fields(7)) - Val(txtconsume.Text), "0.00")
 Else'如果不是固定使用者的話
      txtconsume.Text = (txtlinetime.Text / mrc1.Fields(2)) * mrc1.Fields(1)
     
     '計算消費餘額
      txtbalance.Text = Trim(Format(Val(mrc.Fields(7)) - Val(txtconsume.Text), "0.00"))
          
     End If

然後將資訊同步line表,將資訊從online表中刪除

  
                        '將下機的資訊寫到line表當中
                        txtsqlline = "select * from line_info"
                        Set mrcline = ExecuteSQL(txtsqlline, msgtext)
                        mrcline.AddNew
                        mrcline.Fields(8) = Trim(txtoffdate.Text)
                        mrcline.Fields(9) = txtofftime.Text
                        mrcline.Fields(10) = txtlinetime.Text
                        mrcline.Fields(11) = Val(txtconsume.Text)
                        mrcline.Fields(12) = Val(txtbalance.Text)
                        '將資訊從online表中刪除
                        txtsql = "select * from online_info"
                        Set mrc = ExecuteSQL(txtsql, msgtext)
                        Label15.Caption = mrc.RecordCount - 1
                        mrc.Delete
                        mrc.Update
                        mrc.Close

現在明白了,但當時弄了差不多一個上午,回過來看也不難。