日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

学生信息系统——优化总结(干货篇一)

發(fā)布時間:2024/1/18 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学生信息系统——优化总结(干货篇一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?

?

引言

我在做學(xué)生系統(tǒng)的時候其實很多時候都是暈的,剛開始覺得特別的復(fù)雜;但是等我做完的時候發(fā)現(xiàn)這里面很多的都是重復(fù)的,不光代碼重復(fù),思路、窗體間結(jié)構(gòu)都是重復(fù)的。一句話總結(jié):其實學(xué)生信息系統(tǒng)就是增、刪、改、查、刪......這樣一說是不是簡單多了。

?

?結(jié)構(gòu)圖


總結(jié)

一、建立學(xué)生系統(tǒng)主窗體(工程項目(是用來建造應(yīng)用程序的文件的集合)—創(chuàng)建主窗體(MDI多文檔界面,這樣可以讓程序更加美觀,整齊有序)—創(chuàng)建主窗體菜單—創(chuàng)建公用模塊(它可以用來存放整個工程項目的公用的函數(shù)、全局變量,這樣可以極大的提高代碼的效率))

1、由于系統(tǒng)中各個功能模塊都將頻繁使用數(shù)據(jù)庫中的各個數(shù)據(jù),因此需要一個公共的數(shù)據(jù)操作函數(shù)

Public Function ExecuteSQL(ByVal SQL As String, MsgString as String) As ADODB.Recordset

'傳遞參數(shù)SQL傳遞查詢語句,MsgString傳遞查詢信息,自身以一個數(shù)據(jù)集對象的形式返回

?

???On Error GoTo ExecuteSQL_Error??????????? '異常處理

??? sTokens = Split(SQL)??????????????????????????????????'Split函數(shù)產(chǎn)生一個包含各個子串的數(shù)組

??? Set cnn = New ADODB.Connection???????? '創(chuàng)建連接

??? cnn.OpenConnectString??????????????????????????'打開連接

?

IfInStr("INSERTE,DELETE,UPDATE", UCase$(sTokens(0))) Then

?????????????????????????????????????????????????????????????????????????'判斷字符串中是否含有指定內(nèi)容

??????? cnn.Execute SQL???????????????????????????????????'執(zhí)行查詢語句

??????? MsgString = sTokens(0) &"query successful"

????????????????????????????????????????????????????????????????????????'返回查詢信息

??? Else

???????

??????? Set rst = NewADODB.Recordset???????'創(chuàng)建數(shù)據(jù)集對象

??????? rst.Open Trim$(SQL), cnn, adOpenKeyset,adLockOptimistic

????????????????????????????????????????????????????????????????????????'返回查詢結(jié)果

??????? Set ExecuteSQL =rst???????????????????????????'返回記錄集對象

??????? MsgString = "查詢到" & rst.RecordCount & _

??????????? "條記錄"

??? End If

ExecuteSQL_Exit:????????????????????????????? '清空數(shù)據(jù)集對象

??? Set rst = Nothing

??? Set cnn = Nothing

??? Exit Function

???

ExecuteSQL_Error:???????????????????????????? '錯誤類型判斷

??? MsgString = "查詢錯誤:" & _

??????? Err.Description

??? Resume ExecuteSQL_Exit

?

Endfunction

?

ExecuteSQL函數(shù)有兩個參數(shù):SQLMsgString。其中SQL用來存放需要執(zhí)行的SQL語句,MsgString用來返回執(zhí)行的提示信息。函數(shù)執(zhí)行時,首先判斷SQL語句中包含的內(nèi)容:當執(zhí)行操作時,ExecuteSQL函數(shù)將返回一個與函數(shù)同名的記錄集對象(Recordset),所有滿足條件的記錄包含在對象中;當執(zhí)行如刪除、更新、添加、等操作時,不放回記錄集對象。

?

2ExecuteSQL函數(shù)使用了ConnectString函數(shù),這個函數(shù)使用來連接數(shù)據(jù)庫的;代碼:

Public FunctionConnectString() As String

??? ConnectString ="FileDSN=student.dsn;UID=sa;PWD=123456"??????'返回一個數(shù)據(jù)庫連接

End Function

?

3、上面的ExecuteSQL函數(shù)和ConnectString函數(shù)將在后面頻繁使用,因為他們對任何數(shù)據(jù)庫連接都是有效的,由于在后面將在程序中需要頻繁的檢查各種文本框的內(nèi)容是否為空,這里定義了testtxt函數(shù),代碼:

Public FunctionTesttxt(txt As String) As Boolean

??? If Trim(txt) ="" Then??????????????????? '判斷輸入內(nèi)容是否為空(如果文本框內(nèi)容為空,函數(shù)將返回True,否則將返回False

??????? Testtxt = False

??? Else

??????? Testtxt = True

??? End If

End Function

?

4、學(xué)生系統(tǒng)啟動后,需要對用戶進行判斷,如果登陸者是授權(quán)用戶,將進入系統(tǒng),否則將停止程序的執(zhí)行(這個判斷需要在系統(tǒng)運行初進行,因此代碼需要放在模塊中。代碼:

Sub Main()

??? Dim fLogin As New frmLogin

??? fLogin.Show vbModal????????????????????? '顯示登錄窗體

??? If Not fLogin.OK Then??????????????????? '判斷是否授權(quán)用戶

??????? End

??? End If

??? Unload fLogin

??? 'Set fMainForm = New frmMain????????????? '判斷是,將進入系統(tǒng)

??? 'fMainForm.Show

End Sub

?

二、系統(tǒng)用戶模塊的創(chuàng)建:(用戶登錄—添加用戶—修改用戶密碼)

1、為窗體定義全局變量OK用來判斷燈籠褲是否成功;定義miCount,用來記載密碼的次數(shù),并且在載入窗體時初始化這兩個全局變量。

?

2、當用戶輸入完用戶名和密碼,單擊cmdOK按鈕將對用戶信息進行判斷,用戶單擊該按鈕將觸發(fā)Click事件;如果用戶沒有輸入用戶名和密碼,將出現(xiàn)消息框給予提示,如果輸入的用戶名在用戶表格中沒有找到,將提示重新輸入,文本框txtPassword將重新獲得輸入焦點。用戶登錄成功全局變量OK將被賦值為True,一旦三次輸入密碼不正確,全局變量OK將被賦值為False。公用模塊中的Main過程將根據(jù)OK的值決定是退出系統(tǒng)還是進入系統(tǒng)

?

三、學(xué)籍管理模塊的建立(添加學(xué)籍—修改學(xué)籍—查詢學(xué)籍)

1、添加:(重點事項)

1)判斷是否為空

If NotTesttxt(cboClassNo.Text)Then

??????MsgBox"請輸入班號!", vbOKOnly + vbExclamation, "警告"

??????cboClassNo.SetFocus

??????cboClassNo.Text= ""

??????ExitSub

??End If

?

2)判斷是否重復(fù)?

