VB學生信息管理系統(tǒng)及源代碼_第1頁
VB學生信息管理系統(tǒng)及源代碼_第2頁
VB學生信息管理系統(tǒng)及源代碼_第3頁
VB學生信息管理系統(tǒng)及源代碼_第4頁
VB學生信息管理系統(tǒng)及源代碼_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、VB學生信息管理系統(tǒng)及源代碼OptionExplicit標識是否能關閉DimmbCloseAsBoolean標識當前要顯示的照片的文件DimmstrFileNameAsStringPrivateSubForm_Load()OnErrorResumeNextIffrmMain.mnUserType=1Then學生用戶fraSeek.Enabled=FalsefraBrowse.Enabled=FalsecmdAdd.Enabled=FalsecmdDelete.Enabled=FalsetxtSerial.Enabled=FalsedcbClass.Enabled=FalsegrdScan.En

2、abled=FalseIfNot(DataEnv.rsStudent.EOFAndDataEnv.rsStudent.BOF)ThenDimTempAsStringTemp=name=&frmMain.msUserName&DataEnv.rsStudent.MoveFirstDataEnv.rsStudent.FindTemp刷新所綁定的控件CallRefreshBindingEndIfExitSubElsefraSeek.Enabled=TruefraBrowse.Enabled=TruecmdAdd.Enabled=TruecmdDelete.Enabled=TruetxtSerial.

3、Enabled=TruedcbClass.Enabled=TruegrdScan.Enabled=TrueEndIfDimrsDepAsNewADODB.Recordset,rsClassAsNewADODB.RecordsetSetrsDep=DataEnv.rsDepartmentSetrsClass=DataEnv.rsClassrsDep.Open從Department表中讀取數(shù)據(jù),填充cboDep組合框到中cboDep.ClearcboDep.AddItem全部將各個系的id號作為ItemData附加到組合框中cboDep.ItemData(0)=0WhileNotrsDep.EOF

4、cboDep.AddItemrsDep(Name)cboDep.ItemData(cboDep.ListCount-1)=rsDep(id)rsDep.MoveNextWendcboDep.ListIndex=0從class表中讀取數(shù)據(jù),填充到cboClass組合框中cboClass.ClearcboClass.AddItem全部WhileNotrsClass.EOFcboClass.AddItemrsClass(Name)rsClass.MoveNextWendcboClass.ListIndex=0cmdList.Value=TruefraManage.Enabled=TruembClos

5、e=True調用grdScan_Change事件顯示記錄明細CallgrdScan_ChangeEndSub當DataEnv.rsStudent的當前記錄發(fā)生變化時,刷新所綁定的控件(用戶改變了當前記錄)SubRefreshBinding()OnErrorResumeNextWithDataEnv.rsStudentIfDataEnv.rssqlSeek.BOFAndDataEnv.rssqlSeek.EOFThen如果不存在任何記錄,則清空所有的綁定的內(nèi)容txtSerial=txtName=dtpBirth.Value=txtTelephone=txtAddress=txtResume=im

