VB设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京工程学院
课程设计说明书(论文)题目打字练习
课程名称VB语言课程设计
院(系、部、中心)
专业
班级
学生姓名
学号
设计地点图书馆基础教学机房
指导教师
设计起止时间:201x年x月x日至201x年x月x日
目录
一、设计任务 (3)
二、方法原理 (3)
三、总体设计思路 (3)
四、程序调试和解决问题 (4)
五、完善及存在的问题 (4)
六、收获体会 (4)
七、意见建议 (4)
八、示例截图 (5)
九、附录1(代码) (6)
十、附录2(主要参考资料) (10)
一、设计任务
1.题目介绍
在计算机及其他数码产品日益普及的今天,人们使用键盘应像用笔写字一样熟练。进行打字练习时熟悉键盘并提高打字速度的好方法。本体要求编制一个打字练习游戏程序,使用户在游戏过程中进行打字练习。
2.功能要求
(1)启动界面如图1
(2)选择难度和速度后,单击“开始”按钮,界面如图1。若选择简单,则落下字母;若选择复杂,单击开始后出现对话框,如图 2.单击确定,开始练习,落下单词。
(2)若用户在字符落到屏幕底部之前敲击了相应的键盘键,则该字符被“击中”然后消失。根据程序速度和难度的设置自动进行积分,实时分数时间正确率掉落个数显示在窗体的上部。
积分规则:正确击中一个字母或一个单词,加一分;反之,不得分,亦不扣分。(4)当游戏者单击“暂停”按钮时,程序停止运行,在单击“开始”按钮,程序继续运行;当单击“退出”按钮时,则弹出对话框(如截图示例3),单击“取消”按钮,程序继续运行,单击“确定”按钮,则弹出对话框(如截图4),此时对话框显示分数,单击“确定”按钮,退出程序。
(5)为了增加视觉效果,每个掉落的字符的颜色随机产生。
二、方法原理
根据题目要求,使用控件数组,用标签标题表示字符,键盘事件的处理判断打字正确与否,随机值的产生方法随机产生字符,用Timer控件属性反映时间、控制字符下落速度。
三、总体设计思路
首先在窗体上画出三个按钮标题分别为开始、暂停、退出。画六个标签分别表示已落字母个数、已花时间、得分与正确率。
画出一个含有五个元素的标签控制数组用以显示字符。
画出两个时间控件,一个用来返回已用时间,一个控制字符下落。
最后编写相关代码
四、程序调试和解决问题
五个标签所显示的字符始终不变。
调试:当打字正确或标签落到屏幕底部之后重新让标签标题取随机字符
五、完善及存在的问题
存在的问题:打错字后没有相应的减分措施。
正常打字应是练习打汉字,而不是打西文字母,应该进成打汉字
练习。
完善:取一百个汉字,赋值给一个字符串类型的数组,用产生随机数的方法确定数组下标从而随机取汉字,标签的标题用随机产生的汉字字符表示。
六、收获体会
“纸上得来终觉浅,绝知此事要躬行”。通过这次课程设计我懂得了vb课程设计就是培养我们综合运用所学知识、提高我们发现问题、分析问题、解决问题的能力的。
通过这一周的课程设计我不仅巩固了所学vb知识,还接触到了很多新的知识点。我了解到很多时候理论远远比实践简单,很多时候我们只有把所学的理论知识与实践结合起来才能真正理解理论,才能得到真正的提高。
由于是第一次做这种相对复杂的程序设计,在课程设计中我遇到了很多困难发现了自己在vb这门课上的很多不足之处,很多知识只有模糊的记忆,不能灵活地运用,通过这次实践我体会到神么叫温故而知新。学习中我们要不断对前面所学进行回顾。
这次实践不仅增加了我的vb知识,还让我明白了遇到困难我们要保持沉着冷静的心态,只要我们有有一种坚定不移的执着以及永不言弃的精神坚持做下去很多困难就会迎刃而解。
做一个程序设计实在很不容易,其中要用到很多知识,需要翻阅大量书籍,尤其是在资料上根本找不到的设计,但是收获同样是很大的,在翻阅书籍的过程中,再请教别人的过程中,我得到的不仅仅是知识,还有很多经验,我学会了自学,学会了和别人交流合作。
七、意见建议
也许老师平时讲到一个代码或者函数的时候,随即讲解一个与之相关的程序,运行下,会更好。也可以在电脑房上课。或者下次上课的时候还可以让我们自己带上电脑,随时随地就可以练习。
八、示例截图
图1
图2
图3
图4
九、附录1(代码)
Dim h As Integer
Dim n As Integer
Private Function suiji() '随机产生字母和随机选取单词函数
Dim a As Integer
Dim ci As String
Dim b As String
Randomize
word = Array("sway", "sneak", "naked", "maple", "ample", "lough", "plasma", "tude", "plague", "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") '存放供练习的单词
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) '如果选择复杂单选框,则函数的返回值为单词