txtSQL ="select * from class_Info where class_No='" &Trim(cboClassNo.Text) & "'"

Set mrc = ExecuteSQL(txtSQL, MsgText)

If?Not (mrc.EOF And mrc.BOF)Then???????????????????????'確保輸入的班號不存在

??????MsgBox"請重新輸入班號!", vbOKOnly + vbExclamation, "警告"

??????cboClassNo.SetFocus

??????mrc.Close

Else

……

?

3)有日期的判斷的判斷日期的格式

??????IsDatetxtBorndate.Text?? '判斷數(shù)據(jù)是否日期格式

??????IsDatetxtRudate.Text?????? '判斷數(shù)據(jù)是否日期格式

4)判斷該輸入數(shù)字的地方是否為數(shù)字

If Not IsNumeric(Trim(txtSID.Text)) Then??????????????????????????'判斷輸入學(xué)號是否數(shù)字

??????? MsgBox "請輸入數(shù)字!", vbOKOnly + vbExclamation, "警告"

??????? Exit Sub

??????? txtSID.SetFocus

??? End If

?

5)添加記錄成功

??????txtSQL = "select * from class_Info"

??????Set mrc = ExecuteSQL(txtSQL, MsgText)

??????mrc.AddNew

??????mrc.Fields(0) = Trim(cboClassNo.Text)

