英文打字练习程序报告.docx
《英文打字练习程序报告.docx》由会员分享,可在线阅读,更多相关《英文打字练习程序报告.docx(21页珍藏版)》请在冰点文库上搜索。
![英文打字练习程序报告.docx](https://file1.bingdoc.com/fileroot1/2023-6/6/6cd26916-612d-40a7-8342-1d9b3ac4aae6/6cd26916-612d-40a7-8342-1d9b3ac4aae61.gif)
英文打字练习程序报告
武汉工业学院
计算机与信息工程系
VB课程设计
设计题目:
英文打字练习
专业信息管理与信息系统
班级
学号090502229
姓名钟雅婷
指导教师林菁
2011年1月5日
——目录
一、系统概述2
1.1.系统基本要求和问题描述…2
1.2.系统实现的内容2
1.3系统的设计目的.2
二、系统分析2
2.1数据分析2
2.2功能分析2
三、系统详细设计2
3.1主界面详细设计2
3.2工具栏详细设计3
3.3菜单栏详细设计4
四、系统编码及实现…4
4.1工具栏按钮代码设计4
4.2窗体的代码设计8
4.3用户输入判断操作代码设计9
4.4打字实时评价代码设计10
4.5“文件”菜单代码设计...10
4.6“帮助”菜单代码设计11
五、系统运行测试..11
六、系统调试及代码改进12
七、系统总结13
7.1程序中相关知识点的应用13
7.2本程序的不足之处13
7.3课程设计感想13
亠、系统概述:
1.1系统基本要求和问题描述:
VB打字游戏,要求从屏幕上方随机落下若干字母、数字或其他符号,并能实时给分数。
1.2系统实现的内容:
这是一个带有计时功能的简易英文打字练习程序,运行该程序后会随机产生一些英文字母供用户进行简单的打字练习的功能。
同时还会根据用户的成绩进行一个简单的评分。
1.3系统的设计目的:
在一定程度上可以为用户提供一个练习打字的简易平台。
通过这样的打字练习达到更高效、快速的输出英文单词目的。
使使用者可以更快的熟悉键盘和英文打字。
1、系统分析:
2.1数据分析:
系统的数据主要是随机产生英文字母供使用者实现打字练习的操作。
此过程中使用了subRandom函数和subOpenTxt函数来随机生成打字源文件和引用外部文本文件。
2.2功能分析:
在功能方面,系统实现了随机产生英文字母或用户直接打开相应的文件夹来进行打字练习。
这个过程中用到了随机生成字母函数。
随后进入测试模块,在
用时和正确率方面对用户的打字练习进行评估。
此时对测试函数进行了调用。
三、系统详细设计
3.1主界面详细设计:
在该界面中,添加一个OpenFileDialog控件、Timer控件、Panel控件、十六个Label控件,控件的属性如下图所示:
控件
属性
设置结果
FORM
Name
TextMaximizeBoxMinimizeBox
FrmTT
英文打字软件
False
False
OpenFileDialog
Name
OpenFileDialog1
Timer
Name
Interval
Timer1
1000
Panel
Name
BackColor
Panel1
White
Label1、3、5、7、9、11、13
Label2、4、6、8、10、12、14
BackColor
BackColor
YellowGreen
White
Label
Name
BackColor
Text
LbPerformanee
Ivory
点击开始输入
Label
Name
ForeColor
Text
LbStart
Black
按"Enter"键计时开始
得到程序主界面设计如下:
开始打幵普停退出
点去歼始擔入
Label!
Label2LabelLabel4Label5LabelsLabel?
LabelSLabel9LabellOLabelllLabell2Label13Label14
按"Enter*键计时开鳍
3.2工具栏界面设计:
使用ToolBar控件和ImagerList控件实现工具栏的制作。
实现“开始”、“打开”、“暂停”、“退出”四个按钮。
具体实现过程如下:
1、单击ToolBar控件属性栏的“Bottons”属性,在弹出的对话框中编辑工具栏按钮。
2、按照下面的属性表设置按钮的属性。
按钮名称(Name
Text
ImageIndex
TbRnd
随机(&R
0
TbOpen
打开(&O
1
TbPause
暂停(&P)
2
TbEixt
推出(&X
3
设置完生成的工具栏的效果如图:
編辑⑥
开始
打开
皙停退出
打开文本
随机生成
停退出
3.3菜单栏详细设计:
按照下表添加菜单项,完成英文打字程序的界面设计
菜单名称(Name
类别
文本(Text)
快捷键
MenuFile
父菜单
文件
ALT+F
MenuOpen
子菜单
打开文件
ALT+O
MenuRand
子菜单
随机生成
ALT+R
MenuExit
子菜单
推出
ALT+X
MenuHelp
子菜单
帮助
ALT+H
MenuAbout
子菜单
关于英文打字
ALT+F
效果图如下:
濡辑(!
)
退出也)
Label1Label2Label3Label4Label?
Label6Label7Label8Label9LabellOLabelllLabel12
L
Label14
W^Enter^W计时开给
四、系统编码实现:
4.1、工具栏按钮的代码设计:
工具栏要实现如下的功能:
随机生成打字源文件、引入外部文件、暂停、退出。
首先在Toolbar的ButtonClick事件中添加的代码如图所示:
PrivateSubToolBar1_ButtonClick(ByValsenderAsSystem.Object,ByValeAs
System.Windows.Forms.ToolBarButtonClickEventArgs)HandlesToolBar1.ButtonClick
SelectCaseToolBar1.Buttons.lndexOf(e.Button)
Case0
subRandom()
'随机产生原始文本
Case1
subOpenTxt()
'从文本文件中读入文本
Case2
IfToolBarButton3.Text="暂停(&P)"Then
Timerl.Enabled=False
ToolBarButton3.Text="计时(&S)"
Else
Timer1.Enabled=True
ToolBarButton3.Text="暂停(&P)"
EndIf
'根据按钮显示的文本内容来控制计时的暂停和开始
Case3
Close()
'退出
EndSelect
'根据点击的ToolBar中的Button的索引值来判断用户点击的按钮
EndSub
以上代码使用了subRandom函数和subOpenTxt函数来随机生成打字源文件和引用外部文本文件,subRandonm勺代码如下:
PrivateSubsubRandom()
DimiAsInteger,jAsInteger,sAsString
Fori=1To7
lbSource(i).Text=""
Next
'清空原始文本
Randomize()
'随机函数种子
Fori=1To462
IfiMod8=0Then
sSource(i)=""
lbSource(Int((i-1)/66+1)).Text=lbSource_
(Int((i-1)/66+1)).Text&””
'每隔五个字母就自动产生一个空格
Else
sSource(i)=Chr(Int(Rnd()*25+97))
lbSource(Int((i-1)/66+1)).Text=lbSource_
(Int((i-1)/66+1)).Text&sSource(i)
'在小写字母“a”-“z”中随机产生一个字母
'并将其加入sSource字符数组和lbSource中。
EndIf
Next
iNum=0
iCorrect=0
iSecond=0
Fori=1To7
Iblnput(i).Text=
Next
Fori=1To462sinput(i)=
Next
IbPerformance.Text=
TooIBarButton3.Enabled=
重置各控件和变量的值
EndSub
Rand函数生成小于1但大于或等于0的随机数,使用方法如下:
Rn(number),参数number是一个single值或任意有效的single表达式。
函数返回值。
Number值为
Rnd生成
小于零
每次都相同的数字并将number用作种子
大于零
序列中的下一个随机数
等于零
最近生成的数字
未提供
序列中的下一个随即数
代码中的IbSource、Iblnput,是在窗体类开头定义的全局控件数组变量,sSource、sinput是在窗体类开头定义的全局字符数组变量,用于存储原始文本和用户输入的文本,还有其他的一些变量声明如下:
PublicClassForml
inheritsSystem.Windows.Forms.Form
DimIbSource(7)AsLabel,lbinput(7)AsLabel
'分别定义用户输入和原始文本的Label控件数组
DimsSource(463)AsChar,sinput(463)AsChar
'分别定义用于存储用户输入和原始文本的字符数组
DimiNumAsinteger,iCorrectAsinteger
DimiSecondAsinteger
Dimx,y,kAsinteger
DimflagAsBoolean=True'标签方向朝左
'iNum用于记录用户已经输入的字符数,
'iCorrect用于记录用户输入正确的字符数
'iSecond用于记录已经用去的时间
subOpenTxt函数的代码如下:
Then
PrivateSubsubOpenTxt()
ifOpenFileDialog1.ShowDialog()=DialogResult.OK
'用户用“打开按钮”选择了文本文件,并单击了确定按钮
DimiAsInteger,jAsInteger,sAsString
Fori=1To7lbSource(i).Text=""
Next
'清空原始文本
FileOpen(1.OpenFileDialog1.FileName,OpenMode.lnput)
'以“Input”方式打开文本文件
DoWhileNotEOF⑴
s=s&Linelnput
(1)
Ifs.Length>462Then
ExitDo
EndIf
Loop
'将文本文件内容读入s中
'当读至文件尾,或字符串s的长度超过的时候,就结束循环。
DoWhiles.Length<462
s=s&s
Loop
'若s的长度小于,则对S进行自身复制,以保证S的长度
FileClose⑴
'关闭文本文件
sSource=s.Substring(1,462).ToCharArray()
'将字符串s的前个字符复制到字符数组sSource中
Fori=1To462
lbSource(Int(i/66+1)).Text=lbSource(Int_
(i/66+1)).Text&sSource(i)
Next
Label中
'将字符数组sSource中的字符分行放入用于显示原始文本的个
iNum=0
iCorrect=0
iSecond=0
Fori=1To7
lbInput(i).Text=
Next
Fori=1To462
sinput(i)=
Next
lbPerformance.Text=
False
ToolBarButton3.Enabled=
'重置各控件和变量的值
EndIf
EndSub
4.2、窗体的代码设计:
在窗体的代码设计中,主要实现如下的功能:
初始化、窗体响应键盘的操作、实时评价打字结果。
代码如下:
PrivateSubform1_Load(ByVaisenderAsSystem.Object,_
ByVaieAsSystem.EventArgs)HandlesMyBaseLoad
y=8
ibPerformance.Location=NewPoint(x,y)
lbSource
(1)=Labell
ibSource
(2)=Label3
ibSource(3)=Label5
lbSource(4)=Label7
ibSource(5)=Label9
ibSource(6)=Labeill
ibSource⑺=Label13
iblnput
(1)=Label2
iblnput
(2)=Label4
iblnput(3)=Label6
iblnput(4)=Label8
iblnput(5)=Label10
iblnput(6)=Label12
iblnput(7)=Label14
'将用于显示原始文本和用户输入文本的Label赋给数组
'以便我们在后面的程序中使用这些控件
ibStart.Text="按回车键开始计时”
ibStart.Visibie=False
Timerl.Enabled=False
Timerl.Interval=1000
TooiBarButton3.Enabled=False
DimiAsInteger,jAsInteger
Fori=1To7
lbSource(i).Text=""
Iblnput(i).Text=""
Next
'对控件的属性值初始化
iNum=0
iCorrect=0
iSecond=0
'对变量初始化
EndSub
4.3、用户输入判断操作代码设计:
PrivateOverloadsSubPanel1_KeyPress(ByVaisenderAsObject,
ByVaieAsSystem.Windows.Forms.KeyPressEventArgs)_
HandiesPanell.KeyPress
'本函数用于对用户的每次输入进行判断,并对部分变量进行相应的计数
'当用户已经输入了个字符,则测试完成
'此时终止时钟,并给出提示信息
IfInt(60*iNum/iSecond)>=550AndInt(100*iCorrect/iNum)>=
90Then
MessageBox.Show("真棒!
您的打字速度和正确率都是一流的哦!
秀",_
MessageBoxButtons.OK,MessageBoxIcon.lnformation)
EndIf
IfInt(60*iNum/iSecond)>=450AndInt(100*iCorrect/iNum)>=
80Then
MessageBox.Show("还不错,不过还要继续努力哦!
",”良",—
MessageBoxButtons.OK,MessageBoxIcon.lnformation)
EndIf
IfInt(60*iNum/iSecond)>=350AndInt(100*iCorrect/iNum)>=
60Then
MessageBox.Show("还差一点哦!
要多多练习。
","及格",
MessageBoxButtons.OK,_
MessageBoxIcon.lnformation)
EndIf
IfInt(60*iNum/iSecond)<=350AndInt(100*iCorrect/iNum)<=
50Then
MessageBox.Show("还要继续努力才行哦,加油吧。
",”不及格",
MessageBoxButtons.OK,MessageBoxIcon.lnformation)
EndIf
'对成绩进行统计并给出评价
Ife.KeyChar=Chr(13)Then
ibStart.Visibie=Faise
Timerl.Enabled=True
True
TooiBarButton3.Enabled=
EndIf
'如果尚未开始测试,当用户输入回车键时,开始测试,并计时
EiseIfTimerl.Enabled=TrueThen
SelectCasee.KeyChar
CaseChr(13)
Iblnput
(1).Text=Iblnput
(1).Text+""
iNum=iNum+1
slnput(iNum)=""
'用户开始测试后,用户输入的回车键被当作空格键处理
CaseElse
lbInput(lnt(iNum/66+1)).Text=Iblnput_
(Int(iNum/66+1)).Text&e.KeyChar
iNum=iNum+1
sinput(iNum)=e.KeyChar
'变量iNum进行累加,对用户输入的字符进行分行显示,
'并存储到slnput中()
EndSelect
lfsinput(iNum)=sSource(iNum)Then
iCorrect=iCorrect+1
'如果输入的字符和原始文本中相对应的字符相等,
'则对变量iCorrect累加()
Endlf
Endlf
EndSub
4.4、打字的实时评价代码设计:
PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)
HandlesTimerl.Tick
iSecond=iSecond+1
'在计时器中对时间进行累加
lbPerformance.Text="共用了”&iSecond&”秒,速度”&_
Int(60*iNum/iSecond)&”字/分,正确率:
”&iCorrect&_
"/"&iNum&"="&Int(100*iCorrect/iNum)&"%"
'每次计时都对当前的时间、速度、
'正确率等信息进行统计,并显示出来
EndSub
4.5、“文件”菜单的代码设计:
“文件”菜单只有三个子菜单“打开文件”、“随机生成”、“退出”,代码如下:
PrivateSubmRandom_Click(ByValsenderAsSystem.Object,ByValeAs
System.EventArgs)HandlesmRandom.Click
subRandom()
'随机产生原始文本
EndSub
PrivateSubmOpen_Click(ByValsenderAsSystem.Object,ByValeAs
System.EventArgs)HandlesmOpen.Click
subOpenTxt()
'从文本文件中读入文本
EndSub
PrivateSubmExit_Click(ByVaisenderAsSystem.Object,ByVaieAsSystem.EventArgs)HandiesmExit.Click
End
'退出
EndSub
4.6、“帮助”菜单代码设计:
“帮助”菜单下有子菜单“关于打字练习”单击该菜单会弹出一个窗口,如图所示。
五、系统运行测试:
整个程序制作完成。
运行后效果图如下图所示:
英左打字篦习程序
交件©嗝辑⑥帮助01)
幵始打开皙停退岀
zzatgrabxfocchcrhtjrxgcghgaeuedindabispuyqqkcoijmysttrtdpuyeulkyefwldpl^uvyvovgjj口biqkrcihbthukxfbalwykrasapqfywjnircvxcyfanbfssrbgceepfgmxriopyeqbvjcitnvjtgqhknvxiwbqbaomkjlmvbneneulingfsjtkdmjvgciitwwoqshblqjfyiauygaqetagxaehjdqtpuusmdedflcarsfxnctjxoiahbtnlnleuvqjffimjfcglhgvucksehflwnduqwtibbisykgxpygejnlklfvxykahlpdkcqaaajsdvjieounbqyhjcqyinneknfqqaknyhxuudnwbxsuekdenlcrdbebmulqtlquapskavlHitai_ivp1qdvx
跌用予120轡\建度229
dedflcarsfxnctjxciiahbtnlnleuvqjffimjfcglhgvucksehflwnduqwt
liiiiuliiLin^iLiiiiiliiiiuuiuiiBiiiiiinmillliiiiuuibbisykgipygejnlklfviykahlpdkcqaaajsdwjieounbqyhjcnyinnekn
milliiiiuliiiiulinmlimnlimnnum1111111inifqqaknydixuudnwbxsuekdenlcrdbebmulqt1quapskct^l1iitauvplqdvxinuiuiilimnlimnuiuiiuuluminiuiuiimu
淡j试结束
六、系统调试及代码改进:
此次试验中出现了很多错误,特别是在字长方面。
开始每次录入时都不能显
示测评部分并显示字长过长或而且警告变量在赋值之前被使用可能引起null异常。
后来在字长的函数表达式