第一次機房收費系統問題和感受

在找師傅之前,先找小夥伴們挑了兩邊錯,出了很多的問題之後又找了師傅還是出了問題,下面是我出的問題得總結。

在驗項目之前

1.上下機邏輯問題
之前我一直將系統的初衷理解錯了,所以我在設計的時候時在上機了一個號之後就不可以上機了(cmdOK.Enabled=True)(下機亦是如此),後來發現理解錯了,後來刪除了這一行程序。
2.查看上機狀態的窗體中下機後仍然可查詢
產生這個問題的原因是將選中或者全部下機後,僅僅將line_info中的時間等內容改了過來,忘記刪除了online_info表裏的相關數據,以致於可以查詢出來。
3.MSHFlexGrid控件點擊多次查詢,出現重複記錄
這個問題產生的原因是在點擊查詢的時候沒有將之前的內容刪除,導致的問題,添加以下程序即可:

Private Sub cmdInquery_Click()
    MSHFlexGrid.Clear
        With MSHFlexGrid
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡號"
        .TextMatrix(0, 1) = "姓名"
        .TextMatrix(0, 2) = "上機日期"
        .TextMatrix(0, 3) = "上機時間"
        .TextMatrix(0, 4) = "下機日期"
        .TextMatrix(0, 5) = "下機時間"
        .TextMatrix(0, 6) = "消費金額"
        .TextMatrix(0, 7) = "餘額"
        .TextMatrix(0, 8) = "備註"
    End With
    End Sub

4.在改密碼後點擊取消仍然要退出系統重新登陸
添加一個變量用於判斷消息框結果

Private Sub cmdOK_Click()
    Dim a As VbMsgBoxResult
    a = MsgBox("密碼已修改完畢,是否重新登錄?", vbOKCancel + vbQuestion, "提示")
    If a = vbOK Then
         Unload Me
         Unload frmMain
         frmLogin.Show
     End If
End Sub     

5.全部刪除但還是一條一條刪除
之前試過全部刪除,用for…next循環但是錯誤沒有改過來,就是一直出現下標越界的問題,一直就是改不過來後來問了幾個小夥伴解決了這個問題,我之前時從第一行檢索到最後一行,後來是改到了最後一行到第一行,又進行小部分的改變,以下是整改之後的程序例子如下:

Private Sub cmdDelete_Click()
    Dim line As Integer '定義行數
    Dim a As VbMsgBoxResult '定義消息框結果
    Dim i As Integer '定義一個整型變量,用戶判斷刪除記錄數
    '對user_info表操作
    Dim mrcuser As ADODB.Recordset '用於存放記錄集 '用戶存放記錄集
    Dim userSQL As String '用於存放SQL語句 '用於存放SQL語句
    Dim userMsgText As String '用於存放返回信息 '用戶存放返回信息
    i = 0 '初始值i等於0
    a = MsgBox("確定所選刪除用戶嗎?", vbOKCancel + vbQuestion, "詢問")
    '當a爲OK時進行刪除記錄,否則退出記錄
    If a = vbOK Then
        '以MSHFlexGrid控件的行數爲基礎做循環,進行刪除記錄
        For line = MSHFlexGrid.Rows To 1 Step -1
            '判斷是否選中
            If MSHFlexGrid.TextMatrix(line - 1, 3) = "√" Then
            
                userSQL = "select * from user_info where userID='" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & "'"
                Set mrcuser = ExecuteSQL(userSQL, userMsgText)
                
                '當MSHFlexGrid裏的第一列內容和本機登錄的內容一樣時不允許刪除
                If Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) = Trim(frmLogin.txtUserName.Text) Then
                    MsgBox "用戶:" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & " 正在登錄,無法刪除!", vbOKOnly + vbExclamation, "警告"
                Else
                    '刪除MSHFlexGrid和數據表中的數據
                    i = i + 1
                    MSHFlexGrid.RemoveItem line - 1
                    mrcuser.Delete
                    mrcuser.Close
                End If
            End If
        Next line
    If i <> 0 Then
            MsgBox "刪除用戶成功!", vbOKOnly + vbInformation, "提示"
    Else
        MsgBox "請選擇所刪除的用戶!", vbOKOnly + vbInformation, "提示"
        Exit Sub '退出過程
    End If
                
End Sub

6.函數應用的問題
對VB中的各個函數用法不是很靈活,出了以些小錯誤。
7.登錄錯誤次數過多時沒有彈出消息框自動退出系統
當時由於急於求成,急於快點寫完程序,忘記了添加代碼,後來又忘了這件事,導致出現問題。
8.出現的以下細節方面的問題
由於沒注意到從而出現一些小問題,例如強制下機,時間超過當前日期,粘貼問題的等等。解決方法見以下博客:
https://blog.csdn.net/TGB__15__ZYB/article/details/97781785

在驗收項目之後

1.在上機狀態顯示全部時,點擊多次出現重複
這個真沒注意到,前面未驗收前想到過這個問題,但是這個窗忽略了,以致於出了錯。解決方法同上

