指法练习软件报告docx.docx
- 文档编号:17165527
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:21
- 大小:138.82KB
指法练习软件报告docx.docx
《指法练习软件报告docx.docx》由会员分享,可在线阅读,更多相关《指法练习软件报告docx.docx(21页珍藏版)》请在冰点文库上搜索。
指法练习软件报告docx
WINDOWS程序设计报告
学院名称:
计算机科学与工程学院
专业:
计算机科学与技术
班级:
09计2Z
学号:
09141229、09141232
姓名:
姚慕容、朱义霞
2010年6月10FI
指法练习软件
摘要:
科技的飞速发展,将人类带入了信息时代,计算机越来越贴近人的生活,速度成为人们成功的前提条件,以致于人们必须不断尝试着使用各种手段来提高自身的工作效率,其手段Z—就是对键盘的充分利用和相应软件的开发。
至今为止,人们对计算机键盘的熟悉在很大程度上还必须依靠一些指法练习软件,软件质量的高低直接影响到对熟悉键盘过程的长短。
由北京元易达科技发展责任有限公司指法练习设计开发小组自主开发的指法练习软件,完全使用汉语程序设计语言进行开发,结构紧凑,高度安全,资源占用少,速度快,能帮助使用者更加方便,快捷的熟悉对键盘的操作,从而节省操作时间,达到提高T作效率的冃的。
关键词:
信息时代,键盘,程序设计
Fingeringpracticesoftware
Abstract:
Therapiddevelopmentofscienceandtechnology,humanbeingsintotheinformationage,Thecomputerismoreandmoreclosetothehumanlife,speed,becomepeoplethepremiseconditionofsuccess,thatpeoplemustconstantlytrytouseallsortsofmeanstoimprovetheirownworkefficiency,isoneofthemeanstomakefulluseofthekeyboardandthecorrespondingsoftwaredevelopment.
Sofar,peoplefamiliarwiththekeyboardonthecomputertoagreatextentmustalsorelyonsomefingeringpracticesoftware,softwarequalitydirectlyinflueneeonthefamiliarwiththekeyboard,lengthoftheprocess.ByBeijingyuaneseetechscienceandtechnologydevelopmentlimitedcompanyfingeringpracticedesigndevelopmentteamindependentdevelopmentoffingeringpracticesoftware,acompletelyuseChineseprogramminglanguagedevelopment,compactstructure,highsafety,lessresourcesoccupation,speed,canhelpusersmoreconvenientandquickfamiliarwiththeoperationofthekeyboard,whichcansavetime,improveoperationefficiencypurpose.
Keywords:
informationage,keyboard,programminglanguage
序言4
第1章概述4
1.1系统开发背景和意义4
1.2设计流程4
1.3开发工具介绍4
1.3.1VisualC++软件4
1.3.2MFC应用程序5
1.3.3对话框5
第2章需求分析6
2.1设计思路6
2.2技术要点6
2.2.1CStatic类白勺Create方法6
2.2.2srand函数6
2.2.3rand函数6
2.2.4、ShowWindow函数7
第3章系统设计8
3.1设计步骤8
3.2主要程序代码8
3.2.1在主窗体的头文件中声明变量8
3.2.2添力口自定义函数Initialization8
3.2.3初始化控件显示数据9
3.2.4添加WM_CTLC0L0R消息的处理函数9
3.2.5添力口自定义函数RandLetter10
3.2.6添力口自定义函数SetBitmap10
3.2.7处理'‘开始”按钮的单击事件10
3.2.8处理主窗体的定时器事件11
3.2.9重载PreTransIateMessage虚函数12
3.2.10处理“取消”按钮的单击事件13
3.3、调试程序14
3.3.1调试中的错误与解决方式14
3.3.2测试结果14
结束语16
参考文献17
致谢18
序言
用户在Fl常的工作屮,对计算机的使用越来越多,如果用户打字速度加快的话,工作效率也会相应的提高,在这竞争激烈的社会,较快的打字速度已经成为工作的基础,为了提高个人的打字速度,一款好的指法软件必不可少。
本程序通过VisualC++來实现一款指法练习的开发。
运行本程序,设置练习时间和字符下落间隔,单击“开始”按钮,进行指法练习,在练习时可以在窗体的右侧看到练习的各项数据。
1.1系统开发背景和意义
随着科学技术的不断提高,计算机科学日渐成熟,计算机已经深入到工作和生活的角落,文字录入是学习计算机非常重要的一部分。
在手写录入技术和语音识别技术还不完善的同吋大部分还在使用键盘作为文字录入的工具。
计算机是人类社会20世纪的重大科技成果之五。
自1946年世界第一台电子数字计算机诞生至今,在短短50多年的时间里,计算机技术得到了飞速发展。
冃前计算机已广泛应用在•工业,农业,科技,国防,文教,卫生,家庭生活等齐个领域屮,已成为现代人类生活不可缺少的钢能一工具。
本程序构建学生练习指法系统,帮助熟悉键盘各个布局。
完成指法软件开发,培养学生的程序设计和开发能力。
1・2设计流程
1.查阅文献,确定设计内容。
通过查阅网页设计与制作,和图书馆的书籍资源,确定设计内容。
2.搜集图片。
通过上网查找所需要的图片,利用应用程序导入位图。
完成前期的准备。
3.设计主界面。
添加各类控件及文本框。
4.添加所实现程序的代码。
5.测试结果
1.3开发工具介绍
木程序主要采用了VisualC++软件,利用集成化开发环境窗口和对话框,新建一个基于对话框的应用程序,进行各个阶段的设计,导入位图,添加各类函数,完成一个基本的练习软件。
1.3.1VisualC++软件
随着计算机技术的普及和发展,计算机的应用已经渗透到国民经济与人们生活的各个方面,VisualC++是20世纪90年代中期由美国微软公司推出的一个强大的Windows应用程序开发平台,是“真正的程序员”首选的开发T具Z—。
在Visualc++环境下,利用微软的基础类库MFC开发出功能强大的Windows应用程序。
1.3.2MFC应用程序
MFC是由微软公司编写的一套专门用TWindows编程的基础类库,它的类可以处理许多标准Windows编程任务。
借助AppWizard可以创建非常灵活的应用程序框架,使开发者摆脱那些每次都必写的基本代码。
与具他所有的Windows应用程序一样,在使用MFC的应用程序中也要处理Windows消息,但是在MFC中消息处理更容易,封装得更好,更易丁维护。
1.3.3对话框
对话框是Windows应用程序中的一种常用的资源。
它其实是一个“窗口”,是Windows程序与用户交互的一个手段,它的主要功能是输出信息和接收用户的输入。
它可以只是—个简单的0K消息框,也可以是一个复杂的数据输入表单。
在对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互。
第2章需求分析
2.1设计思路
在设计指法练习软件时,先在对话框上绘制软件的背景位图,然后动态创建10个静态控件,在调用mnd函数取岀1〜26的随机数,根据随机获得的数据判断每个控件显示的字母图片,在定时器中设置控件向下移动,当控件到达下落区域的底部或者用户按下了正在下落的字母时,重新取随机数,再设置一个定时器,在该定时器中根据用户的操作计算正确率、错误数、漏打数等消息,当到达用户设置练习时间后口动停止控件的下落,这样指法练习软件就完成了。
2.2技术要点
本程序实现字母下落功能时,主耍用CStatic类的Create方法、srand函数、nmd函数ShowWindow函数,下面对本程序中用到的关键技术进行详细讲解。
2.2.1CStatic类的Create方法
Create方法用于创建静态控件,该函数的语法格式如下:
BOOLCreate(LPCTSTRIpszText,DWORDdwStyle,const
RECT&recf,CWnd*pParentWnd,UINTnID==Oxffff);
参数说明如下:
•sxText:
用于设置控件文本。
•dwStyle:
用丁•设置控件风格。
•rect:
用丁确定控件的显示区域。
•pParentWnd:
用丁•确定控件父窗口指针。
•nID:
用丁设置控件ID。
本程序中用-T*创建静态控件的代码如下:
For(inti=0;ivl0;i++)
{m_Static[i].Create(6<,,,WS_CHILDIWS_CLIPSIBLINGSIWS_EX_TOOLWINDOWISS_BITMARCRect(0,0,50,50),this,1230+i);
2.2.2srand函数
srand函数用丁•为rand函数设置一个种子,其语法格式如下:
Voidsrand(unsignedintseed);
参数说明如下:
•Seed:
设置的种子。
2.2.3rand函数
⑶ul函数用于获取随机数,其语法格式如下:
Intrand(void);
本程序中用丁获得随机数的代码如下:
CTimetime=CTime:
:
GetCurrentTime();〃获得系统时间
Srand(time.GetHour()+Time.GetMinute()+time.GetSecond());〃根据时间设置种子
For(inti=0;i<10;i++)
{
m_Num[i]=rand()%26+l;}〃获得1〜26Z间的随机数
}
2.2.4、ShowWindow函数
ShowWindow函数用丁•设置窗1~1的显示状态,其语法格式如下:
BOOLShowWindow(intnCmdShow);
参数说明如下:
•nCmdShow:
表示窗口的显示状态,可选值如表1所示。
表1nCmdShow参数值表
参数值
描述
SWHIDE
隐藏窗口
SWMINIMIZE
最小化窗口
SW.RESTORE
还原并激活窗口
SWSHOW
显示并激活窗口
SW.SHOWMAXIMIZED
最大化显示窗口
SWSHOWMINIMIZED
最小化显示并激活窗口
SWSHOWMINNOACTIVE
最小化显示窗口,保持原来的活动窗口
SWSHOWNA
显示窗口,保持原来的活动窗口
SWSHOWNOACTIVATE
按窗口最近的大小和位置显示,保持原來的活动窗口
SWSHOWNORMAL
还原窗口,保持原来的活动窗口
第3章系统设计
3.1设计步骤
(1)、新建一个基丁对话框的应用程序,将其窗体标题改为“指法练习软件”,勾选Minmizebox属性,使对话框具有最小化按钮。
(2)、向对话框中添加4个静态文本控件、8个编辑框控件和3个按钮控件。
对话框主要用到的控件及说明如表2所示,根据需要对其属性进行修改,并建立类向导,在相应的地方添加代码。
控件ID
属性设置
关联变量
IDC.TIME
无
CEditmuTime
IDCSUMMUM
无
CEditmsNum
IDCERRORNUM
无
CEditmeNum
IDC.LOSENUM
无
CEditmlNum
IDCVERACITY
无
CEditmVeracity
IDCRATE
无
CEditmRate
IDC.TIMING
无
CEditmTiming
IDCAETERNAriON
无
CEditmAlternation
IDC.STATIC
Simple
无
IDCBUTSTART
勾选Bitmap和Flat属性
CButton
IDCBUTCANCEL
勾选Bitmap和Flat属性
CButton
IDCBUTEXIT
勾选Bitmap和Flat属性
CButton
表2对话框主耍用到的控件及说明
(3)、向工程中导入30个BMP位图资源
(4)在类的原文件中添加实现功能所需要的各种函数,并添加相丿、'、Z的代码,同时在头文件中添加对各种函数及变量的声明。
(5)调试程序,纠正发生的错谋,直到这个程序能够运行为止。
3.2主要程序代码
3.2.1在主窗体的头文件中声明变量代码如下:
UIN
m_NumflO];
〃显示字母
CStatic
m_Static[10];
〃静态控件
int
m_EiTor;
〃错误数
int
m_Sum;
〃打字数
int
m_Lose;
〃漏打数
int
m_Time;
〃用时
BOOL
m_IsStart;
〃开始
int
Time;
〃定吋
int
m_aTime;
〃间隔时间
3.2.2添加自定义函数Initialization
该函数用丁初始化控件显示数据,代码如下:
voidCFingerExerciseDlg:
:
Initialization()
{
m_IsStart=FALSE;
m_uTime.SetWindowText(**时间:
0分0秒”);m_sNuni.SetWindowText(M打字数:
0个”);m_eNum.SetWindowText(H错误数:
0个”);m_lNum.SetWindowTextC,漏打数:
0个”);m_Veracity.SetWindowText(r,正确率:
0.0%");m_Rate.SetWindowText(n速度:
0个/分”);m_Timing.SetWindowText("3");ni_Alternation.SetWindowText("500u);
3.2.3初始化控件显示数据
在主窗体初始化,创建静态控件,并设置按钮的显示图片,代码如下:
Initialization();
for(inti=0;i<10;i++)
{
m_Static[i].Create(H,,,WS_CHILDIWS_CLIPSIBLINGSI
WS_EX_TOOLWINDOWISS_BITMAP,CRect(0,0,50,50),this,1230+i);
1
m_Start.SetBitmap(LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_START)));〃设置位图
ni_Cancel.SetBitniap(LoadBitniap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_CANCEL)));〃设置位图
ni_Exit.SetBitniap(LoadBitniap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_EXIT)));//设置位图
3.2.4添加WM_CTLCOLOR消息的处理函数
在该函数中调用绘制窗体的背景位图,实现代码如下:
HBRUSHCFingerExerciseDlg:
:
OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){
HBRUSHhbr=CDialog:
:
OnCtlColor(pDC,pWnd,nCtlColor);
CBitmapm_BK;
m_BK.LoadBitmap(IDB.BITMAPBK);if(nCtlColor==CTLCOLOR_DLG)f
//声明位图对象〃加载位图资源//如果是对话框
I
CBmshm_Brush(&m_BK);
CRectrect;
〃定义一个位图画刷
GetCIientRect(rect);pDC->SelectObject(&m_Brush);pDC->FillRect(rect,&m_Brush);
〃获得窗体客户区域
//选中画刷
〃填充客户区域
else
hbr=CDialog:
:
OnCtlColor(pDC,pWnd,nCtlColor);
if(nCtlColor==CTLCOLOR.STATIC)〃如果是静态文本控件
{
pDC->SetBkMode(TRANSPARENT);//设置控件背景透明
)
returnhbr;
I
3.2.5添加自定义函数RandLetter
该函数用于设置随机数,其实现代码如下:
voidCFingerExerciseDlg:
:
RandLetter()
{
CTimetime=CTime:
:
GetCurrentTime();〃获得系统时间
srand(time.GetHour()+time.GetMinute()+time.GetSecond());〃根据时间设置种子for(inti=0;i<10;i++)
{
rn_Nuni[i]=rand()%264-1;〃获得1~26之间的随机数
3.2.6添加自定义函数SetBitmap
该函数用于设置静态控件的显示图片,具实现代码如下:
voidCFingerExerciseDlg:
:
SetBitmap(intnum)
{
HBITMAPni_hBitniap;
〃加载位图资源
m_hBitmap=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURC玖IDB_BITMAPA+m_Num[num]-l));
m_Static[numJ.SetBitmap(m_hBitniap);〃设置显示图片
m_Static[num].MoveWindow(45+58*num,21,24,24);〃移动控件
m_Static[num].ShowWindow(SW_SHOW);〃显示控件
)
3.2.7处理“开始”按钮的单击事件
在该事件的处理函数中清空控件中的数据,并设置定吋器,开始练习,其实现代码如下:
〃鉛谋数为0
〃打字数为0
voidCFingerExerciseDlg:
:
OnButstart()
m_Error=0;m_Sum=0;
3.2.8处理主窗体的定时器事件
在该事件的处理函数中设置控件的下落记录漏打数,并设置漏打控件的图片,在练习时间定时器中,判断是否结朿练习,如果结朿练习则显示用户练习成绩单,并将信息保存到INT文件中,其实现代码如下:
voidCFingerExerciseDlg:
:
OnTimer(UINTnIDEvent)
{
if(nIDEvent==1)
{
for(inti=0;i<10;i++)
{
CRectrect;
ni_Static[i].GetClientRect(rect);
m_Staticfi].MapWindowPoints(this,rect);
if(rect.bottom==495)
{
m_Lose++;
srand(m_Num[i]*i+m_Num[i]+i);
m_Num[i]=rand()%26+l;
SetBitmap(i);
rect.top=21;
rect.bottom=45;
)
else
{
rect.top+=30;
rect.bottom+=30;
m_Static[i].MoveWindow(rect);
)
elseif(nIDEvent==2)
{
if(m_Time==m_iTime)
{
m_IsStart=FALSE;
KillTimer(l);
KillTimer
(2);
CStringstr;
str.Format(,'厂=q]\r\n|时I、可:
%02d分%02<1秒|扌丁字
数:
%03d个I\r\n|错误数:
%03d个||漏打数:
%03d个|\「\n||正确率:
%0.0f%%|
速度:
%03d个/分|\r\n~=——-__=————』”
m_Time/60,m_Time%60,m_Sum,m_Error,m_Lose,(m_Sum-m_Error)*1.0/m_Sum*100,m_Sum*60/m_Time);
MessageBox(str);
for(inti=0;i<10;i++)
m_Static[i].ShowWindow(SW_HIDE);
I
else
{
m_Time++;
CStringstr;
str.Format("时间:
%d分%d秒,r,m_Time/60,m_Time%60);
m_uTime.SetWindowText(str);
str.Format("打字数:
%d个M,m_Sum);
m_sNum.SetWindowText(str);
str.Format("错误数:
%d个M,m_Error);
m_eNum.SetWindowText(str);
str.Format(H漏打数:
%d个”,m_Lose);
m_lNum.SetWindowText(str);
str.Format(M正确率:
%0.0f%%H,(m_Sum-m_Error)*1.0/m_Sum*100);
m_Veracity.SetWindowText(str);
str.Format("速度:
%d个/分,',m_Sum*60/m_Time);
m_Rate.SetWindowText(str);
)
)
CDialog:
:
OnTimer(nIDEvent);
I
3.2.9重载PreTranslateMessage虚函数
在该函数屮判断用户按下的键盘是否对应下落的字母,如果是,则重新设置控件的显示图片,如果不是,则记录一次错误,其实现代码如下:
BOOLCFingerExerciseDIg:
:
PreTransIateMessage(MSG*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指法 练习 软件 报告 docx