VB考试系统文档格式.docx
《VB考试系统文档格式.docx》由会员分享,可在线阅读,更多相关《VB考试系统文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
二、设备与环境
PC兼容机、Windows操作系统、VB6.0软件等。
三、功能模块简介和系统结构图
本系统主要运用数据库知识,综合VB其他程序,设计出了一套布局合理的考试系统,学生通过系统的使用来检验自己的VB知识结构,教师同时可通过查看学生答题的结果及时了解学生对知识的掌握情况。
教师能够通过系统,对学生的答题信息进行添加,修改。
用户登陆时即可分为教师和学生,这样增加了系统的安全性。
(一)功能模块简介
系统结构图
系统说明
(1)学生登陆系统。
系统运用用户登录的方式,保证了系统信息的安全。
学生进入系统进行VB知识的考察,题目包括选择题,填空题和编程题,题号随机变动,考生可随时对答卷进行保存,点击“交卷”按钮即可知道自己的答题情况和各题所得分数,当同一考生再次进入系统时,其答题顺序与内容依旧保留,保证了内容的连续性。
同时当考生开始答卷时,系统倒计时启动,90分钟后系统自动交卷保存。
(2)教师登录系统。
教师需输入自己用户名方可登陆,保证了系统的安全。
教师进入系统后即可进行对考生考试成绩的查看,了解该学生的知识掌握度。
同时,教师还可以新增或更改考题,以此来保持此系统的持久性。
四、系统的主要界面设计及运行说明
1、登陆窗体
登录时设计了图片的变幻
老师进入需输入自己用户名,进入后选择对考生答卷的查看和试题的修改。
考生登录时进行信息的输入和确认
开始答题,系统开始倒计时
考生得到考试结果
五、主要的源程序代码
1、登陆系统代码(包括图片变幻)
Constbmpfilemax=5
Dimbmpfile(bmpfilemax)AsString
Dimdrawbmpmode(bmpfilemax)AsInteger
Dimbmpnum,movestep,xmax,ymaxAsInteger
DimkxyAsSingle
PrivateSubCommand1_Click()
考试系统终端.Show
UnloadMe
EndSub
PrivateSubCommand2_Click()
End
PrivateSubForm_Load()
bmpnum=0
bmpfile(0)=App.Path+"
\海滩1.jpg"
bmpfile
(1)=App.Path+"
\海滩3.jpg"
bmpfile
(2)=App.Path+"
\海滩4.jpg"
bmpfile(3)=App.Path+"
\海滩5.jpg"
bmpfile(4)=App.Path+"
\海滩6.jpg"
drawbmpmode(0)=1
drawbmpmode
(1)=5
drawbmpmode
(2)=3
drawbmpmode(3)=4
drawbmpmode(4)=2
movestep=0
xmax=ttt2.ScaleWidth/2
ymax=ttt2.ScaleHeight/2
kxy=ymax/xmax
Picture1.Picture=LoadPicture(bmpfile(bmpnum))
Timer1.Interval=30
PrivateSubTimer1_Timer()
hDestDC=ttt2.hDC
hSrcDC=Picture1.hDC
drawflag=drawbmpmode(bmpnum)
SelectCasedrawflag
Case1
endmax=xmax
X1=xmax-movestep
w=movestep*2
Y1=CInt(ymax-movestep*kxy)
h=CInt(2*movestep*kxy)
i=BitBlt(hDestDC,X1,Y1,w,h,hSrcDC,X1,Y1,SRCCOPY)
Case2
h=ttt2.ScaleHeight
i=BitBlt(hDestDC,0,0,w,h,hSrcDC,X1,Y1,SRCCOPY)
Case3
w=movestep
i=BitBlt(hDestDC,0,0,w,h,hSrcDC,0,0,SRCCOPY)
X1=ttt2.ScaleWidth-movestep
i=BitBlt(hDestDC,X1,0,w,h,hSrcDC,X1,0,SRCCOPY)
Case4
endmax=CInt(2*xmax/10)
tempi=CInt(2*xmax/10)
Forij=0To9
i=BitBlt(hDestDC,tempi*ij,0,w,h,hSrcDC,tempi*ij,0,SRCCOPY)
Nextij
Case5
Forih=0Tow-1
Forik=0To9
l=tempi*ik+tempi/2
t=tempi*ij+tempi/2
i=BitBlt(hDestDC,1-(w-ih),t-ih,(w-ih)*2,1,hSrcDC,1-(w-ih),t-ih,SRCCOPY)
i=BitBlt(hDestDC,1-(w-ih),t+ih,(w-ih)*2,1,hSrcDC,1-(w-ih),t+ih,SRCCOPY)
Nextik
Nextih
EndSelect
ttt2.Refresh
movestep=movestep+2
Ifmovestep>
endmaxThen
bmpnum=bmpnum+1
Ifbmpnum>
=bmpfilemaxThen
EndIf
教师登录窗体
Text1.PasswordChar="
*"
DimiAsInteger
IfText1.Text<
>
"
hjl"
Then
i=MsgBox("
密码错误"
5+vbExclamation,"
输入密码"
)
Ifi=2Then
Else
Text1.Text="
"
:
Text1.SetFocus
学生答题库.Show
进入题库代码
选择题.Show
填空题.Show
PrivateSubCommand3_Click()
i=Shell("
C:
\ProgramFiles\MicrosoftVisualStudio\VB98\VB6.exe"
1)
PrivateSubCommand4_Click()
教师填空题程序更改代码
IfCommand1.Caption="
添加"
Command1.Caption="
确认"
mbookmark=Data1.Recordset.Bookmark
Data1.Recordset.AddNew
Text1.SetFocus
Data1.Recordset.Update
Data1.Recordset.MoveLast
f=MsgBox("
是否确定删除该内容"
vbYesNo)
Iff=vbYesThen
OnErrorResumeNext
Data1.Recordset.Delete
Data1.Recordset.MoveNext
IfData1.Recordset.EOFThenData1.Recordset.MoveLast
IfCommand3.Caption="
修改"
Command3.Caption="
Data1.Recordset.Edit
OnErrorGoToRefreshErr
Data1.Refresh
ExitSub
RefreshErr:
PrivateSubCommand5_Click()
PrivateSubData1_Reposition()
Data1.Caption="
第"
&
Data1.Recordset.Fields(0)&
题"
教师选择题程序更改代码
PrivateSubAdodc1_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)
Adodc1.Caption="
CStr(Adodc1.Recordset.Fields(0))&
PrivateSubAdodc1_WillChangeRecord(ByValadReasonAsADODB.EventReasonEnum,ByValcRecordsAsLong,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)
'
验证代码置于此处
下列动作发生时该事件被调用
DimbCancelAsBoolean
SelectCaseadReason
CaseadRsnAddNew
CaseadRsnClose
CaseadRsnDelete
CaseadRsnFirstChange
CaseadRsnMove
CaseadRsnRequery
CaseadRsnResynch
CaseadRsnUndoAddNew
CaseadRsnUndoDelete
CaseadRsnUndoUpdate
CaseadRsnUpdate
IfbCancelThenadStatus=adStatusCancel
PrivateSubForm_Unload(CancelAsInteger)
Screen.MousePointer=vbDefault
PrivateSubAdodc1_Error(ByValErrorNumberAsLong,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,fCancelDisplayAsBoolean)
错误处理程序代码置于此处
想要忽略错误,注释掉下一行
想要捕获它们,在此添加代码以处理它们
MsgBox"
Dataerroreventhiterr:
Description
PrivateSubcmdAdd_Click()
OnErrorGoToAddErr
Adodc1.Recordset.AddNew
AddErr:
MsgBoxErr.Description
PrivateSubcmdDelete_Click()
OnErrorGoToDeleteErr
WithAdodc1.Recordset
.Delete
.MoveNext
If.EOFThen.MoveLast
EndWith
DeleteErr:
PrivateSubcmdRefresh_Click()
只有多用户应用程序需要
Adodc1.Refresh
PrivateSubcmdUpdate_Click()
OnErrorGoToUpdateErr
Adodc1.Recordset.UpdateBatchadAffectAll
UpdateErr:
PrivateSubcmdClose_Click()
学生身份确认代码,同时进行考题的备份
Dimrecord_noAsInteger,xmzyAsstuType
Dimstrs1AsString*100
PrivateSubForm_Initialize()
mpath=App.Path
IfRight(mpath,1)<
\"
Thenmpath=mpath&
Openmpath+"
xm.dat"
ForRandomAs#1Len=Len(xmzy)
record_no=LOF
(1)/Len(xmzy)
Ifrecord_no>
0Then
Get#1,record_no,xmzy
Text1(0)=xmzy.strno:
Text1
(1)=xmzy.strname
Close#1
strs1="
你输入准考证号是:
+Text1(0).Text+Chr(13)+Chr(10)+"
考生姓名是:
+Text1
(1).Text+Chr(13)+Chr(10)+"
身份证号是:
+Text1
(2).Text
i=MsgBox(strs1,1+vbQuestion,"
登录提示(欢迎访问栩榛的QQ:
605254012)"
Ifi=1Then
record_no=LOF
(1)/Len(xmzy)+1
xmzy.strno=Text1(0):
xmzy.strname=Text1
(1):
xmzy.mtime=Time()
Put#1,record_no,xmzy
考生须知.Show
formdxt.Option1(i).Value=False
身份确认.Show
Label1.MoveLabel1.Left-50
Label1.ForeColor=QBColor(15*Rnd)
IfLabel1.Left<
-3375Then
Label1.Left=4800
学生考试系统父窗体代码
DimLtime%
PrivateSubMDIForm_Load()
Ltime=5400
formdxt.Show
PrivateSubmenudxt_Click()
formdxt.Show:
formdxt.ZOrder
PrivateSubmenutct_Click()
formtct.Show:
formtct.ZOrder
PrivateSubmenubct_Click()
formbct.Show:
formbct.ZOrder
PrivateSubjiaojuan_Click()
退出否?
52,"
VB考试"
Ifi=6Then
menusave_Click
结果.Show
PrivateSubhelp_Click()
考生须知.Show
EndSub
PrivateSubmenusave_Click()
DimmswriteAsString
FileCopyApp.Path+"
\xm.dat"
"
D:
\xztc"
formdxt.Data1.DatabaseName="
VBDXT.mdb"
formdxt.Data1.RecordSource="
vbdxt"
formdxt.Data1.Refresh
mswrite="
DoWhileNotformdxt.Data1.Recordset.EOF
mswrite=mswrite&
formdxt.Data1.Recordset.Fields("
ID"
)&
"
formdxt.Data1.Recordset.Fields(7)&
formdxt.Data1.Recordset.MoveNext
Loop
Open"
ForAppendAs#1
Print#1,vbCrLf,"
单选"
mswrite
formtct.Data2.DatabaseName="
VBTCT.mdb"
formtct.Data2.RecordSource="
vbtct"
formtct.Data2.Refresh
DoWhileNotformtct.Data2.Recordset.EOF
formtct.Data2.Recordset.Fields("
vbCrLf
题号"
答1"
答2"
mswri