6、gPhoto.Picture=LoadPicture(Null)Else否則和相應的字段進行綁定txtSerial=.Fields(serial)txtName=.Fields(name)dtpBirth.Value=.Fields(birthday)txtTelephone=.Fields(tel)txtAddress=.Fields(address)txtResume=.Fields(resume)cboSex.Text=.Fields(sex)dcbClass.Text=.Fields(class)imgPhoto.Picture=LoadPicture(ReadImage(.Field

7、s(photo)EndIfEndWithEndSub在DataEnv.rsStudent中查詢serial為sSerial的學籍信息SubSeekStudent(sSerialAsString)IfNot(DataEnv.rsStudent.EOFAndDataEnv.rsStudent.BOF)ThenDimTempAsStringTemp=serial=&sSerial&DataEnv.rsStudent.MoveFirstDataEnv.rsStudent.FindTemp刷新所綁定的控件CallRefreshBindingEndIfEndSub當改變記錄集時,需要刷新用戶導航的網(wǎng)格控件

8、SubRefreshGrid()grdScan.DataMember=grdScan.RefreshDataEnv.rssqlSeek.RequerygrdScan.DataMember=sqlSeekgrdScan.Refresh刷新各個綁定控件CallgrdScan_ChangeEndSub用以在瀏覽時,根據(jù)當前記錄所出的位置不同,來改變各個瀏覽按鈕的狀態(tài)SubChangeBrowseState()WithDataEnv.rssqlSeekIf.State=adStateClosedThen.Open如果沒有任何記錄,使某些按鈕無效;否則則使這些按鈕有效If.BOFAnd.EOFThenc

9、mdAdd.Enabled=TruecmdEdit.Enabled=FalsecmdDelete.Enabled=FalsecmdUpdate.Enabled=FalsecmdReport.Enabled=FalsefraBrowse.Enabled=FalseElsecmdAdd.Enabled=TruecmdEdit.Enabled=TruecmdDelete.Enabled=TruecmdUpdate.Enabled=FalsecmdReport.Enabled=TruefraBrowse.Enabled=TrueEndIf假如處于記錄的頭部If.BOFThenIfNot.EOFThen

10、DataEnv.rsStudent.MoveFirstcmdPrevious.Enabled=FalsecmdFirst.Enabled=FalseElsecmdPrevious.Enabled=TruecmdFirst.Enabled=TrueEndIf假如處于記錄的尾部If.EOFThenIfNot.BOFThenDataEnv.rsStudent.MoveLastcmdNext.Enabled=FalsecmdLast.Enabled=FalseElsecmdNext.Enabled=TruecmdLast.Enabled=TrueEndIfEndWithmstrFileName=End

11、SubPrivateSubcboDep_Click()DimrsClassAsNewADODB.RecordsetDimstrSQL根據(jù)所選的系的不同,采用不同的SQL語句IfcboDep.ItemData(cboDep.ListIndex)=0ThenstrSQL=select*from班級信息表dept_id=&ElsestrSQL=select*from班級信息表wherecboDep.ItemData(cboDep.ListIndex)EndIfrsClass.OpenstrSQL,DataEnv.Con將所查到的rsClass中的內(nèi)容來填充cboClasscboClass.Clear

12、cboClass.AddItem全部WhileNotrsClass.EOFcboClass.AddItemrsClass(Name)rsClass.MoveNextWendcboClass.ListIndex=0rsClass.CloseSetrsClass=NothingEndSubPrivateSubcmdAdd_Click()添加記錄fraSeek.Enabled=FalsefraBrowse.Enabled=FalsegrdScan.Enabled=FalseDataEnv.rsStudent.AddNewdtpBirth.Value=1980-01-01fraInfo.Enabled

13、=TruefraBrowse.Enabled=FalsecmdAdd.Enabled=FalsecmdEdit.Enabled=FalsecmdDelete.Enabled=FalsecmdUpdate.Enabled=TruecmdReport.Caption=取消cmdReport.Enabled=TruembClose=False不能關閉窗口EndSubPrivateSubcmdDelete_Click()如果出錯,則顯示錯誤代碼OnErrorGoToerrHandlerIfMsgBox(要刪除記錄?,vbYesNo+vbQuestion+vbDefaultButton2,確認)=vbY

14、esThen通過在DataEnv.Con中執(zhí)行SQL命令,來刪除記錄DataEnv.Con.Executedeletefrom學生信息表whereserial=&txtSerial&DataEnv.rsStudent.MoveNextIfDataEnv.rsStudent.EOFThenDataEnv.rsStudent.MoveLast刷新用戶導航的網(wǎng)格控件CallRefreshGridEndIfExitSuberrHandler:MsgBoxErr.Description,vbCritical,錯誤EndSubPrivateSubcmdEdit_Click()編輯記錄之前,需要設置其他控件

15、的Enabled屬性fraSeek.Enabled=FalsefraBrowse.Enabled=FalsegrdScan.Enabled=FalsefraInfo.Enabled=TruecmdAdd.Enabled=FalsecmdEdit.Enabled=FalsecmdDelete.Enabled=FalsecmdUpdate.Enabled=TruecmdReport.Caption=取消更改cmdReport標題cmdReport.Enabled=TruembClose=False出于編輯狀態(tài),則用戶不能關閉窗口EndSubPrivateSubcmdFirst_Click()移動到

16、記錄的頭部,并改變各個瀏覽按鈕的狀態(tài)DataEnv.rssqlSeek.MoveFirstDataEnv.rssqlSeek.MovePreviousCallChangeBrowseStateEndSubPrivateSubcmdLast_Click()移動到記錄的尾部,并改變各個瀏覽按鈕的狀態(tài)DataEnv.rssqlSeek.MoveLastDataEnv.rssqlSeek.MoveNextCallChangeBrowseStateEndSubPrivateSubcmdList_Click()針對所選的班級,列出班級中所有的學籍信息DimstrSQLIfcboClass.Text=全部T

17、henstrSQL=from學生信息表orderbyserialElsestrSQL=from學生信息表whereclass=&cboClass&orderbyserialEndIfDataEnv.rsStudent.CloseDataEnv.rsStudent.Openselect*&strSQLDataEnv.rssqlSeek.CloseDataEnv.rssqlSeek.Openselectserial,name&strSQL刷新用戶導航的網(wǎng)格控件,并且根據(jù)記錄集中記錄的數(shù)目,來改變各個瀏覽按鈕的狀態(tài)。CallRefreshGridCallChangeBrowseStateCallgr

18、dScan_ChangeEndSubPrivateSubcmdNext_Click()移動到記錄的下一條DataEnv.rssqlSeek.MoveNextCallChangeBrowseStateEndSubPrivateSubcmdPrevious_Click()移動到記錄的上一條DataEnv.rssqlSeek.MovePreviousCallChangeBrowseStateEndSubPrivateSubcmdReport_Click()OnErrorResumeNextIfcmdReport.Caption=取消Then取消所使用的更新更新DataEnv.rsStudent.Ca

19、ncelUpdate重新顯示原來數(shù)據(jù)集中的內(nèi)容IfDataEnv.rsStudent.BOFThenDataEnv.rsStudent.MoveFirstElseDataEnv.rsStudent.MovePreviousDataEnv.rsStudent.MoveNextEndIfCallRefreshBindingCallChangeBrowseStatefraSeek.Enabled=TruefraBrowse.Enabled=TruefraInfo.Enabled=FalsegrdScan.Enabled=TruecmdReport.Caption=報表(R)mbClose=TrueE

20、lse生成報表DimstrSQLAsStringDataEnv.rsrptStudent.ClosestrSQL=select*from學生信息表whereserial=&txtSerial.Text&DataEnv.rsrptStudent.OpenstrSQLrptStudent.ShowEndIfEndSubPrivateSubcmdSelectPhoto_Click()OnErrorGoToerrHandler:dlgSelect.DialogTitle=選擇該學生的照片dlgSelect.Filter=所有圖形文件|*.bmp;*.dib;*.gif;*.jpg;*.ico|位圖文件

21、(*.bmp;*.dib)&_|*.bmp;*.dib|GIF文件(*.gif)|*.gif|JPEG文件(*.jpg)|*.jpg|圖標文件(*.ico)|*.icodlgSelect.ShowOpenIfdlgSelect.FileName=ThenExitSubimgPhoto.Picture=LoadPicture(dlgSelect.FileName)mstrFileName=dlgSelect.FileNameExitSuberrHandler:MsgBoxErr.Description,vbCritical,錯誤EndSubPrivateSubcmdUpdate_Click()更

22、新所添加或者修改的記錄OnErrorGoToerrHandler:DimstrAsStringstr=txtSerial.TextWithDataEnv.rsStudent.Fields(Serial)=txtSerial.Text.Fields(name)=txtName.Text.Fields(sex)=cboSex.Text.Fields(class)=dcbClass.Text.Fields(birthday)=dtpBirth.Value.Fields(tel)=txtTelephone.Text.Fields(address)=txtAddress.Text.Fields(resu

23、me)=txtResume.TextIfmstrFileNameThenCallWriteImage(.Fields(photo),mstrFileName).UpdateEndWithcmdReport.Caption=報表(&R)cmdUpdate.Enabled=FalsefraInfo.Enabled=FalsembClose=TrueIfDataEnv.rssqlSeek.State=adStateClosedThenDataEnv.rssqlSeek.Open刷新右端用以導航的網(wǎng)格控件CallRefreshGrid根據(jù)記錄集中記錄的個數(shù),改變各個按鈕的狀態(tài)CallChangeBro

24、wseState定位到剛剛添加或者修改過的記錄DataEnv.rssqlSeek.MoveFirstDataEnv.rssqlSeek.Findserial=&str&fraSeek.Enabled=TruefraBrowse.Enabled=TruegrdScan.Enabled=TrueExitSuberrHandler:MsgBoxErr.Description,vbCritical,錯誤EndSubPrivateSubdcbClass_Click(AreaAsInteger)IftxtSerial=ThentxtSerial=dcbClass.TextEndIfEndSubPrivat

25、eSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)IfNotmbCloseThenMsgBox數(shù)據(jù)正被修改,窗口不能關閉,vbCritical,錯誤Cancel=TrueEndIfEndSubPrivateSubfraInfo_DragDrop(SourceAsControl,XAsSingle,YAsSingle)EndSubPrivateSubgrdScan_Change()IfgrdScan.ApproxCount0ThenCallSeekStudent(grdScan.Columns(0).CellText(grdScan

26、.Bookmark)EndIfEndSubPrivateSubgrdScan_RowColChange(LastRowAsVariant,ByValLastColAsInteger)當前行改變,則動態(tài)改變所要顯示的記錄IfLastRowgrdScan.BookmarkThenIfgrdScan.ApproxCount0ThenCallSeekStudent(grdScan.Columns(0).CellText(grdScan.Bookmark)EndIfEndIfEndSubPrivateSubWriteImage(ByRefFldAsADODB.Field,DiskFileAsString

27、)DimbyteData()AsByte定義數(shù)據(jù)塊數(shù)組DimNumBlocksAsLong定義數(shù)據(jù)塊個數(shù)DimFileLengthAsLong標識文件長度DimLeftOverAsLong定義剩余字節(jié)長度DimSourceFileAsLong定義自由文件號DimiAsLong定義循環(huán)變量ConstBLOCKSIZE=4096每次讀寫塊的大小SourceFile=FreeFile提供一個尚未使用的文件號OpenDiskFileForBinaryAccessReadAsSourceFile打開文件FileLength=LOF(SourceFile)得到文件長度IfFileLength=0Then判

28、斷文件是否存在CloseSourceFileMsgBoxDiskFile&無內(nèi)容或不存在!ElseNumBlocks=FileLengthBLOCKSIZE得到數(shù)據(jù)塊的個數(shù)LeftOver=FileLengthModBLOCKSIZE得到剩余字節(jié)數(shù)Fld.Value=NullReDimbyteData(BLOCKSIZE)重新定義數(shù)據(jù)塊的大小Fori=1ToNumBlocksGetSourceFile,byteData()讀到內(nèi)存塊中Fld.AppendChunkbyteData()寫入FLDNextiReDimbyteData(LeftOver)重新定義數(shù)據(jù)塊的大小GetSourceFile

29、,byteData()讀到內(nèi)存塊中Fld.AppendChunkbyteData()寫入FLDCloseSourceFile關閉源文件EndIfEndSubPrivateFunctionReadImage(blobColumnAsADODB.Field)AsString取得一個臨時性文件DimstrFileNameAsStringstrFileName=ImageTmpDimFileNumberDimDataLenDimChunksDimChunkAry()DimChunkSizeDimFragmentDimlngIAsIntegerAsLongAsLongAsByteAsLongAsLong

30、AsLong計數(shù)器文件號文件長度數(shù)據(jù)塊數(shù)數(shù)據(jù)塊數(shù)組數(shù)據(jù)塊大小零碎數(shù)據(jù)大小OnErrorGoToerrHanderChunkSize=2048定義塊大小為2KIfIsNull(blobColumn)ThenExitFunctionDataLen=blobColumn.ActualSize獲得圖像大小IfDataLen0Then有零碎數(shù)據(jù),則先讀該數(shù)據(jù)ReDimChunkAry(Fragment-1)ChunkAry=blobColumn.GetChunk(Fragment)PutFileNumber,ChunkAry寫入文件EndIfReDimChunkAry(ChunkSize-1)為數(shù)據(jù)塊重

31、新開辟空間ForlngI=1ToChunks循環(huán)讀出所有塊ChunkAry=blobColumn.GetChunk(ChunkSize)在數(shù)據(jù)庫中連續(xù)讀數(shù)據(jù)塊PutFileNumber,ChunkAry()將數(shù)據(jù)塊寫入文件中NextlngICloseFileNumber關閉文件ReadImage=strFileNameExitFunctionerrHander:ReadImage=EndFunctionPrivateSubimgPhoto_Click()SubEndOptionExplicit表示當前的用戶類型:0-管理員類型的用戶;1-學生類型的用戶PublicmnUserTypeAsInt

32、eger表示當前登錄的用戶名PublicmsUserNameAsStringPrivateSubMDIForm_Load()根據(jù)不同的用戶類型,使相應的菜單項可見SelectCasemnUserTypeCase0:以管理員身份登錄mnuFind.Visible=TruetlbMain.Buttons.Item(3).Visible=TruetlbMain.Buttons.Item(4).Visible=TrueExitSubCase1:以學生身份登錄,只能查詢自己的信息mnuFind.Visible=False“信息查詢”菜單不可見tlbMain.Buttons.Item(3).Visible

33、=False“信息查詢”按鈕不可見tlbMain.Buttons.Item(4).Visible=False第二個分隔條不可見ExitSubEndSubEndSelectEndSubPrivateSubMDIForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)IfMsgBox(真的要對出本系統(tǒng)嗎?,vbQuestion+vbYesNo+vbDefaultButton2,退出)=vbNoThenCancel=1EndIfEndSubPrivateSubmnuAbout_Click()LoadfrmSplashfrmSplash.mbAbout

34、=TruefrmSplash.ShowvbModalEndSub設置主窗體中所有最小化MDI子窗體圖標重排設置主窗體中所有非最小化MDI子窗體層疊顯示PrivateSubmnuArr_Click()frmMain.Arrange(3)EndSubPrivateSubmnuCas_Click()frmMain.Arrange(0)EndSubPrivateSubmnuExit_Click()UnloadMeEndSubPrivateSubmnuFind_Click()frmFind.ShowEndSubPrivateSubmnuHori_Click()frmMain.Arrange(1)設置主窗

35、體中所有非最小化MDI子窗體水平平鋪EndSubPrivateSubmnuLog_Click()IfMsgBox(若重新登錄,所有窗體都將關閉!&vbCrLf&是否重新登錄?,vbQuestion+vbYesNo+vbDefaultButton2,重新登錄)=vbYesThenUnloadMefrmLogin.ShowEndIfPrivateSubmnuStudent_Click()LoadfrmStudentfrmStudent.ShowEndSubPrivateSubmnuVer_Click()frmMain.Arrange(2)設置主窗體中所有非最小化MDI子窗體垂直平鋪EndSubPr

36、ivateSubtlbMain_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCaseStudentmnuStudent_ClickExitSubCaseFindmnuFind_ClickExitSubCaseLoginmnuLog_ClickExitSubCaseExitmnuExit_ClickExitSubEndSelect表示當前用戶登錄所選擇的身份,即用戶類型,0-表示教務管理人員;1-表示學生DimmnUserTypeAsIntegerPrivateSubcmdCancel_Click()Unload

37、MeEndSubPrivateSubcmdOK_Click()取得用戶輸入的用戶名和密碼EndSubDimuserAsString,pwdAsStringuser=Trim(txtUser)pwd=Trim(txtPwd)根據(jù)不同的身份,選擇不同的表用以查詢DimrAsNewADODB.RecordsetSetr=DataEnv.rssqlSeekDimstrSQLAsStringSelectCasemnUserTypeCase0:若身份為管理員strSQL=select*from系統(tǒng)人員表wherename=&user&andpwd=&pwd&Case1:若身份為學生strSQL=selec

38、t*from學生信息表wherename=&user&andserial=&pwd&EndSelectOnErrorResumeNext查詢DataEnv.rssqlSeek的狀態(tài),如果已經(jīng)打開,則先關閉Ifr.State=adStateOpenThenr.Closer.OpenstrSQL根據(jù)strSQL的內(nèi)容刷新DataEnv.rssqlSeek用戶密碼錯誤的次數(shù),如果錯誤次數(shù)超過3次,則退出系統(tǒng)StaticnTryCountAsIntegerIfr.EOFThen登錄失敗MsgBox對不起,無此用戶或者密碼不正確!請重新輸入!,vbCritical,錯誤txtUser.SetFocust

39、xtUser.SelStart=0txtUser.SelLength=Len(txtUser)nTryCount=nTryCount+1IfnTryCount=3ThenMsgBox您無權操作本系統(tǒng)!,vbCritical,錯誤UnloadMeEndIfElse登陸成功顯示MDI窗體,并將用戶類型和用戶名傳到MDI窗體中的mnUserType,msUserName中WithfrmMain.mnUserType=mnUserType.msUserName=userEndWithLoadfrmMainfrmMain.ShowUnloadMeEndIfPrivateSubForm_Load()opt

40、UserType(0).Value=TrueEndSubPrivateSuboptUserType_Click(IndexAsInteger)mnUserType=IndexEndSubExplicitPrivateSubCommand1_Click()DimstrCon1AsStringDimstrCon2AsStringOnErrorGoTomyerrIfTrim(Text1.Text)=OrTrim(Text2.Text)=ThenIfMsgBox(請輸入查詢條件!,vblnformation,提示)ThenGoTomyerrEndIfSelectCaseTrim(Combo1.Text)Case學號strCon1=SerialCase姓名strCon1=NameCase班級strCon1=ClassCase生日strCon1=BirthdayCase性別strCon1=Se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論