??????mrc.Fields(1) = Trim(cboGrade.Text)

??????mrc.Fields(2) = Trim(txtDirector.Text)

??????mrc.Fields(3) = Trim(cboClassNo.Text)

??????mrc.Update

??????mrc.Close

??????Me.Hide

??????MsgBox "班級信息添加成功!", vbOKOnly + vbExclamation, "添加班級信息"

End If

?

?

2、修改:(重點事項)

1)、點擊修改時各個文本框?qū)⒂行?#xff0c;移動記錄的按鈕將失效

PrivateSub editCommand_Click()???????????? '單擊“修改記錄”按鈕,將進入到修改狀態(tài),各個文本框?qū)⒂行?#xff0c;這是移動記錄的按鈕將失效,可以避免誤操作

??? mcclean = False

??? Frame2.Enabled = False

??????????????????????????????????????????? '使移動記錄按鈕失效

??? firstCommand.Enabled = False

??? previousCommand.Enabled = False

??? nextCommand.Enabled = False

??? lastCommand.Enabled = False

??????????????????????????????????????????? '使各個文本框有效

??? txtSID.Enabled = True

??? txtName.Enabled = True

??? comboSex.Enabled = True

??? txtBorndate.Enabled = True

??? comboClassNo.Enabled = True

??? txtRudate.Enabled = True

??? txtTel.Enabled = True

??? txtAddress.Enabled = True

??? txtComment.Enabled = True

???

??? myBookmark = mrc.Bookmark?????????????? '記下當前記錄位置

End Sub

?

2)、不可重復(fù)

<spanstyle="font-size:18px;">mrc.AddNew

mrc.Fields(0) =Trim(comboClassNo.Text)

mrc.Fields(1) =Trim(comboGrade.Text)

mrc.Fields(2) =Trim(txtDirector.Text)

mrc.Fields(3) =Trim(txtClassroom.Text)

mrc.Update

MsgBox"班級信息修改成功!", vbOKOnly + vbExclamation, "警告"

mrc.Bookmark =mybookmark

CallviewData</span>

?

3)、點擊取消修改后,各個按鈕將有效,文本框?qū)⑹?/span>

PrivateSub cancelCommand_Click()?????????? '單擊“取消修改”按鈕時,將取消所做的修改

??? If Not mcclean Then???????????????????? '判斷是否處于修改狀態(tài)

??????????????????????????????????????????? '使各個按鈕有效

??????? Frame2.Enabled = True

??????? firstCommand.Enabled = True

??????? previousCommand.Enabled = True

??????? nextCommand.Enabled = True

??????? lastCommand.Enabled = True

??????????????????????????????????????????? '使各個文本框失效

??????? txtSID.Enabled = False

??????? txtName.Enabled = False

??????? comboSex.Enabled = False

??????? txtBorndate.Enabled = False

??????? comboClassNo.Enabled = False

??????? txtRudate.Enabled = False

??????? txtTel.Enabled = False

??????? txtAddress.Enabled = False

??????? txtComment.Enabled = False

???????

??????? mrc.Bookmark = myBookmark?????????? '回到開始記錄位置

??????? Call viewData

??? Else

??????? MsgBox "什么都沒有修改,有什么好取消的!", vbOKOnly + vbExclamation,"警告"

??? End If

End Sub

?

3、查詢有兩種方法

1)點擊各個按鈕進行查詢(此方法使用記錄少的,單個查詢)

<span style="font-size:18px;">Private Sub cmdFirst_Click()??????????????????????????????????? '記錄集移動到第一條

????mrc.MoveFirst

????Call viewData

End Sub

?

Private Sub cmdLast_Click()???????????????????????????????????? '記錄集移動到最后一條

????mrc.MoveLast

????Call viewData

End Sub

