【正文】
If End If 轉賬 功能的 實現 轉帳功能要求用戶輸入對方卡號及轉帳金額,并且對方卡號也必須是在數據庫中存在的卡號,否則會出錯,這里對數額上沒有要求,并不要求是整數,可隨意輸入轉帳金額 。 圖 8 轉賬 界面 在程序實現中,同樣要對用戶輸入的信息要驗證其正確性,對方卡號必須真實存在,所輸入金額不得超過卡上金額等等。 Public Sub Trans() Dim str3 As String transcard = transmoney = str3 = select * from 用戶信息 where 卡號 =39。 amp。 transcard amp。 39。 Set RS = New str3, CON, adOpenDynamic, adLockPessimistic //數據庫連接 第 19 頁 共 26 頁 If i = 2 Then If = Or = Then // 輸入卡號或輸入金額為空 則出錯 k = 0 = 請你正確輸入! = = Call InsertDatabase //每出現一次錯誤就調用數據庫寫入函數。對用戶操作信息表進行添加操作信息。此函數將在后面介紹 Exit Sub End If If = True Then //記錄集中沒有所輸入卡號的用戶 則出錯 k = 0 = 沒有此用戶,請檢 查并重新輸入! Call InsertDatabase Exit Sub End If If transcard = u Then //轉帳卡號與實施轉帳操作的卡號相同,則出錯 k = 0 = 操作錯誤,同帳戶不可以轉帳! Call InsertDatabase Exit Sub End If str6 = select * from 用戶信息 where 卡號 =39。 amp。 u amp。 39。 Set RS = New str6, CON, adOpenDynamic, adLockPessimistic If (金額 ) Val() Then //判斷輸入金額與卡 中余額 k = 0 = 金額不足以轉帳,請你重新輸入 第 20 頁 共 26 頁 = Call InsertDatabase Exit Sub Else k = 1 Unload Form7 = transcard = transmoney End If 在排除了不正確的情況后,將轉入確認信息界面 ,如圖 9,在確認信息窗體中將調用 TRANS2 函數,對交易成功后的數據進行更新 圖 9 確認界面 Public Sub Trans2() Dim str4 As String str4 = select * from 用戶信息 where 卡號 =39。 amp。 u amp。 39。 Set RS = New str4, CON, adOpenDynamic, adLockPessimistic (金額 ) = (金額 ) – transmoney //對轉出錢的卡號減少相應數額 Dim str5 As String 第 21 頁 共 26 頁 str5 = select * from 用戶信息 where 卡號 =39。 amp。 transcard amp。 39。 Set RS = New str5, CON, adOpenDynamic, adLockPessimistic (金額 ) = (金額 ) + transmoney //所轉入的卡號加上相應數額 If i = 2 Then = 恭喜您轉帳成功! Else = Transfered successfully! End If Call InsertDatabase //調用數據庫寫入函數 End Sub 密碼修改功能的 實現 圖 10 修改密碼 界面 在密碼修改界面 中 (如圖 10)需要用戶兩次輸入的密碼相一致,否則不能進行修改,密碼兩次輸入正確后,程序將新的密碼寫入原來位置。 PUBLIC SUB CHANGEPWD() IF I = 2 THEN 第 22 頁 共 26 頁 IF LEN() 6 OR LEN() 6 THEN//比較兩次密碼長度是否符合 6 位的要求 K = 0 = 請正確輸入 6 位密碼 = = Call InsertDatabase ELSE IF THEN//比較兩次輸入是否一致 K = 0 = 您兩次輸入的密碼不一致,請檢 查! = = Call InsertDatabase ELSE STR = UPDATE 用戶信息 SET [密碼 ]=39。 amp。 amp。 39。 WHERE 卡號 =39。 amp。 U amp。 39。 SET RS = NEW STR, CON, ADOPENDYNAMIC, ADLOCKPESSIMISTIC K = 1 Call InsertDatabase IF I = 2 THEN = 密碼修改成功,請記好您的新密碼! ELSE = PASSWORD BE CHANGED SUCCESSFULLY END IF UNLOAD FORM6 END IF 第 23 頁 共 26 頁 END IF 查詢交易明細 功能的 實現 圖 11 查詢明細界面 在查詢交易 明細界面中 (如圖 11),最重要的就是運用到了 RECORDSET 記錄集 EOF 屬性,通過判斷 BOF 的真值來判斷是否取到了記錄集合,并把所需要的數據逐條到文本框中,在 TEXT 文本框中的 MULTILINE 屬性要設為 TRUE,使輸出的文字能夠自動換行 Public Sub Query2() Dim str7 As String Set RS = New str7 = select 時間 ,操作 ,取款金額 ,轉帳金額 ,轉帳卡號 ,是否成功 from 用戶操作表 where 卡號 =39。 amp。 u amp。 39。 //只搜索需要的單元 str7, CON, adOpenKeyset, adLockReadOnly //這里把對數據的讀取設為只讀方式 If Not Then //如果 值為假則說明得到了所需要的記錄集合,為真則當前記錄指針無效 = //用 RECORDSET 對象的 GetString 方法來得到記錄集中的字符串,并輸出在文本框中 End If End Sub 其余界面及函數 在完成了所選 擇的服務后都會出現一個繼續(xù)服務的界面 (如圖 12),用以選擇退出還是返回到服務選擇界面繼續(xù)進行其他服務 。 第 24 頁 共 26 頁 圖 12 繼續(xù)服務界面 在很多函數的運用中都要調用 INSERTDATABASE函數,用以對數據庫中用戶操作信息表進行用戶操作信息的寫入,包括操作類型,操作時間,操作金額,轉帳卡號,轉帳金額,以及是否成功等等。這里就介紹其中對取款操作寫入的代碼即可,其余的都是一樣的 Public Sub InsertDatabase() str = select * from 用戶操作表 Set RS = New str, CON, adOpenDynamic, adLockPessimistic If j = 1 And k = 1 Then //這里 j就是前面所選擇的服務的標識 (卡號 ) = u (操作 ) = 取款 (時間 ) = Now (取款金額 ) = Val() (是否 成功 ) = 是 ElseIf j = 1 And k = 0 Then (卡號 ) = u (操作 ) = 取款 (時間 ) = Now (取款金額 ) = Val() (是否成功 ) = 否 第 25 頁 共 26 頁 6 系統運行結果及工作總結 系統測試及運行結果 系統測試全部功能都能夠使用,也達 到了預期的效果,運行速度和穩(wěn)定性都不錯。界面設計經過細細的調整之后,人性化的設計基本達到了要求。 系統有待改進之處 因為系統只是要求模擬,并不牽涉到真實的一些處理,所以很多真實的應用并不沒有加在里面,一些與真實的自動化機器的接口連接并沒有做到。在程序運行時有時會因為輸入的數字過大而出現內存溢出,程序崩潰現象,經過調試改正已經有了很大改觀,但仍然存在不可知的錯誤。 系統中遇到的問題及解決方法 首先遇到的問題就是系統分析不足的問題,在大致考慮了一些功能后就開始動手做,想到哪里做到哪里,一度陷入了困境,其后從新開 始理清了思緒,畫好了流程圖在做,隨即順暢了許多。其次就是與數據庫連接上的問題,由于對 VB 與 SQL 連接的不熟走了很多彎路,使程序設計需要用到數據庫時復雜化,過后通過老師同學指點,采用了 ADO 控件的動態(tài)連接,才解決一個頭疼的問題。其后的問題都是程序中邏輯性的一些小問題,大多數都是一些遺漏,導致程序死循環(huán),或者是數據庫寫入不去作用等等,都是通過仔細重新分析檢查一一解決。在所有代碼編寫完成后,再一一驗證其功能,修正了很多不足,也使得程序慢慢完善起來。