1、VB设计报告南京工程学院课程设计说明书(论文)题目 打字练习 课 程 名 称 VB语言课程设计 院 (系、部、中心) 专 业 班 级 学 生 姓 名 学 号 设 计 地 点 图书馆基础教学机房 指 导 教 师 设计起止时间:201x年x月x日至201x年x月x日一、设计任务 1.题目介绍 在计算机及其他数码产品日益普及的今天,人们使用键盘应像用笔写字一样熟练。进行打字练习时熟悉键盘并提高打字速度的好方法。本体要求编制一个打字练习游戏程序,使用户在游戏过程中进行打字练习。 2.功能要求(1)启动界面如图1(2)选择难度和速度后,单击“开始”按钮,界面如图1。若选择简单,则落下字母;若选择复杂,单
2、击开始后出现对话框,如图2.单击确定,开始练习,落下单词。(2)若用户在字符落到屏幕底部之前敲击了相应的键盘键,则该字符被“击中”然后消失。根据程序速度和难度的设置自动进行积分,实时分数 时间 正确率 掉落个数显示在窗体的上部。积分规则:正确击中一个字母或一个单词,加一分;反之,不得分,亦不扣分。(4)当游戏者单击“暂停”按钮时,程序停止运行,在单击“开始”按钮,程序继续运行;当单击“退出”按钮时,则弹出对话框(如截图示例3),单击“取消”按钮,程序继续运行,单击“确定”按钮,则弹出对话框(如截图4),此时对话框显示分数,单击“确定”按钮,退出程序。(5)为了增加视觉效果,每个掉落的字符的颜色
3、随机产生。二、方法原理根据题目要求,使用控件数组,用标签标题表示字符,键盘事件的处理判断打字正确与否,随机值的产生方法随机产生字符,用Timer控件属性反映时间、控制字符下落速度。三、总体设计思路首先在窗体上画出三个按钮标题分别为开始、暂停、退出。画六个标签分别表示已落字母个数、已花时间、得分与正确率。画出一个含有五个元素的标签控制数组用以显示字符。画出两个时间控件,一个用来返回已用时间,一个控制字符下落。最后编写相关代码四、程序调试和解决问题 五个标签所显示的字符始终不变。调试:当打字正确或标签落到屏幕底部之后重新让标签标题取随机字符 五、完善及存在的问题 存在的问题:打错字后没有相应的减分
4、措施。 正常打字应是练习打汉字,而不是打西文字母,应该进成打汉字练习。完善:取一百个汉字,赋值给一个字符串类型的数组,用产生随机数的方法确定数组下标从而随机取汉字,标签的标题用随机产生的汉字字符表示。六、收获体会“纸上得来终觉浅,绝知此事要躬行”。通过这次课程设计我懂得了vb课程设计就是培养我们综合运用所学知识、提高我们发现问题、分析问题、解决问题的能力的。通过这一周的课程设计我不仅巩固了所学vb知识,还接触到了很多新的知识点。我了解到很多时候理论远远比实践简单,很多时候我们只有把所学的理论知识与实践结合起来才能真正理解理论,才能得到真正的提高。由于是第一次做这种相对复杂的程序设计,在课程设计
5、中我遇到了很多困难发现了自己在vb这门课上的很多不足之处,很多知识只有模糊的记忆,不能灵活地运用,通过这次实践我体会到神么叫温故而知新。学习中我们要不断对前面所学进行回顾。这次实践不仅增加了我的vb知识,还让我明白了遇到困难我们要保持沉着冷静的心态,只要我们有有一种坚定不移的执着以及永不言弃的精神坚持做下去很多困难就会迎刃而解。做一个程序设计实在很不容易,其中要用到很多知识,需要翻阅大量书籍,尤其是在资料上根本找不到的设计,但是收获同样是很大的,在翻阅书籍的过程中,再请教别人的过程中,我得到的不仅仅是知识,还有很多经验,我学会了自学,学会了和别人交流合作。七、意见建议 也许老师平时讲到一个代码
6、或者函数的时候,随即讲解一个与之相关的程序,运行下,会更好。也可以在电脑房上课。或者下次上课的时候还可以让我们自己带上电脑,随时随地就可以练习。八、示例截图 图1 图2 图3 图4九、附录1(代码)Dim h As IntegerDim n As IntegerPrivate Function suiji() 随机产生字母和随机选取单词函数Dim a As IntegerDim ci As StringDim b As StringRandomizeword = Array(sway, sneak, naked, maple, ample, lough, plasma, tude, plagu
7、e, pledge, play, prowl, pluckbandit, gangster, commemorate, solar, elipse, luna, lunatic, tumble, mortal, moral, fade, flinch, spout, sprout, spurn, spoil, sparrow, sprain, plasma, mare, malady, glisten, bereave, glimme, rslim, crave, amiable, able, blizzard, lizard, bruise, bromide, place, bale) 存放
8、供练习的单词b = Int(Rnd * (UBound(word) + 1) 产生单词序号a = Int(122 - 97 + 1) * Rnd + 97) 产生97到122之间的整数If Option1.Value Then suiji = Chr(a) 如果选择简单单选框,则函数的返回值为小写字母Else suiji = word(b) 如果选择复杂单选框,则函数的返回值为单词End IfEnd FunctionPublic Sub Command1_Click() 开始按钮Dim i%If Option2.Value Then i = MsgBox(输入单词后,请按空格键确认, , 注意
9、) 操作提示End If For i = 0 To Label1.Count - 1 Label1(i).Visible = True Label1(i).Caption = suiji Label1(i).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) 随机产生字母,单词,颜色随机Next Timer1.Enabled = True Timer2.Enabled = True Option1.Enabled = False Option2.Enabled = False Command1.Enabled = False 将计时器,速度调节,难
10、度选择和开始按钮禁用 Text1.SetFocus 将焦点转移到文本框End SubPrivate Sub Command2_Click() 暂停按钮Timer1.Enabled = FalseTimer2.Enabled = FalseCommand1.Enabled = TrueEnd SubPrivate Sub Command3_Click() 退出按钮If MsgBox(确定要退出?, vbYesNo) = vbYes Then MsgBox 得分 & h & 分, , 成绩 退出提示 Unload Me 关闭窗体End IfEnd SubPrivate Sub Form_KeyPr
11、ess(KeyAscii As Integer)Dim b As IntegerDim c As IntegerIf KeyAscii = 97 And KeyAscii b Then 判断字母是否已经落出 c = i End If End If NextElseIf KeyAscii = 32 Then 如果敲了空格,则进行单词比较操作 For i = 0 To Label1.Count - 1 遍历所有产生字母 If Label1(i).Caption = ci Then 判断产生的单词和输入的单词是否相等 If Label1(i).Top b Then 判断字母是否已经落出 c = i
12、End If End If Nextci = End If End IfIf c -1 ThenLabel1(c).Top = -10 如果输入正确,则将字母标签隐藏到顶部Label1(c).Caption = suiji 字母标签随机产生字母h = h + 1 如果输入正确,则得分加1Label5.Caption = 当前得分: & h 显示当前得分Else: n = n + 1Label3.Caption = 掉落个数: & n 显示掉落个数End IfEnd SubPrivate Sub Timer1_Timer()Timer1.Interval = 1000For i = 0 To L
13、abel1.Count - 1 Label1(i).Top = Label1(i).Top + 500 控制字母,单词移动,以及移动速度 If Label1(i).Top Form1.Height Then n = n + 1 记录掉落个数 Label3.Caption = 掉落个数: & n Label1(i).Top = -10 Randomize Label1(i).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) 产生颜色 End If If n = 26 Then If MsgBox(已经错过 & n & 个,重新开始?, vbYesN
14、o) = vbYes Then 提示框 Form_Load Form1.Command1_Click Else Form_Load 控制重新游戏还是结束游戏 End If End IfNextEnd SubPrivate Sub Timer2_Timer()Timer2.Interval = 1000If (n + h) 0 Then Label6.Caption = 正确率: & h / (n + h) * 100 1 & % 显示正确率End IfStatic s s = s + 1Dim miao As StringDim fen As StringDim shi As StringIf
15、 s Mod 60 10 Then miao = 0Else miao = End IfIf (s Mod 3600) 60 10 Then fen = 0Else fen = End IfIf s 3600 10 Then shi = 0Else shi = End If Label4.Caption = 时间 & shi & s 3600 & : & fen & (s Mod 3600) 60 & : & miao & s Mod 60 显示已用时间End SubPrivate Sub Form_Load()Text1.Top = -1000Label6.Caption = 正确率:0La
16、bel4.Caption = 时间 00:00:00Label3.BackStyle = 0Label4.BackStyle = 0Label5.BackStyle = 0Label6.BackStyle = 0 将标签2到6的背景设为透明For i = 0 To Label1.Count - 1 Label1(i).Visible = False 将标签Label1(1)到Label1(5)的初始状态设为不可见 Label1(i).Top = 600 * (i + 1) 设置字母或单词的的位置 Label1(i).Caption = suiji 最初出现的字母或者单词 Label1(i).F
17、ontSize = 25 设置字体大小 Label1(i).AutoSize = True 标签大小自动可调 Label1(i).BackStyle = 0 透明Next Label3.Caption = 掉落个数: & n Label5.Caption = 当前得分: & h Label5.ForeColor = RGB(0, 255, 0) Label3.ForeColor = RGB(0, 255, 0) Label6.ForeColor = RGB(255, 0, 0) Label4.ForeColor = RGB(255, 0, 255) 设置字体颜色End Sub十、附录2(主要参考资料)1.VB课程设计简明教程(第三版)(高等教育出版社)2.VB课程设计(清华出版社)教师评语:
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2