VB课程设计报告.docx
- 文档编号:29853149
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:23
- 大小:130.79KB
VB课程设计报告.docx
《VB课程设计报告.docx》由会员分享,可在线阅读,更多相关《VB课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
VB课程设计报告
VB课程设计报告
课题:
小学低年级数学自助练习与测试系统的设计:
要求设计与开发一个功能较为完善的小学低年级数学自助练习与测试系统。
姓名:
××
专业:
×××××××
班级:
×××××××
学号:
×××××××
2014年6月7日
一、需求分析
本次可以要解决的问题:
设计与开发一个功能较为完善的小学低年级数学自助练习与测试系统。
具体要求及限制条件:
能够分为练习与测试两个版块。
练习:
能自由选择难度及做题时间,随机产生题目(有加减乘运算),有练习结果评价。
测试:
在规定时间内完成,随机产生题目(有加减乘运算),有测试结果评价。
二、总体设计
3、开发平台介绍
VisualBasic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。
它源自于BASIC编程语言。
VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。
程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
4、详细设计
1、载入模块:
用户通过输入规定词汇(进入)登录系统(进入首页)。
单击菜单栏的“帮助”,则弹出“使用说明”对话框,单击“确定”按钮即可关闭该对话框。
图1载入窗口图2帮助窗口
2、首页模块:
用户可以自由选择练习、测试或退出,相应地只需单击按钮“我要练习”、“我要测试”、“退出系统”。
单击“我要练习”则进入练习模块;单击“我要测试”则弹出对话框“确定开始测试?
”,单击“确定”按钮即可进入测试模块,单击“取消”按钮则关闭该对话框、显示首页;单击“退出系统”,则退出该系统。
单击菜单栏的“帮助”,显示效果与载入模块相同。
图3首页窗口图4确定测试窗口
3、练习模块:
进入该模块,首先,显示选择难度与时间的窗口。
单击难度里的“简单”、“中等”或“较难”,来选择想要练习的难度(若没有选择,则默认为简单);在时间的文本框中输入对应的分钟数、秒数,来确定练习时间(若没有输入,则默认为0分钟0秒)。
单击“返回”按钮,则进入首页;单击“开始”按钮,进入练习的窗口。
在练习窗口,输入答案,单击“提交”按钮,即可反馈结果;单击“下一题”按钮,则出现下一题;单击“退出练习”按钮,出现询问确定退出的对话框,单击“确定”即可返回选择难度与时间的窗口。
若最终答完10题,则会显示提示“练习结束咯!
”;若时间到,则会显示“时间到了!
”,并且不能再继续答题。
图5选择难度与时间窗口图6练习窗口
图7反馈结果图8时间到
4、测试模块:
进入该模块,首先,显示测试的窗口。
在该窗口中,输入答案,单击“提交”按钮,即可反馈目前题目的结果;单击“下一题”按钮,则出现下一题;单击“退出测试”按钮,出现询问确定退出的对话框,单击“确定”即可返回首页窗口。
当最终答完20题,则会显示提示“恭喜你完成测试!
你可选择:
”。
单击“再来一次”按钮,则会重新开始测试。
单击“查看结果”按钮,则进入反馈结果的窗口。
当规定时间(5分钟)到,则会显示“很遗憾!
时间到!
你可选择:
”,其他设置与完成测试的一样。
进入反馈结果的窗口,会显示本次测试的用时、总分、正确题数、错误题数及提示。
若总分为90-100,则提示为“你真棒!
”;若总分为60-90,则提示为“加油哦!
”;若总分为0-60,则提示为“你能行!
”。
单击“返回”按钮,即可返回测试窗口。
图9测试窗口图10反馈目前题目的结果
图11完成测试图12反馈结果窗口
5、调试与测试
1、调试方法:
可通过设立断点的方法进行调试。
2、测试结果的分析与讨论:
运行程序后,出现如上述详细设计的各项功能。
3、测试过程中遇到的主要问题及采取的解决措施:
(1)练习窗口中,题目的运算符号及反馈结果的“√”“×”没有显示出来。
解决措施:
把Label6和Label8拉大。
(2)练习窗口中,第一题时,光标没有放到text1中。
解决措施:
在Form2的command1的Click事件中加入Form4.Text3.SetFocus。
(3)测试窗口中,对于加法的结果判断不正确。
解决措施:
把frmcs中的cstimu函数的加法部分的n1改为nn1。
(变量写错)
(4)测试窗口中,规定时间5分钟的预定义没有设置好地方。
解决措施:
在Form1的command2的Click事件中的if语句块里加入frmcs.pretime1=300。
6、用户手册
1、载入窗口中,输入“进入”,进入首页。
2、若要练习,则在首页单击“我要练习”,进入练习系统。
根据用户的实际情况,自由选择难度、输入时间(默认为简单、0分钟0秒)。
单击“开始”,进入练习。
在文本框中输入答案,单击“提交”,即可显示对错。
若正确,则单击“下一题”,继续做题;若错误,则需继续在文本框中输入答案并提交,直到做对方可单击“下一题”。
在预定时间内,若10题练习都做完,则单击“退出练习”即可返回选择难度与时间界面;若没有完成,则无法继续答题。
3、若要测试,则在首页单击“我要测试”,在弹出的对话框单击“确定”,进入测试系统。
在文本框中输入答案,单击“提交”,即可显示对错。
若正确,则单击“下一题”,继续做题;若错误,则会显示正确答案,单击“下一题”继续。
在规定时间(5分钟)内,若20题都做完,则会显示提示,单击“查看结果”,可进入反馈结果界面,查看用时、总分、正确题数、错误题数,单击“返回”,即可回到测试界面;单击“再来一次”,则开始新一轮测试;单击“退出练习”即首页。
若在规定时间内没有完成,则会显示提示并且无法继续答题,其他效果与完成的相同。
七、附录
1、载入窗体(Form3)代码:
PrivateSubbz_Click()
frmAbout.Show
EndSub
PrivateSubForm_Load()
Form3.Left=Screen.Width/2-5600'把窗体放在屏幕中间
Form3.Top=Screen.Height/2-4600
EndSub
PrivateSubText1_Change()
IfText1="进入"Then
Form1.Show
Form3.Hide
EndIf
EndSub
2、首页窗体(Form1)代码:
PrivateSubbz_Click()
frmAbout.Show
EndSub
PrivateSubCommand1_Click()
Form2.Left=Form1.Left'把Form2放在Form1位置
Form2.Top=Form1.Top
Form2.Show
Form1.Hide
Form2.Text1.SetFocus'把光标放到输入时间的文本框
EndSub
PrivateSubCommand2_Click()
r=MsgBox("测试:
在5分钟之内完成20道题。
确定开始测试?
",33,"我要测试")
Ifr=1Then'确定开始测试
Form1.Hide
frmcs.Show
frmcs.Text3.SetFocus'测试里的答题文本框聚焦光标
frmcs.Timer2.Enabled=True
frmcs.pretime1=300'测试时间设置为5分钟
EndIf
EndSub
PrivateSubCommand3_Click()
r=MsgBox("确定退出?
",33,"退出系统")
Ifr=1ThenEnd
EndSub
PrivateSubForm_Load()
Form1.Left=Screen.Width/2-5600'把窗体放在屏幕中间
Form1.Top=Screen.Height/2-4600
EndSub
3、练习选择难度、时间窗体(Form2)代码:
Publicfz,mz,ndAsInteger'定义文本框中输入的分钟、秒
PrivateSubCommand1_Click()
Form4.Show
Form4.Text3.SetFocus'光标聚焦在答题文本框中
Me.Hide
fz=Val(Text1)
mz=Val(Text2)
Form4.Timer1.Enabled=True'练习窗体开始计时
Form4.pretime=fz*60+mz
EndSub
PrivateSubCommand2_Click()
Form1.Show
Form2.Hide
EndSub
PrivateSubForm_Load()
Form2.Left=Screen.Width/2-5600'把窗体放在屏幕中间
Form2.Top=Screen.Height/2-4600
EndSub
PrivateSubOption1_Click(IndexAsInteger)'难度
nd=1
EndSub
PrivateSubOption2_Click()
nd=2
EndSub
PrivateSubOption3_Click()
nd=3
EndSub
4、练习窗体(Form4)代码:
Publicn1,n2,rrAsInteger'定义第一、二个数和结果
PublicnAsInteger'定义总题数
PublicpretimeAsInteger'定义总时间
Dimfz1AsInteger,mz1AsInteger'定义分钟、秒
PublicSubtimu()
DimNOp,tAsInteger,OpAsString'Op为运算符,NOp为运算符对应数字
IfForm2.nd=1Then
NOp=Int(2*Rnd+1)'产生1~2之间的数
n1=Int(6*Rnd):
n2=Int(6*Rnd)'难度为简单时,产生0~5之间的数
SelectCaseNOp'将1~3转换成相应的运算符
Case1
Op="+"
rr=n1+n2
Case2
Op="-"
Ifn1 n1=n2: n2=t rr=n1-n2'保证所得到的数为大于零的实数 EndSelect Label11=n1: Label6=Op: Label12=n2: Label7="="'将产生的数和运算组成当前题目 EndIf IfForm2.nd=2Then NOp=Int(2*Rnd+1)'产生1~2之间的数 n1=Int(10*Rnd): n2=Int(10*Rnd)'难度为中等时,产生0~10之间的数 SelectCaseNOp'将1~3转换成相应的运算符 Case1 Op="+" rr=n1+n2 Case2 Op="-" Ifn1 n1=n2: n2=t rr=n1-n2'保证所得到的数为大于零的实数 EndSelect Label11=n1: Label6=Op: Label12=n2: Label7="="'将产生的数和运算组成当前题目 EndIf IfForm2.nd=3Then NOp=Int(3*Rnd+1)'产生1~3之间的数 n1=Int(50*Rnd+1): n2=Int(50*Rnd+1)'难度为较难时,产生1~50之间的数 SelectCaseNOp'将1~3转换成相应的运算符 Case1 Op="+" rr=n1+n2 Case2 Op="-" Ifn1 n1=n2: n2=t rr=n1-n2'保证所得到的数为大于零的实数 Case3 Op="×" n1=Int(n1/5): n2=Int(n2/5)'将大的乘数转化为0~10的整数 rr=n1*n2 EndSelect Label11=n1: Label6=Op: Label12=n2: Label7="="'将产生的数和运算组成当前题目 EndIf EndSub PrivateSubCommand1_Click() IfNotIsNumeric(Text3)Then'判断是否输入的是数字 MsgBox"输入必须为数字! ",vbExclamation,"输入错误" Text3="" Text3.SetFocus ElseIfVal(Text3)=rrThen'输入结果正确时候的输出 Label8="√" Label9="你真棒! " n=n+1 Command3.Enabled=True: Command1.Enabled=False'提交不可用 Else'输入结果错误时候的输出 Label8="×" Label9="再想想吧" Text3.SetFocus Command3.Enabled=False EndIf EndSub PrivateSubCommand2_Click() r=MsgBox("确定退出练习? ",33,"退出练习") Ifr=1Then Form2.Show Form2.Text1="" Form2.Text2="" UnloadMe EndIf EndSub PrivateSubCommand3_Click() Text3="" Label8="" Label9="" Label5=n&".": Label4=10-n&"题" Command1.Enabled=True'按下下一题后,提交可用 Ifn<11Then'设置题数为10道题 Text3.SetFocus timu EndIf Ifn>10Then Label4=0&"题"'答完后,剩余题数为0 Label11.Visible=False Label12.Visible=False Text3.Visible=False'设置当第10道题时,输入答案的文本框不能使用 Label5.Visible=False Label6.Visible=False Label7.Visible=False Label8.Visible=False Label9.Visible=False Command1.Enabled=False Command3.Enabled=False Label10.Caption="练习结束咯! " Timer1.Enabled=False'停止计时 EndIf EndSub PrivateSubForm_Load() Form4.Left=Screen.Width/2-5600'把窗体放在屏幕中间 Form4.Top=Screen.Height/2-4600 Randomize'初始化随机数 timu Command3.Enabled=False n=1 Label5=n&".": Label4=10-n&"题"'题目序号为n,剩余题数为10-n EndSub PrivateSubText3_Change() IfText3=""ThenCommand3.Enabled=False EndSub PublicSubTimer1_Timer() fz1=pretime\60'计算分钟 mz1=pretimeMod60'计算秒 Label1.Caption=Str(fz1)&"分"&Str(mz1)&"秒" Iffz1=0Andmz1=0Then Timer1.Enabled=False Label11.Visible=False Label12.Visible=False Text3.Visible=False Label5.Visible=False Label6.Visible=False Label7.Visible=False Label8.Visible=False Label9.Visible=False Command1.Enabled=False Command3.Enabled=False Label10.Caption="时间到了! " EndIf pretime=pretime-1'倒数时间 EndSub 5、帮助窗体(frmAbout)代码: PrivateSubcmdOK_Click() UnloadMe EndSub PrivateSubForm_Load() frmAbout.Left=Screen.Width/2-2700'把窗体放在屏幕中间 frmAbout.Top=Screen.Height/2-2000 EndSub 6、测试窗体(frmcs)代码: Publicnn1,nn2,rrrAsInteger'定义第一、二个数和结果 Publicnz,nc,nAsInteger'定义正确、错误的题数、总题数 Publicpretime1AsInteger'定义总时间 Dimfz2AsInteger,mz2AsInteger'定义分钟、秒钟 PrivateSubCommand5_Click()'再来一次 r=MsgBox("确定要再来一次? ",33,"再来一次") Ifr=1Then n=1: nz=0: nc=0 pretime1=300 Timer2.Enabled=True Label11.Visible=True: Label11="" Label12.Visible=True: Label12="" Text3.Visible=True: Text3="": Text3.SetFocus Label4=20-n&"题" Label5.Visible=True: Label5=n&"." Label6.Visible=True: Label6="" Label7.Visible=True: Label7="" Label8.Visible=True: Label8="" Label9.Visible=True: Label9="" Command1.Visible=True Command3.Visible=True: Command3.Enabled=False Command4.Visible=False Command5.Visible=False Label10.Visible=False cstimu EndIf EndSub PublicSubcstimu() DimNOp,tAsInteger,OpAsString'Op为运算符,NOp为运算符对应数字 NOp=Int(3*Rnd+1)'产生1~3之间的数 nn1=Int(50*Rnd+1): nn2=Int(50*Rnd+1)'难度为较难时,产生1~50之间的数 SelectCaseNOp'将1~3转换成相应的运算符 Case1 Op="+" rrr=nn1+nn2 Case2 Op="-" Ifnn1 nn1=nn2: nn2=t rrr=nn1-nn2'保证所得到的数为大于零的实数 Case3 Op="×" nn1=Int(nn1/5): nn2=Int(nn2/5)'将大的乘数转化为0~10的整数 rrr=nn1*nn2 EndSelect Label11=nn1: Label6=Op: Label12=nn2: Label7="="'将产生的数和运算组成当前题目 EndSub PrivateSubCommand1_Click() IfNotIsNumeric(Text3)Then'判断是否输入的是数字 MsgBox"输入必须为数字! ",vbExclamation,"输入错误" Text3="" Text3.SetFocus ElseIfVal(Text3)=rrrThen'输入结果正确时候的输出 Label8="√" nz=nz+1: n=n+1 Command3.Enabled=True: Command1.Enabled=False Else'输入结果错误时候的输出 Label8="×" Label9="正确答案: "&rrr nc=nc+1: n=n+1 Command3.Enabled=True: Command1.Enabled=False EndIf EndSub PrivateSubCommand2_Click() r=MsgBox("退出后将不保留测试成绩,确定退出? ",33,"退出测试") Ifr=1Then Form1.Show UnloadMe EndIf EndSub PrivateSubCommand3_Click() Text3="" Label8="" Label9="" Label5=n&".": Label4=20-n&"题" Command1.Enabled=True Ifn<21Then'设置题数为20道题 Text3.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 课程设计 报告
