版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《家庭居室裝飾裝修工程施工合同》(示范文本)
- 大學生參觀報告范文
- 上海視覺藝術學院《地圖制圖學B》2023-2024學年第一學期期末試卷
- 課題申報書:高等職業(yè)教育與區(qū)域創(chuàng)新能力發(fā)展的耦合路徑研究
- 課題申報書:高等教育擴張對就業(yè)匹配的影響機制與政策優(yōu)化研究
- 課題申報書:復雜口譯場景中伴語手勢影響源語理解的認知神經(jīng)機制研究
- 課題申報書:法國精英大學校拔尖創(chuàng)新人才培養(yǎng)特點與機制的實證研究
- 智能交通系統(tǒng)的設計與實現(xiàn)
- 2024中考語文作文押題預測《遇見》(范文4篇可打?。?/a>
- 8《夢游天姥吟留別》《登高》聯(lián)讀公開課一等獎創(chuàng)新教學設計(表格式)統(tǒng)編版高中語文必修上冊
- 40篇短文搞定高中英語3500單詞
- 智慧物業(yè)綜合管理系統(tǒng)
- 三年級語文上冊期末《句子》專項訓練含答案
- 2024年中國遠洋海運集團招聘筆試參考題庫附帶答案詳解
- 2024年內(nèi)蒙古交通集團有限公司招聘筆試參考題庫附帶答案詳解
- 山東省聊城市文軒教育集團2023-2024學年九年級上學期期末化學模擬試卷
- 物業(yè)公司經(jīng)營規(guī)劃
- 2024年心腦血管藥物項目營銷策劃方案
- 攪拌站規(guī)劃設計方案
- 醫(yī)共體醫(yī)療質量控制中心工作職責(終版改)
- 四川省綿陽市2023年九年級上學期期末化學試題附答案
評論
0/150
提交評論