機房收費系統——問題總結(二)
阿新 • • 發佈:2019-01-23
這篇部落格總結了三個知識點:一是統計當前上機人數;二是學生資訊維護的修改按鈕;三是修改密碼!
一、如何動態統計當前上機人數
剛開始的時候弄的特別麻煩,又是設定全域性變數,又是寫大量的程式碼,但是還是效果不理想,之後才發現其實只要在主介面加一個Timer控制元件就行了!具體實現步驟:①在主窗體介面加一個Timer控制元件。②雙擊進入程式碼窗體,寫下如下程式碼:
<span style="font-size:18px;">Private Sub Timer1_Timer1() Dim mrc As ADODB.Recordset Dim txtSQL As String Dim Msgtext As String txtSQL ="select getdate()" '獲取資料庫系統時間 Set mrc = ExecuteSQL (txtSQL,Msgtext) Label1.caption =Formate(mrc.Fields(0),"yyyy-mm-dd hh:mm:ss") End sub</span>
二、如何實現學生資訊維護窗體中的修改按鈕功能
主要實現的功能是:在學生資訊維護窗體中選中查詢到的某一行資訊,點選修改後,彈出修改窗體,而裡面存在有剛剛選擇的那一行資訊!其實裡面主要涉及到一個全域性變數,而我之前沒想到!具體操作步驟:①在模組中定義一個全域性變數P,程式碼如下:
<span style="font-size:18px;">Public P as Integer</span>
②在學生資訊維護窗體介面實現:單擊選擇的是整行,把選擇的那一行資訊的卡號賦值給全域性變數P,程式碼如下:
<span style="font-size:18px;">Dim txtSQL, Msgtext As String Dim mrc As ADODB.Recordset Dim mrcc As ADODB.Recordset MSFlexGrid1.SelectionMode = flexSelectionByRow '單擊的時候選擇的是整行 txtSQL = "select * from student_Info where cardno ='" & Trim(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0)) & "'" Set mrc = ExecuteSQL(txtSQL, Msgtext) p = Trim(mrc.Fields(0)) '把卡號資訊傳遞給全域性變數P mrc.Close frmModifyStuInfo.Show '顯示出frmModifyInfo的窗體</span>
③把查詢到的資訊填寫到修改窗體裡面,程式碼如下:
<span style="font-size:18px;">Private Sub Form_Load() Dim Msgtext As String Dim txtSQL As String Dim mrc As ADODB.Recordset '全域性變數p的值從學生基本資訊維護窗體賦予的,然後查詢出此卡號資訊 txtSQL = "select * from student_Info where cardno = '" & p & "'" Set mrc = ExecuteSQL(txtSQL, Msgtext) '將查詢的資料填入窗體的文字框中 Text1.Text = Trim(mrc.Fields(1)) Text2.Text = Trim(mrc.Fields(2)) Text3.Text = Trim(mrc.Fields(4)) Text4.Text = Trim(mrc.Fields(5)) Text5.Text = Trim(mrc.Fields(6)) Text6.Text = Trim(mrc.Fields(0)) Text7.Text = Trim(mrc.Fields(7)) Text8.Text = Trim(mrc.Fields(10)) Text9.Text = Trim(mrc.Fields(8)) Combo1.Text = Trim(mrc.Fields(3)) Combo2.Text = Trim(mrc.Fields(14)) mrc.Close Combo1.AddItem "男" '把資料載入到組合框中 Combo1.AddItem "女" Combo2.AddItem "固定使用者" Combo2.AddItem "臨時使用者" End Sub </span>
三、修改密碼時的思路
①判斷舊密碼是否正確(是否是正在登陸使用者的密碼,遍歷使用者表),若不是,提示資訊!
②判斷新密碼和確認密碼是否一致,若不一致則提示!
③修改成功後將表中的使用者密碼進行更改!(優化:當新密碼沒輸入的時候,不能輸入確認密碼;當新密碼與原密碼一致時提示!)程式碼如下:
<span style="font-size:18px;">Private Sub cmdOK_Click()
Dim strSQL As String
Dim MsgString As String
Dim mrs As ADODB.Recordset
'調出User表中的登入使用者的一行資訊
strSQL = "select * from User_info where UserID = '" & UserName & "'"
Set mrs = ExecuteSQL(strSQL, MsgString)
If txtOldPwd.Text <> Trim(mrs.Fields(1)) Then
MsgBox "原密碼不正確,請重新輸入!", vbOKOnly + vbExclamation, "提示"
txtOldPwd.Text = ""
txtOldPwd.SetFocus
Else
If Trim(txtNewPwd.Text) = "" Then
MsgBox "請輸入新密碼!", vbExclamation + vbOKOnly, "提示"
txtNewPwd.Text = ""
txtNewPwd.SetFocus
Else
If Trim(txtNewPwd.Text) = Trim(txtOldPwd.Text) Then
MsgBox "新密碼與原密碼一致,請重新輸入!", vbOKOnly + vbExclamation, "提示"
txtNewPwd.Text = ""
txtReNewPwd.Text = ""
txtNewPwd.SetFocus
Else
If Trim(txtReNewPwd.Text) = "" Then
MsgBox "請輸入確認密碼!", vbOKOnly + vbExclamation, "提示"
txtReNewPwd.SetFocus
Else
If txtReNewPwd.Text <> txtNewPwd.Text Then
MsgBox "兩次輸入密碼不一致,請重新輸入密碼!", vbOKOnly + vbExclamation, "提示"
txtReNewPwd.Text = ""
txtReNewPwd.SetFocus
Else
mrs.Fields(1) = txtNewPwd.Text
mrs.Update
mrs.Close
MsgBox "修改密碼成功!", vbOKOnly + vbInformation, "修改密碼"
txtOldPwd.Text = ""
txtNewPwd.Text = ""
txtReNewPwd.Text = ""
Me.Hide
End If
End If
End If
End If
End If
End Sub</span>
<span style="font-size:18px;">Private Sub txtOldPwd_LostFocus() '當舊密碼文字框失去焦點時判斷輸入是否正確
Dim Msgtext As String
Dim txtSQL As String
Dim mrc As ADODB.Recordset
txtSQL = "select * from User_Info where UserID = '" & UserName & "'"
Set mrc = ExecuteSQL(txtSQL, Msgtext)
If txtOldPwd.Text = "" Then
Exit Sub
End If
If txtOldPwd.Text <> Trim(mrc.Fields(1)) Then
MsgBox "原密碼不正確,請重新輸入!", vbOKOnly + vbExclamation, "提示"
txtOldPwd.Text = ""
txtOldPwd.SetFocus
End If
End Sub</span>
<span style="font-size:18px;">Private Sub Timer1_Timer() '利用Timer事件保證,當新密碼為空的時候,確認密碼也為空
If txtNewPwd.Text = "" Then
txtReNewPwd.Text = ""
End If
End Sub
</span>
總結
以上三點都是自己在做機房的過程中遇到的問題,總結下來,算是回顧一遍。希望這些可以幫到你!