VB学生信息管理系统及源代码_第1页
VB学生信息管理系统及源代码_第2页
VB学生信息管理系统及源代码_第3页
VB学生信息管理系统及源代码_第4页
VB学生信息管理系统及源代码_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VB学生信息管理系统及源代码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表中读取数据,填充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表中读取数据,填充到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的当前记录发生变化时,刷新所绑定的控件(用户改变了当前记录)SubRefreshBinding()OnErrorResumeNextWithDataEnv.rsStudentIfDataEnv.rssqlSeek.BOFAndDataEnv.rssqlSeek.EOFThen如果不存在任何记录,则清空所有的绑定的内容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当改变记录集时,需要刷新用户导航的网格控件

8、SubRefreshGrid()grdScan.DataMember=grdScan.RefreshDataEnv.rssqlSeek.RequerygrdScan.DataMember=sqlSeekgrdScan.Refresh刷新各个绑定控件CallgrdScan_ChangeEndSub用以在浏览时,根据当前记录所出的位置不同,来改变各个浏览按钮的状态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根据所选的系的不同,采用不同的SQL语句IfcboDep.ItemData(cboDep.ListIndex)=0ThenstrSQL=select*from班级信息表dept_id=&ElsestrSQL=select*from班级信息表wherecboDep.ItemData(cboDep.ListIndex)EndIfrsClass.OpenstrSQL,DataEnv.Con将所查到的rsClass中的内容来填充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中执行SQL命令,来删除记录DataEnv.Con.Executedeletefrom学生信息表whereserial=&txtSerial&DataEnv.rsStudent.MoveNextIfDataEnv.rsStudent.EOFThenDataEnv.rsStudent.MoveLast刷新用户导航的网格控件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出于编辑状态,则用户不能关闭窗口EndSubPrivateSubcmdFirst_Click()移动到

16、记录的头部,并改变各个浏览按钮的状态DataEnv.rssqlSeek.MoveFirstDataEnv.rssqlSeek.MovePreviousCallChangeBrowseStateEndSubPrivateSubcmdLast_Click()移动到记录的尾部,并改变各个浏览按钮的状态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刷新用户导航的网格控件,并且根据记录集中记录的数目,来改变各个浏览按钮的状态。CallRefreshGridCallChangeBrowseStateCallgr

18、dScan_ChangeEndSubPrivateSubcmdNext_Click()移动到记录的下一条DataEnv.rssqlSeek.MoveNextCallChangeBrowseStateEndSubPrivateSubcmdPrevious_Click()移动到记录的上一条DataEnv.rssqlSeek.MovePreviousCallChangeBrowseStateEndSubPrivateSubcmdReport_Click()OnErrorResumeNextIfcmdReport.Caption=取消Then取消所使用的更新更新DataEnv.rsStudent.Ca

