日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数字小键盘指法练习

發布時間:2024/3/24 编程问答 249 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数字小键盘指法练习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數字小鍵盤指法練習是用來練習指法的一個小軟件,當初我之所以編寫這個軟件是因為我要參加今年夏天四川省的高考通分工作,我的指法太爛,速度太慢了,而且還因為不滿學校給我們提供的用來練習指法的軟件,是這樣的,在高考的通分中,大部分分數就不帶小數點,帶小數點也是只有.5小數點,而學校給我們的那個軟件在產生數據的時候全部帶有小數點如:52.168.369.4等,這個還可以忍受,更讓人感覺不好的居然那個軟件有時間限制,我們在打開它的時候它就自動關閉了,而老師給我們的提示是叫我們改變系統時間來進行指法練習,我當然不滿這種做法了,于是自己寫了這個軟件,好了下面我就來介紹一下我是如何實現的,先還是來介紹一下它的功能吧,然后在介紹是如何進行編碼的:

?

該軟件具有如下功能:

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開發的,如果你對該軟件有任何意見或建議,或者想與我共同探討,交流想法的話,我的聯系方式: emailzqget@msn.com

總結

以上是生活随笔為你收集整理的数字小键盘指法练习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。