首页
/
每日頭條
/
科技
/
學生信息管理系統調試分析
學生信息管理系統調試分析
更新时间:2025-01-07 21:55:12

  優化一:在登陸界面不允許輸入單引号:

  今天在優化的時候聽齊智說學生的登陸界面不可以輸入單引号,于是我就試了試果然隻要輸入單引号,我們的程序就會出錯,但是除了單引号之後的其他符号都可以輸入,但是為什麼不能輸入單引号,最後在師傅的博客中找到了這個錯誤叫做: sql 注入

  防止SQL注入:在用戶名前面加上一個 ’ ,就會提示錯誤,這個錯誤就是SQL注入。

  點擊下面的鍊接可以看:

  SQL注入

  再解決這個問題之前,先了解一下什麼是SQL注入:

  但是我們在程序中可以用代碼來限制用戶輸入,不允許用戶在文本框中輸入單引号具體實現的代碼:

  解決辦法:(就目前水平)限制用戶名隻能輸入數字,大小寫字母和删除鍵,其他輸入均被視為無效輸入。

  Private Sub Text1_KeyPress(KeyAscii As Integer)

  Select Case KeyAscii

  Case 48 To 57 '隻能輸入數字

  Case 65 To 90 '隻能輸入大小寫字母

  具體的添加方式:

  工程—– 部件——- Microsoft Windows Common Controls-2.6.0 → 應用 → 确定

  與數據庫結合(時間格式):

  DTPicker1.CustomFormat = “yyyy.mm.dd”

  寫入判斷條件代碼:

  '檢驗出生和入校時間的關系

  If DTBornData.Value DTRudate.Value Then

  MsgBox "出生日期必須早于入校時間", vbOKCancel vbExclamation, "警告"

  Exit Sub

  End If

  '給控件變量賦初值

  DTBornData.MaxDate = Date

  DTRudate.MaxDate = Date

  If DTBornData.MaxDate DTBornData.Value Then

  msgbox "根據您填寫的出生日期,您還沒有出生!", vbOKOnly vbExclamation, "警告"

  Exit Sub

  End If

  '判斷時間

  If DTRudate.MaxDate DTRudate.Value Then

  msgbox "根據您填寫的入校日期,您還沒有出生!", vbOKOnly vbExclamation, "警告"

  DTRudate.Value = ""

  DTRudate.SetFocus

  Exit Sub

  End If

  12345678910111213141516171819202122 優化三:添加成績信息窗體———–自動顯示姓名

  (使得我們的程序用起來更加人性化!)

  原本這個窗體的功能是通過選擇“班号” ,然後通過“班号”來篩選出對應的“學号”

  通過“班号” 篩選中對應的“年級” 最後通過年級篩選出對應的“課程”

  具體的過程如下:

  Private Sub comboClassno_Click()

  Dim mrc As New ADODB.Recordset

  Dim txtSQL As String

  Dim Msgtext As String

  comboSID.Clear

  comboCourse.Clear

  '添加學号

  '通過班号找到該班學生的學号

  txtSQL = "select* from student_info where class_No='" comboClassno.Text "'"

  Set mrc = ExecuteSQL(txtSQL, Msgtext)

  While (mrc.EOF = False)

  comboSID.AddItem mrc!student_ID

  mrc.MoveNext

  Wend

  mrc.Close

  '獲得年級信息

  ’通過班号找到對應的年級

  txtSQL = "select * from class_info where class_no ='" comboClassno.Text "'"

  Set mrc = ExecuteSQL(txtSQL, Msgtext)

  Grade = mrc.Fields(1)

  mrc.Close

  ‘獲得對應的課程信息:

  '通過年級找到對應的課程

  txtSQL = "select * from gradecourse_info where grade ='" Grade "'"

  'grade 是gradecourse表中的一個字段

  Set mrc = ExecuteSQL(txtSQL, Msgtext)

  While (mrc.EOF = False)

  comboCourse.AddItem mrc!course_Name

  mrc.MoveNext

  Wend

  mrc.Close

  End Sub

  123456789101112131415161718192021222324252627282930313233343536 但是當你運行後你會發現,窗體中的名字還需要我們自己打進入,這個時候我覺得就出現了嚴重的問題,不但浪費時間,而且很容易把名字打錯,因為數據庫中的學号是唯一的,所以我們為什麼不能根據唯一的學号來篩選出對應的學生姓名?

  優化之後添加的具體代碼如下:

  由于是把學号作為基準,所以我将這些代碼添加到了學号的單擊事件中:

  Private Sub comboSID_Click()

  Dim mrc As ADODB.Recordset

  Dim txtSQL

  Dim Msgtext

  '通過學号,顯示姓名

  txtSQL = "select * from student_Info where student_id = '" comboSID.Text "'"

  Set mrc = ExecuteSQL(txtSQL, Msgtext)

  txtName.Text = mrc!student_name

  mrc.Close

  End Sub

  123456789101112 這樣我們在選擇了學号之後名字也就會自動出現!

  優化四:添加學生信息時,在姓名的文本框中隻能添加漢字:

  實現代碼:

  Private Sub txtSID_KeyPress(KeyAscii As Integer)

  Select Case KeyAscii

  Case Is 0, H20, H8

  Case Else

  KeyAscii = 0

  MsgBox “姓名隻能輸入漢子”

  End Select

  End Sub

  優化五:更改數據庫的設計結構:

  設置電話号的限定長度

  在學生系統的添加學生信息中,細心的話你會發現,當你輸入電話号的長度多于10位的時候我們的系統就會報錯,剛開始我以為是文本框的原因,于是就用

  Len(texttell.text) 10 這個語句限定了文本框的輸入長度,但是仔細想想發現我們現實中的電話号一般都是11,這個時候一定是數據庫中限定了電話字段的長度,

  隻要我們将電話字段的長度從10 改為11 那麼我們的程序就可以正常運行了

  具體操作方法:

  打開數據庫找到student 表 右擊 “student_Info”——–點擊“設計” ——這個時候就會打開這個設計表的界面

  學生信息管理系統調試分析(學生信息管理系統)(1)

  仔細觀察我畫圈的部位,他的長度果然是10 , 所以我們如果将那個10 改為11 那麼我們在程序中就可以輸入11位的電話号了。

  但是這個時候數據庫出錯了,彈出了提示:

  學生信息管理系統調試分析(學生信息管理系統)(2)

  如何将數據庫的設計改為可以更改?

  操作方法:

  工具—-選項—–設計器—-将“阻止保存要求重新創建表的更改” 中的勾取消掉

  最後保存我們對表結構的設計就可以暢通無阻了

  學生信息管理系統調試分析(學生信息管理系統)(3)

  優化五: 拒絕重複添加年級的課程

  在添加年級課程這個窗體中,當我們點擊“設置課程”按鈕時候你會發現 我們的“所有課程”列表框中的内容會一直重複添加:

  

  隻要一句代碼就可以讓這種現象消失:

  在”設置課程” 的點擊事件中添加這樣一句代碼:

  listallcourse.Clear 即可

  當我們将課程從“所有課程” 向”已經選擇課程” 列表框中添加的時候你會發現,可以多次添加一個課程,這樣就會讓程序混亂,為了讓程序看起來更加完美,我們要限定 ”已經選擇課程” 列表框中的課程不能同名:

  解決辦法:

  在右箭頭的按鈕的單擊事件中添加代碼,實現限定列表框内容:

  具體代碼:

  Private Sub CmdAdd_Click()

  Dim b As Integer

  Dim s As String

  '判斷數據時候被選中

  If listallcourse.ListIndex -1 Then

  s = listallcourse.List(listallcourse.ListIndex)

  '判斷數據是否唯一

  If listselectcourse.ListCount = 0 Then

  listselectcourse.AddItem listallcourse.List(listallcourse.ListIndex)

  Else

  For b = 0 To listselectcourse.ListCount - 1

  If listselectcourse.List(b) = s Then

  MsgBox "不能重複添加課程"

  Exit For

  Else

  listselectcourse.AddItem listallcourse.List(listallcourse.ListIndex)

  End If

  Next

  End If

  End If

  End Sub

  ,

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
洗衣機脫水桶轉速慢是什麼原因
洗衣機脫水桶轉速慢是什麼原因
1、電容變值或失效所緻:洗衣機甩幹桶運轉速度慢,無力一般情況是電容變值或失效所緻。換一個一樣的電容試試,但是要記住電容的容量不要超過原來的數值,太大了容易出現電機發熱,甚至燒壞。太小了轉速不夠。另外如果線路有斷路的地方也會有這種問題的,這時也就是電容不起作用了,較好先檢查線路和電容是否完好,如确認是...
2025-01-07
蘋果手機怎麼改密碼
蘋果手機怎麼改密碼
1、打開iPhone手機,在桌面找到設置圖标,點擊“設置”,進入設置界面。2、在設置功能中找到“觸控...
2025-01-07
多閃視頻怎麼删除
多閃視頻怎麼删除
1、我們解鎖手機後,在手機中選擇多閃的應用進入。2、進入多閃後,我們點擊右上方自己的頭像進入。3、點擊後,在我的随拍下方可以看到自己拍攝的視頻,我們點擊需要删除的視頻進入。4、點擊進入後,在視頻播放界面,我們點擊右上方三個點的圖标進入。5、點擊後,下方會彈出一個窗口,我們點擊下方的删除的選項。6、點...
2025-01-07
華為手機風險應用怎麼解除
華為手機風險應用怎麼解除
演示機型:華為P40系統版本:EMUI11.0.0在手機主界面上,找到手機管家,點擊即可進入。然後進入新的界面之後,找到并點擊病毒查殺。然後進入新的界面,可以看到風險的應用,點擊該軟件。最後出現提示,點擊左側的解除管控即可。華為手機:華為手機隸屬于華為消費者業務,作為華為三大核心業務之一,華為消費者業務始于2003年底,經過十餘年的發展,在中國、俄羅斯、德國、瑞典、印度及美國等地設立了16個研發中
2025-01-07
月亮是光源嗎 月亮是不是天然光源
月亮是光源嗎 月亮是不是天然光源
1、月亮不是天然光源。2、月球本身并不發光,隻反射太陽光。月球亮度随日月間角距離和地月間距離的改變而...
2025-01-07
Copyright 2023-2025 - www.tftnews.com All Rights Reserved