19、ncelUpdate重新显示原来数据集中的内容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刷新右端用以导航的网格控件CallRefreshGrid根据记录集中记录的个数,改变各个按钮的状态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数据正被修改,窗口不能关闭,vbCritical,错误Cancel=TrueEndIfEndSubPrivateSubfraInfo_DragDrop(SourceAsControl,XAsSingle,YAsSingle)EndSubPrivateSubgrdScan_Change()IfgrdScan.ApproxCount0ThenCallSeekStudent(grdScan.Columns(0).CellText(grdScan

26、.Bookmark)EndIfEndSubPrivateSubgrdScan_RowColChange(LastRowAsVariant,ByValLastColAsInteger)当前行改变,则动态改变所要显示的记录IfLastRowgrdScan.BookmarkThenIfgrdScan.ApproxCount0ThenCallSeekStudent(grdScan.Columns(0).CellText(grdScan.Bookmark)EndIfEndIfEndSubPrivateSubWriteImage(ByRefFldAsADODB.Field,DiskFileAsString

27、)DimbyteData()AsByte定义数据块数组DimNumBlocksAsLong定义数据块个数DimFileLengthAsLong标识文件长度DimLeftOverAsLong定义剩余字节长度DimSourceFileAsLong定义自由文件号DimiAsLong定义循环变量ConstBLOCKSIZE=4096每次读写块的大小SourceFile=FreeFile提供一个尚未使用的文件号OpenDiskFileForBinaryAccessReadAsSourceFile打开文件FileLength=LOF(SourceFile)得到文件长度IfFileLength=0Then判

28、断文件是否存在CloseSourceFileMsgBoxDiskFile&无内容或不存在!ElseNumBlocks=FileLengthBLOCKSIZE得到数据块的个数LeftOver=FileLengthModBLOCKSIZE得到剩余字节数Fld.Value=NullReDimbyteData(BLOCKSIZE)重新定义数据块的大小Fori=1ToNumBlocksGetSourceFile,byteData()读到内存块中Fld.AppendChunkbyteData()写入FLDNextiReDimbyteData(LeftOver)重新定义数据块的大小GetSourceFile

29、,byteData()读到内存块中Fld.AppendChunkbyteData()写入FLDCloseSourceFile关闭源文件EndIfEndSubPrivateFunctionReadImage(blobColumnAsADODB.Field)AsString取得一个临时性文件DimstrFileNameAsStringstrFileName=ImageTmpDimFileNumberDimDataLenDimChunksDimChunkAry()DimChunkSizeDimFragmentDimlngIAsIntegerAsLongAsLongAsByteAsLongAsLong

30、AsLong计数器文件号文件长度数据块数数据块数组数据块大小零碎数据大小OnErrorGoToerrHanderChunkSize=2048定义块大小为2KIfIsNull(blobColumn)ThenExitFunctionDataLen=blobColumn.ActualSize获得图像大小IfDataLen0Then有零碎数据,则先读该数据ReDimChunkAry(Fragment-1)ChunkAry=blobColumn.GetChunk(Fragment)PutFileNumber,ChunkAry写入文件EndIfReDimChunkAry(ChunkSize-1)为数据块重

31、新开辟空间ForlngI=1ToChunks循环读出所有块ChunkAry=blobColumn.GetChunk(ChunkSize)在数据库中连续读数据块PutFileNumber,ChunkAry()将数据块写入文件中NextlngICloseFileNumber关闭文件ReadImage=strFileNameExitFunctionerrHander:ReadImage=EndFunctionPrivateSubimgPhoto_Click()SubEndOptionExplicit表示当前的用户类型:0-管理员类型的用户;1-学生类型的用户PublicmnUserTypeAsInt

32、eger表示当前登录的用户名PublicmsUserNameAsStringPrivateSubMDIForm_Load()根据不同的用户类型,使相应的菜单项可见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(真的要对出本系统吗?,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)根据不同的身份,选择不同的表用以查询DimrAsNewADODB.RecordsetSetr=DataEnv.rssqlSeekDimstrSQLAsStringSelectCasemnUserTypeCase0:若身份为管理员strSQL=select*from系统人员表wherename=&user&andpwd=&pwd&Case1:若身份为学生strSQL=selec

38、t*from学生信息表wherename=&user&andserial=&pwd&EndSelectOnErrorResumeNext查询DataEnv.rssqlSeek的状态,如果已经打开,则先关闭Ifr.State=adStateOpenThenr.Closer.OpenstrSQL根据strSQL的内容刷新DataEnv.rssqlSeek用户密码错误的次数,如果错误次数超过3次,则退出系统StaticnTryCountAsIntegerIfr.EOFThen登录失败MsgBox对不起,无此用户或者密码不正确!请重新输入!,vbCritical,错误txtUser.SetFocust

39、xtUser.SelStart=0txtUser.SelLength=Len(txtUser)nTryCount=nTryCount+1IfnTryCount=3ThenMsgBox您无权操作本系统!,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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论