小鍵盤指法練習(xí)是用來練習(xí)指法的一個小軟件,當初我之所以編寫這個軟件是因為我要參加今年夏天四川省的高考通分工作,我的指法太爛,速度太慢了,而且還因為不滿學(xué)校給我們提供的用來練習(xí)指法的軟件,是這樣的,在高考的通分中,大部分分數(shù)就不帶小數(shù)點, 帶小數(shù)點也是只有.5小數(shù)點,而學(xué)校給我們的那個軟件在產(chǎn)生數(shù)據(jù)的時候全部帶有小數(shù)點如:52.1、68.3、69.4等,這個還可以忍受,更讓人感覺不好的居然那個軟件有時間限制,我們在打開它的時候它就自動關(guān)閉了,而老師給我們的提示是叫我們改變系統(tǒng)時間來進行指法練習(xí),我當然不滿這種做法了,于是自己寫了這個軟件,好了下面我就來介紹一下我是如何實現(xiàn)的,先還是來介紹一下它的功能吧,然后在介紹是如何進行編碼的:
該軟件具有如下功能:
1、具有數(shù)字鍵指法練習(xí)的一般功能即能夠進行指法練習(xí)
2、具有“選項”參數(shù)設(shè)置功能,選項參數(shù)如下:
A: 輸入數(shù)據(jù):數(shù)據(jù)是否帶有小數(shù)點,是否部分數(shù)據(jù)帶有.5小數(shù)點等
B: 測試速度:擊鍵速度和單詞速度
C: 其它屬性:測試時間、顯示輸入錯誤的信息的延遲時間、是否屏蔽非數(shù)字鍵
3、具有“選項”參數(shù)記憶功能,它能夠記住用戶上一次的選項設(shè)置,它會按照用戶上一次的設(shè)置來初始化程序
數(shù)據(jù)的產(chǎn)生:
既然是數(shù)字鍵指法練習(xí),那練習(xí)時的數(shù)據(jù)來源肯定是重中之重了,我是通過一個函數(shù)來實現(xiàn)的,它根據(jù)接受的整型參數(shù)來產(chǎn)生滿足要求的數(shù)據(jù),其中用到了random()這個函數(shù)來產(chǎn)生隨機數(shù),通過該函數(shù)代碼如下:
AnsiString __fastcall TfrmMain::RandNum(int Flag)
{
//TODO: Add your source code here
double RandNum;
switch (Flag)
{
case 1: //全部數(shù)字不帶有小數(shù)點
RandNum=random (100);
break;
case 2: //部分數(shù)字帶有小數(shù)點
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: //全部數(shù)字不帶有小數(shù)點
RandNum=random (100);
}
return AnsiString(RandNum);
}
測試速度:
該軟件的速度測試分兩種:擊鍵速度和單詞速度,擊鍵速度表示用戶每分鐘用戶的擊鍵書,而單詞速度則表示用戶每分鐘用戶所輸入的數(shù)字個數(shù),測試速度的取得我也是通過一個函數(shù)來實現(xiàn)的,該函數(shù)代碼如下:
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="擊鍵數(shù):"+AnsiString(NumCount);
break;
case 2: //單詞速度
if (dwTimeElapse>0)
{
long int temp2=(60*1000*(NumCount)/dwTimeElapse);
stSpeed->Caption="單詞速度:"+AnsiString(temp2)+"/分";
該軟件具有如下功能:
1、具有數(shù)字鍵指法練習(xí)的一般功能即能夠進行指法練習(xí)
2、具有“選項”參數(shù)設(shè)置功能,選項參數(shù)如下:
A: 輸入數(shù)據(jù):數(shù)據(jù)是否帶有小數(shù)點,是否部分數(shù)據(jù)帶有.5小數(shù)點等
B: 測試速度:擊鍵速度和單詞速度
C: 其它屬性:測試時間、顯示輸入錯誤的信息的延遲時間、是否屏蔽非數(shù)字鍵
3、具有“選項”參數(shù)記憶功能,它能夠記住用戶上一次的選項設(shè)置,它會按照用戶上一次的設(shè)置來初始化程序
數(shù)據(jù)的產(chǎn)生:
既然是數(shù)字鍵指法練習(xí),那練習(xí)時的數(shù)據(jù)來源肯定是重中之重了,我是通過一個函數(shù)來實現(xiàn)的,它根據(jù)接受的整型參數(shù)來產(chǎn)生滿足要求的數(shù)據(jù),其中用到了random()這個函數(shù)來產(chǎn)生隨機數(shù),通過該函數(shù)代碼如下:
AnsiString __fastcall TfrmMain::RandNum(int Flag)
{
//TODO: Add your source code here
double RandNum;
switch (Flag)
{
case 1: //全部數(shù)字不帶有小數(shù)點
RandNum=random (100);
break;
case 2: //部分數(shù)字帶有小數(shù)點
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: //全部數(shù)字不帶有小數(shù)點
RandNum=random (100);
}
return AnsiString(RandNum);
}
測試速度:
該軟件的速度測試分兩種:擊鍵速度和單詞速度,擊鍵速度表示用戶每分鐘用戶的擊鍵書,而單詞速度則表示用戶每分鐘用戶所輸入的數(shù)字個數(shù),測試速度的取得我也是通過一個函數(shù)來實現(xiàn)的,該函數(shù)代碼如下:
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="擊鍵數(shù):"+AnsiString(NumCount);
break;
case 2: //單詞速度
if (dwTimeElapse>0)
{
long int temp2=(60*1000*(NumCount)/dwTimeElapse);
stSpeed->Caption="單詞速度:"+AnsiString(temp2)+"/分";