打字练习软件课程设计报告

  • 格式:doc
  • 大小:1.08 MB
  • 文档页数:18

燕山大学

专业综合设计报告

题目

打字练习软件

学院(系) 信息科学与工程学院

年级专业 07计算机软件2班

学生姓名 李成武

指导教师 陈子阳

日 期 2010 年 10 月 13日 燕山大学专业综合设计报告

II 目录

1 概述 .............................................................................................................. 1

1.1 软件开发环境、工具和方法 ................................................................ 1

1.2 软件功能简介 ........................................................................................ 1

2 软件功能设计 .............................................................................................. 2

2.1 系统的总体功能描述 ............................................................................ 2

3 编码设计 ...................................................................................................... 3

3.1 打字练习部分 ........................................................................................ 3

3.2 数据库部分 ............................................................................................ 5

3.3 FLASH部分 .............................................................................................. 7

3.4 主要模块实现 ........................................................................................ 8

4 测试............................................................................................................. 10

4.1 黑盒测试 .............................................................................................. 12

4.2 白盒测试 .............................................................................................. 13

5 总结............................................................................................................. 15

参考文献 ......................................................................................................... 16 燕山大学专业综合设计报告

1 1 概述

1.1 软件开发环境、工具和方法

打字练习软件是基于Windows操作平台,以Visual Studio 2005为开发环境,利用MFC编写的。可在Windows XP操作系统中安全运行。

本软件界面的设计主要通过Visual C++提供的多种控件来构建的,例如,

RicheEdit2.0控件用来实现显示和输入字符串;Shockwave Flash Object控件打开Flash打字游戏;List Control控件读取并显示数据库内容等等。

本软件采用Access 2003作为数据库,用来记录软件使用者的部分信息,如姓名、字母打字得分和数字打字得分等数据。

1.2 软件功能简介

本软件对打字练习方法经过合理的安排,使之形成完善的应用系统。下面将介绍此打字练习软件的基本功能:

(1) 教程功能

这是打字入门的基础。正确的打字姿势习惯关于整个打字练习的成败。这个功能将为那些初学打字或者打字姿势不正确的人提供一个正确的指导,为形成良好的打字习惯奠定坚实的基础。

(2) 练习功能

即提供给使用者进行打字练习,使其熟悉键盘上相应字母的指法并正确的打出相应的字母或者数字。由于键盘可大致分为两个部分,一个是主键盘区,另一个是数字键盘区。熟悉整个键盘并能熟练的进行盲打,使我们设计此软件的宗旨。因此,练习功能必须包含字母练习功能和数字键盘区练习。

(3) 游戏功能

通过在窗口中调入Flash游戏,给使用者一种寓教于乐的氛围,游戏娱乐的同时也熟悉了指法,为枯燥的打字练习平添许多趣味。因此,这项功能的需要也就不言而喻了。

(4) 排行榜功能

通过Access数据库对打字成绩进行有选择的录入,增添和修改,帮助使用者了解自己的程度和与理想程度的差距,从而刺激使用者再接再厉,打破记录再创佳绩。 燕山大学专业综合设计报告

2 2 软件功能设计

2.1 系统的总体功能描述

该部分主要任务是确定软件应该完成的工作,打字练习软件的主要功能应该为:

(1) 教程功能,帮助打字初学者掌握正确的姿势、指法和练习方法。

(2) 练习功能,提供练习功能,帮助使用者熟悉字母和数字的指法。

(3) 游戏功能,寓教于乐,打字娱乐两不误,让打字变轻松。

(4) 排行榜功能,记录本软件练习者的最好记录。

具体功能,如图2-1所示

图2-1 系统功能图

打字练习软件登陆模块教程模块练习模块模式一练习模块模式二游戏模块排行榜字母练习数字练习字母练习数字练习燕山大学专业综合设计报告

3 3 编码设计

3.1打字练习部分

1.字体格式及RicheEdit2.0显示模块

(1)基本原理

添加两个重叠的RichEdit2.0,然后设置行高为字体高度的一倍。两个错开,一个用于文本显示,一个用于用户输入。

(2)具体实现

/ /显示随机产生的数字或字母组成的字符串

srand(time(NULL)); //设置产生随机种子的种子

TCHAR buffer[5]={0}; //临时的存储器

for (int i=0;i<=99;i++) //产生随机字母

{

int a=rand() % 26;

int b=a+97;

buffer[0]=b;

letter1[i]=buffer[0];

}

((CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT21))->ReplaceSel(letter1,FALSE);

//设置字体的函数

void CLetterDlg::setFont(CRichEditCtrl &m_RichEdControl)

{

CHARFORMAT cf;

ZeroMemory(&cf, sizeof(CHARFORMAT));

cf.cbSize = sizeof(CHARFORMAT);

cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |

CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;

cf.dwEffects = 0;

cf.yHeight = 900;//文字高度

cf.crTextColor = RGB(0, 0, 255); //文字颜色

lstrcpy(cf.szFaceName ,_T("GulimChe"));//设置字体 燕山大学专业综合设计报告

4 m_RichEdControl.SetSel(0, -1); //设置处理区域,0到-1为全部设置

m_RichEdControl.SetSelectionCharFormat(cf);

}

//设置行高的函数

void CLetterDlg::setLineHeight(int iHigh, CRichEditCtrl &m_RichEdControl)

{

UpdateData(TRUE);

PARAFORMAT2 pf2;

pf2.cbSize= sizeof(PARAFORMAT2);

pf2.dwMask= PFM_LINESPACING;

pf2.dyLineSpacing = iHigh;

pf2.bLineSpacingRule = 5;

m_RichEdControl.SetParaFormat(pf2);

}

//设置输入过程中的每一个字符的颜色及字体的函数

void CLetterDlg::setColor(int n, COLORREF color, CRichEditCtrl

&m_RichEdControl)

{

CHARFORMAT cf;

DWORD dwMask = m_RichEdControl.GetSelectionCharFormat (cf);

cf.dwMask = CFM_FACE|CFM_SIZE|CFM_COLOR;

m_RichEdControl.SetSel(n,n+1);

cf.crTextColor =color;

m_RichEdControl.SetSelectionCharFormat(cf);

}

2.键盘读入的实现

重新PreTranslateMessage()函数,以成功相应键盘消息。

BOOL CLetterDlg::PreTranslateMessage(MSG* pMsg)

{

SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);

return 0;

//return CDialog::PreTranslateMessage(pMsg);