Private Sub cmdInquery_Click()
    MSHFlexGrid.Clear
        With MSHFlexGrid
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡號"
        .TextMatrix(0, 1) = "姓名"
        .TextMatrix(0, 2) = "上機日期"
        .TextMatrix(0, 3) = "上機時間"
        .TextMatrix(0, 4) = "下機日期"
        .TextMatrix(0, 5) = "下機時間"
        .TextMatrix(0, 6) = "消費金額"
        .TextMatrix(0, 7) = "餘額"
        .TextMatrix(0, 8) = "備註"
    End With
    End Sub

2.註冊重複
當時只是着急實現功能,忘記了判斷重複,在註冊時,沒有想到判斷重複的問題,出了錯誤。
3.退卡等窗體在顯示文本的文本框屬性不妥
對僅僅用於顯示的文本框,應該改變一下邊框形式,即重新設置文本框的“BorderStyle”屬性,選擇合適的屬性值
4.在添加和刪除用戶時刪除了正在登錄的用戶
在刪除的時候連接User_info表,查看是否用戶正在登錄,如果是則不允許刪除,移動到下一個,否則允許刪除代碼如下:

Private Sub cmdDelete_Click()
    Dim line As Integer '定義行數
    Dim a As VbMsgBoxResult '定義消息框結果
    Dim i As Integer '定義一個整型變量,用戶判斷刪除記錄數
    '對user_info表操作
    Dim mrcuser As ADODB.Recordset '用於存放記錄集 '用戶存放記錄集
    Dim userSQL As String '用於存放SQL語句 '用於存放SQL語句
    Dim userMsgText As String '用於存放返回信息 '用戶存放返回信息
    i = 0 '初始值i等於0
    a = MsgBox("確定所選刪除用戶嗎?", vbOKCancel + vbQuestion, "詢問")
    '當a爲OK時進行刪除記錄,否則退出記錄
    If a = vbOK Then
        '以MSHFlexGrid控件的行數爲基礎做循環,進行刪除記錄
        For line = MSHFlexGrid.Rows To 1 Step -1
            '判斷是否選中
            If MSHFlexGrid.TextMatrix(line - 1, 3) = "√" Then
            
                userSQL = "select * from user_info where userID='" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & "'"
                Set mrcuser = ExecuteSQL(userSQL, userMsgText)
                
                '當MSHFlexGrid裏的第一列內容和本機登錄的內容一樣時不允許刪除
                If Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) = Trim(frmLogin.txtUserName.Text) Then
                    MsgBox "用戶:" & Trim(MSHFlexGrid.TextMatrix(line - 1, 0)) & " 正在登錄,無法刪除!", vbOKOnly + vbExclamation, "警告"
                Else
                    '刪除MSHFlexGrid和數據表中的數據
                    i = i + 1
                    MSHFlexGrid.RemoveItem line - 1
                    mrcuser.Delete
                    mrcuser.Close
                End If
            End If
        Next line
    If i <> 0 Then
            MsgBox "刪除用戶成功!", vbOKOnly + vbInformation, "提示"
    Else
        MsgBox "請選擇所刪除的用戶!", vbOKOnly + vbInformation, "提示"
        Exit Sub '退出過程
    End If
                
End Sub

5.對日結賬單和周結賬單的認識不足
當時就沒有明白日結賬單和周結賬單是怎麼回事,就直接將數據庫中checkday_info表和checkweek_info表中的數據顯示在兩個窗體中,但是後來師傅說了,日結僅僅時顯示當天的數據,周結根據日期顯示數據,後來才明白是怎麼回事,改了過了。

第一次機房的感受

這次的機房可以說是讓我痛不欲生啊,程序是在學校的時候寫的,當時正好還有一個月期末考試,想着還沒弄完,就趕緊着寫,前半個月沒有複習,一直寫程序,從早晨寫到晚上,那半個月可以說活的很充實,回宿舍就睡覺,沒空兒玩手機,那半個月的效率很高,但可以說累得快支撐不住了。這半個月過去了之後就一直沒有沒有在進行過機房,直到考完試,暑假來了這纔開始進行優化,然而這個時候出現了一個新的問題,對之前自己寫的程序的邏輯忘了,因爲沒有註釋。之後又開始重新理解優化,改正錯誤,一直弄了七八天才找師傅去驗收了項目,結果,還是出了一些不該錯的問題。
這次的過程也給了我一個教訓,對於程序一定要寫註釋,不僅僅是爲了別人,更重要的是,當你自己回來進行重溫時能後理解自己寫的是什麼,讓自己輕鬆,高效率的去溫習程序。之前一直沒有將註釋這件事放在心上,但這次之後我感覺自己應該不會在不寫註釋了。再有就是一定要在學習的時候靜下心來,一步一步有章程的進行,不可以不按順序,亂改動。在驗收前本來這些小錯誤應該可以檢測出來並改正過來,但是就是因爲粗心,不按順序來,導致了小錯誤不斷的結果。因此,無論做任何事都應給腳踏實地,切忌走捷徑,那樣只會萬劫不復。
這次的機房讓我將之前放下的知識重新的撿了起來,並且感覺對VB有了新的認識和理解。同時在師傅那裏學到了很多的東西。很感謝師傅們給我驗收項目並且在其中給我的意見和建議。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章