您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > 记忆力测试-课程设计报告
VisualBasic课程设计报告所属课程名称:VisualBasic程序设计课程设计题目:记忆力测试课程设计难度:2星课程设计时间:2012.2.27~3.23学号:姓名:0南京理工大学机械工程学院二〇一二年三月1一、程序功能(1)启动程序时显示图1所示的启动界面。单击“开始”按钮,如图2所示,程序一次弹出3个随机生成的大写字母。半秒钟后,字母消失,一个竖线光标提示用户重新输入刚才的字母(图3)图1启动界面图2显示字母图3输入字母(2)用户输入3个字母后,程序判断输入的字母是否和随机产生的完全相同。如果相同,程序再随机生成4个字母让用户记忆输入;如果不相同,以图4所示的方式将生成的字母与输入的字母进行对比,用户可以发现自己那个字母输入不正确。(3)在图4所示状态下,用户可以选择“重复本步”让程序再生成相同个数的字母重试;如果选择“从头开始”则从3个字母重新开始。图4输入错误时的显示内容(4)要求字母以突出的立体效果显示,像是写在有厚度的木板上。(5)用户输入字母时,无论其键盘是否处于大写锁定状态,都以大写形式显示。在用户没有输入完当前要求的字母个数前,可以通过“退格键”逐个删除以输入的字母。(6)窗口上命令按钮的标题文字和有效状态应根据程序的状态不断变化。在用户输入字母时,只有“退出键”可用;当输入错误时,“开始按钮变为重复本步”按钮。在不同阶段,提示文字的内容页不同。知识点:控件数组;Timer定时器控件;Line直线、Shape形状、Label标签控件的使用;键盘事件处理;随机值生成。2二、课程设计的详细设计显示字母时使用随机函数产生字母。定义一个静态变量来控制直线光标的显现与消失。键盘的KeyPress事件是整个程序的主要时事件。使用静态变量来储存游戏进行的关数。用两个数组分别储存程序显示的字母和用户输入的字母,并进行比较。用一个数组来储存成绩,当查看排名时使用比较排序法选出前三名,显示并保存到文件中。三、程序调试过程【问题1】:可以输入字母的个数超过所要求的(如第一关可以输入8个字母)【解决办法】:IfkzThenExitDo【问题2】:字母无法显示0.5秒【解决办法】:使用一个静态变量x,当x=1时显示字母,当x=2时字母消失。其中x变为2时,该过程是第二次执行,时间间隔为0.5秒(由计时器的Interval属性决定)。四、更上一层楼新功能:当输入字母错误时,程序会使用红色将其突出显示;增加了成绩的储存及显示成绩排行榜的功能。改进:每通一关就有提醒,完成整个游戏后也有提醒;退出游戏时后会提醒用户是否保存成绩。五、课程设计总结要灵活使用静态变量和控件数组。适当地使用过程能使程序代码简洁。这次的课程设计让我掌握了键盘的KeyPress事件,明白静态变量的使用一定要注意判断是否需要归零或继续使用,以及计时器控件的使用一定要注意判断和使用Enable属性。在判断两个或多个变量的关系时一定要注意边界值。3六、源程序代码Dimzimushow(0To7)AsString,zimukey(0To7)AsStringDimkAsInteger,zAsIntegerDimorder(1To4)AsString'zimushow()用于储存显示了0.5秒的字母,zimukey()用于储存键入的字母'k主要用在键盘事件中,相当于Index,还在cmdrestart和cmdstart过程中调用'z用于记录游戏进行的关卡数(=z+1)'order()用于成绩保存中================================================================================PrivateSubcmdstart_Click()DimindexAsIntegerIfcmdstart.Caption=开始Then'开始游戏Forindex=0To2lbzimu(index).Visible=TrueShapeheng(index).Visible=TrueShapeshu(index).Visible=TrueNextTimershow.Enabled=Truecmdstart.Enabled=Falsecmdrestart.Enabled=Falsecmdpaiming.Enabled=Falsez=2'记录游戏进行到几关Label2.Caption=记住下列每个字母ElseIfcmdstart.Caption=重复本步Then'重复本关游戏Forindex=0Tozlbchacuo(index).Caption=ShPheng(index).Visible=FalseShpshu(index).Visible=FalseNextcmdstart.Enabled=Falsecmdrestart.Enabled=Falsecmdpaiming.Enabled=FalseLabel3.Caption=k=0CallchangcolorTimershow.Enabled=TrueEndIfEndSub================================================================================PrivateSubcmdrestart_Click()'重新开始DimindexAsInteger,iAsIntegerIfcmdstart.Caption重复本步Then'说明游戏还没开始,点击无效ExitSubEndIfCallsavingcmdstart.Caption=开始4Label3.Caption=k=0Forindex=0Tozlbzimu(index).Caption=lbchacuo(index).Caption=ShPheng(index).Visible=FalseShpshu(index).Visible=FalseNextFori=3TozShapeheng(i).Visible=FalseShapeshu(i).Visible=FalseNextz=2cmdstart.Enabled=Falsecmdrestart.Enabled=Falsecmdpaiming.Enabled=FalseCallchangcolorTimershow.Enabled=TrueEndSub================================================================================PrivateSubcmdpaiming_Click()DimiAsIntegerForm1.Hide:Form2.Showorder(4)=z+1CallMingCiForm2.Label1.Caption=1&Space(8)&order(1)&Chr(13)&Chr(10)&_2&Space(8)&order(2)&Chr(13)&Chr(10)&_3&Space(8)&order(3)&Chr(13)&Chr(10)OpenApp.Path&\save.txtForOutputAs#2'将保存成绩Fori=1To3Print#2,order(i)NextCloseEndSub================================================================================PrivateSubcmdexit_Click()'退出程序CallsavingEndEndSub================================================================================PrivateSubForm_KeyPress(KeyAsciiAsInteger)DimiAsInteger,pAsIntegerIf((KeyAscii=65AndKeyAscii=90)Or(KeyAscii=97AndKeyAscii=122))OrKeyAscii=8ThenElse'只有字母和退格键能用KeyAscii=0ExitSub5EndIfIfzimushow(0)=Then'游戏未开始时不能输入字母KeyAscii=0ExitSubEndIfIfTimershow.Enabled=TrueThen'显示字母期间不能输入!!KeyAscii=0ExitSubEndIfDoIfKeyAscii=8Then'退格键Ifk=0ThenExitSublbzimu(k-1).Caption=k=k-1Calllines(k)ExitDoEndIfIfkzThen'不能超出本关的输入个数(如第一关只能输3个字母)ExitDoEndIflbzimu(k).Caption=UCase(Chr(KeyAscii))zimukey(k)=UCase(Chr(KeyAscii))Ifk=6ThenCalllines(k+1)EndIfk=k+1Ifk8ThenExitSubIfk=z+1Then'式子成立代表字母输入完成,开始对比答案Timerline.Enabled=FalseLine2.Visible=FalseFori=0TozIfChr(zimushow(i))=zimukey(i)Thenp=p+1Elselbchacuo(i).ForeColor=vbRed'错误字母变成红色EndIfNextIfi=pThen'输入的字母完全正确k=0'k为静态变量,完成一关之后应归0Ifz=7ThenMsgBox恭喜,您已通过全部关卡!!!,64,完成ExitSubElseMsgBox恭喜您通过本关,现在进入下一关,64,恭喜z=z+16EndIfShapeheng(z).Visible=TrueShapeshu(z).Visible=TrueCallchangcolor'把颜色变回原来的颜色Timershow.Enabled=TrueElse'输入错误时显示正确字母Fork=0Tozlbchacuo(k).Caption=Chr(zimushow(k))ShPheng(k).Visible=TrueShpshu(k).Visible=TrueNextLabel2.Caption=输入错误,多数人能记忆七个字母,回车进行当前步测试Label3.Caption=正确的字母序列应为:cmdstart.Caption=重复本步cmdstart.Enabled=Truecmdrestart.Enabled=Truecmdpaiming.Enabled=Truecmdstart.SetFocusCalllines(0)EndIfEndIfExitSubLoopEndSub================================================================================PrivateSubForm_Load()DimindexAsIntegerTimershow.Enabled=FalseTimerline.Enabled=FalseForindex=0To7lbzimu(index).Font.Size=37'调节字体lbchacuo(index).Font.Size=37Shapeheng(index).Visible=FalseShapeshu(index).Visible=FalseShPheng(index).Visible=FalseShpshu(index).Visible=FalseNextForindex=0To2lbzimu(index).Visible=FalseNextEndSub================================================================================PrivateSubForm_QueryUnload(Canc
本文标题:记忆力测试-课程设计报告
链接地址:https://www.777doc.com/doc-6587408 .html