??

Private Sub cmdNext_Click()???????????????????????????????????? '記錄集移動到下一條

????mrc.MoveNext

????If mrc.EOF Then

????????mrc.MoveFirst

????End If

????Call viewData

End Sub

??

Private Sub cmdPrevious_Click()???????????????????????????????? '記錄集移動到上一條

????mrc.MovePrevious

????If mrc.BOF Then

????????mrc.MoveLast

????End If

???Call viewData

End Sub</span>

?

2)按條件進行查詢,直接顯示在MSHFexGrid控件中按順序顯示

?

4、刪除:(重點事項)

1)、提示是否刪除的語句

str2$= MsgBox("是否刪除當前記錄?", vbOKCancel, "刪除當前記錄")

2)如果刪除:

If str2$ = vbOK Then

<span style="white-space:pre">??? </span>mrc.MoveNext

????????If mrc.EOF Then?????????

????????<span style="white-space:pre">??? </span>mrc.MoveFirst

????????????????myBookmark = mrc.Bookmark

????????????????mrc.MoveLast

????????????????mrc.Delete

????????????????mrc.Bookmark = myBookmark

????????????????Call viewData

????????Else

????????????????myBookmark = mrc.Bookmark

????????????????mrc.MovePrevious

????????????????mrc.Delete????????

????????????????mrc.Bookmark = myBookmark

????????????????Call viewData

????????End If

?

3)如果不刪除:

<pre name="code" class="vb">Else

????mrc.Bookmark=mybookmark

????CallviewData

End If

?

4)這里的viewData函數(shù)是用來把臨時表中的當前記錄賦值給各個文本框


?

四、班級管理模塊的建立(添加班級—修改班級);由于班級的管理模塊和學(xué)籍管理模塊差不多,上面已經(jīng)詳細闡述,本處不詳細總結(jié)

?

五、課程和成績的管理模塊也都類似,重點參照學(xué)籍模塊。

?

附錄:(出現(xiàn)頻率高,而且比較重要的)

1Option Explicit是用來規(guī)定所有變量使用前必須定義。這樣可以避免由于輸入的錯誤而產(chǎn)生的新變量。

?

2MeVB中的一個常用的對象,用來指代當前對象本身。

?

3IsDatetxtBorndate.Text??'判斷數(shù)據(jù)是否日期格式

??????IsDatetxtRudate.Text?????? '判斷數(shù)據(jù)是否日期格式

?

4myBookmark用來記錄數(shù)據(jù)集中當前記錄的位置

??mcclean作為一個標志記錄是否修改記錄

?

5、定義函數(shù)viewData可以解決程序中各處需要顯示數(shù)據(jù)的問題

?

6mrc.Delete???'判斷是否有重復(fù)記錄

?

7mrc.Bookmark =myBookmark?????????? '回到開始記錄位置

????????myBookmark = mrc.Bookmark?????????????? '記下當前記錄位置

?

8列表框的ListIndex屬性用來指示當前選中項,-1說明沒有被選中的數(shù)據(jù)項

PrivateSub cmdAdd_Click()????????????????? '單擊“添加”按鈕,可以將添加課程

??? If listAllcourse.ListIndex <> -1 Then??'判斷是否有內(nèi)容被選中

??????? listSelectcourse.AddItemlistAllcourse.list(listAllcourse.ListIndex)

??? End If

??? If listAllcourse.ListIndex <> -1 Then

??????? Call addlist(listSelectcourse,listAllcourse.ListIndex)

?

?

??? End If

End Sub

?

進步

??????????我其實通過這樣的總結(jié)發(fā)現(xiàn),自己對學(xué)生信息管理系統(tǒng)又有了新的認識,至少沒有之前那么暈了。它的結(jié)構(gòu)框架和部分思路漸漸的清晰,當然還是有很多的地方不是很清楚;我相信,只要我不斷的總結(jié),它總有一天會被我全部搞清楚的。

?


總結(jié)

以上是生活随笔為你收集整理的学生信息系统——优化总结(干货篇一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。