数字小键盘指法练习是用来练习指法的一个小软件,当初我之所以编写这个软件是因为我要参加今年夏天四川省的高考通分工作,我的指法太烂,速度太慢了,而且还因为不满学校给我们提供的用来练习指法的软件,是这样的,在高考的通分中,大部分分数就不带小数点,
该软件具有如下功能:
1、具有数字键指法练习的一般功能即能够进行指法练习
2、具有“选项”参数设置功能,选项参数如下:
A: 输入数据:数据是否带有小数点,是否部分数据带有.5小数点等
B: 测试速度:击键速度和单词速度
C: 其它属性:测试时间、显示输入错误的信息的延迟时间、是否屏蔽非数字键
3、具有“选项”参数记忆功能,它能够记住用户上一次的选项设置,它会按照用户上一次的设置来初始化程序
数据的产生:
既然是数字键指法练习,那练习时的数据来源肯定是重中之重了,我是通过一个函数来实现的,它根据接受的整型参数来产生满足要求的数据,其中用到了random()这个函数来产生随机数,通过该函数代码如下:
AnsiString __fastcall TfrmMain::RandNum(int Flag)
{
//TODO: Add your source code here
double RandNum;
switch (Flag)
{
case 1: //全部数字不带有小数点
RandNum=random (100);
break;
case 2: //部分数字带有小数点
RandNum=random (100);
if (rand()%2)
{
RandNum=RandNum+(rand()%10)/double(10);
}
break;
case 3:
RandNum=random (100);
RandNum=RandNum+(rand()%10)/double(10);
break;
case 4:
RandNum=random (100);
RandNum=RandNum+0.5;
break;
case 5:
RandNum=random (100);
if(rand()%2)
{
RandNum=RandNum+0.5;
}
break;
default: //全部数字不带有小数点
RandNum=random (100);
}
return AnsiString(RandNum);
}
测试速度:
该软件的速度测试分两种:击键速度和单词速度,击键速度表示用户每分钟用户的击键书,而单词速度则表示用户每分钟用户所输入的数字个数,测试速度的取得我也是通过一个函数来实现的,该函数代码如下:
void __fastcall TfrmMain::Stat(int flagSpeed)
{
//TODO: Add your source code here
dwTimeElapse=timeGetTime()-dwTimeStart;
stTime->Caption="剩余时间:"+AnsiString(tmTest-dwTimeElapse/1000)+" 秒";
switch (flagSpeed)
{
case 1: //击键速度
if (dwTimeElapse>0)
{
long int temp1=(60*1000*(NumCount)/dwTimeElapse);
stSpeed->Caption="击键速度:"+AnsiString(temp1)+"/分";
//纪录速度
recSpeed=temp1;
}
stWordNum->Caption="击键数:"+AnsiString(NumCount);
break;
case 2: //单词速度
if (dwTimeElapse>0)
{
long int temp2=(60*1000*(NumCount)/dwTimeElapse);
stSpeed->Caption="单词速度:"+AnsiString(temp2)+"/分";
//纪录速度
recSpeed=temp2;
}
stWordNum->Caption="单词数:"+AnsiString(wordNum);
//ShowMessage(flagSpeed);
break;
}
if (wordNum>0)
{
long int temp=100*(wordNum-WrongNum)/wordNum;
stCorrRate->Caption="正确率:"+AnsiString(temp)+"%";
//纪录正确率
recCorrRate=temp;
}
else
{
stCorrRate->Caption="正确率:"+AnsiString(0)+"%";
//纪录正确率
recCorrRate=0;
}
}
上面的代码种用到了一个Win32 API函数timeGetTime(),它的作用是取得系统自启动到现在所经历的时间,以毫秒为单位,它的声明如下:
DWORD timeGetTime(VOID);
“选项”参数记忆功能:
该软件具体参数属性的记忆功能,能够实现的方式非常多,如可以通过ini文件,一般文件来达到记忆的功能,还可以通过注册表来完成该功能,我在实现的时候选择了通过通过注册表来实现,我主要用到了getKeyValue()和setKeyValue()两个函数来完成该功能,getKeyValue()的功能是取得注册表中某个键的值,而setKeyValue()的功能则是设置注册表中某项的值代码如下:
getKeyValue()函数:
AnsiString getKeyValue(AnsiString RegPath,AnsiString Key)
{
//TODO: Add your source code here
TRegistry *Registry = new TRegistry;
AnsiString Result="";
try
{
Registry->OpenKey(RegPath,false);
Result=Registry->ReadString(Key);
}
__finally
{
delete Registry;
}
return Result;
}
setKeyValue()函数:
bool setKeyValue(AnsiString RegPath,AnsiString Key,AnsiString Value)
{
//TODO: Add your source code here
TRegistry *Registry = new TRegistry;
try
{
Registry->OpenKey(RegPath,true);
Registry->WriteString(Key,Value);
}
__finally
{
delete Registry;
}
return true;
}
以上介绍的只是该软件中的一些比较重要功能的实现,其实作为一个软件,它还有许多方面可以没有介绍或者是很难说清楚,如果你对该软件感兴趣的话可以下载该软件的所有源码,网址:http://www.zccfamily.com/zqget/, 它是用Borland C++ Builder开发的,如果你对该软件有任何意见或建议,或者想与我共同探讨,交流想法的话,我的联系方式: email:zqget@msn.com 收藏地址:http://www.qqread.com/bcb/u256337.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 五笔练习 (91篇文章)
- 数字小键盘指法练习 (5501次浏览)
- 用WinSock控件编写网络聊天器 (2638次浏览)
- C++Builder注册表编程实例详解 (1568次浏览)
- C++ Builder VCL库函数简介 (1348次浏览)
- 在 C++ Builder中利用串行通信控件编程 (1213次浏览)
- C++ Builder中消息处理过程及应用 (1038次浏览)
- 将指定目录的结构装入TreeView中 (990次浏览)
- 用C++ Builder3 制作记事本 (818次浏览)
- Windows多线程间同步事件的控制方法 (787次浏览)
- C++Builder开发Web应用程序 (746次浏览)



