Разработка интерфейса и ТЕСТИРОВАНИЕ ПРОГРАММЫ

Министерство образования Республики Беларусь

УО «Полоцкий государственный университет»

Факультет спортивнопедагогический

Кафедра технологии и методики

Преподавания

КУРСОВОЙ ПРОЕКТ

по дисциплине «Информатика»

Тема: разработка программы «Клавиатурный тренажер»

Стедент гр.11-ТОМ

Исполнитель Романов А.В.
Руководитель проекта Прищепенок М.А.

Новополоцк, 2012

содержание

 

Введение. 3

1. Постановка целей и задач приложения………………………5

2. Разработка интерфейса и тестирование программы.. …….7

2.1 Разработка интерфейса. ……………………………………………………7

2.2 Тестирование программы.. 9

3.Реализация приложения……………………………………………..10

Заключение. 16

список используемой литературы.. 17

приложение: текст программы 18

 

 

 
 


Введение

 

На сегодняшний день персональный компьютер стал для многих неотъемлемой частью повседневной жизни. Умение печатать слепым десятипальцевым методом на компьютере стало необходимым навыком не только для тех, кто имеет дело с ПК на работе (а таких людей сегодня становится все больше), но и для тех, кто живет активным, деятельным, насыщенным позитивным общением жизнью.

Мы с вами изо дня в день пишем электронные письма, общаемся в мессенджерах и соцсетях, на форумах и в блогах. При этом скорость и непринужденность общения с новыми и старыми друзьями напрямую связаны со скоростью печати.

Люди, которые «зависают» над клавиатурой своего компьютера, пытаясь набрать короткий текст при помощи указательных пальцев, выглядят несколько нелепо. И еще нелепей они выглядят когда у них это выходит крайне медленно.

Для того чтобы не быть в незавидной роли, отставшего от жизни человека, необходимо учиться печатать слепым десятипальцевым методом.

Слепой метод печати — это методика набора текста вслепую, используя все пальцы рук.В XIX веке слепым методом печати на печатных машинках обучали машинисток и секретарей. Это позволило сузить использование стенографии, увеличить производительность труда секретарей. Этот метод требует специального обучения, для чего существуют курсы машинописи, а также бумажные и компьютерные самоучители (последние нередко выполнены в занимательной форме, подобно видеоигре). При слепом методе печати больший упор делается на тактильные ощущения пальцев и мышечную память, чем на зрение. Одними из таких самуочителей являются следующие программы: «Соло на клавиатуре», «Keyboard Simulator», «Stamina», « Diabolical fingers», « Adelavida Keyboard Shooter», « kbTrainer

», « АРЕ Клавиатурный тренажёр»и еще целая куча подобного рода программ.

Обычно начальным при изучении компьютера является другой методом печати — быстро найти и нажать требуемую клавишу,где печать производится несколькими пальцами. Вместо того, чтобы находить нужный символ на клавиатуре, основываясь на мышечной памяти, приходится каждый раз находить его заново, что замедляет печать, но, с другой стороны, не требует предварительной подготовки. Именно этот метод использован мною при создании моего проекта, который предназначен сугубо для новичков. Моя программа учит пользователей быстро находить нужную клавишу на клавиатуре.

Актуальность данной работы обусловлена тем, что навык быстрой печати является одним из важных навыков как для современного офисного

 

работника вне зависимости от поля деятельности, так и для государственного

служащего или студента. Быстрая и безошибочная печать позволяет

эффективнее работать с компьютером, больше успевать, раньше заканчивать дела.

 


1. Постановка целей и задач приложения

 

Так как темой данного курсового проекта является «Разработка программы клавиатурный тренажер», то при разработке данного приложения были выдвинуты следующие требования к его функциональности:

 

1. Приложение должно функционировать в операционной системе Widows XP,7;

2. Приложение должно функционировать на компьютерах слабой производительности;

3. Наличие клавиатуры для ввода текста;

4. Для полного функционирования приложения требуется наличие звуковыводящего устройства.

 

Исходя из перечисленных выше требований, обозначим основные функции, которые будет осуществлять разрабатываемое приложение.

Приложение должно:

ü Выводить на требуемую панель рандомные значения латинских букв;

ü Буквы должны двигаться с заданным скоростным параметром;

ü Воспринимать нажатия клавиш пользователе и в случае несоответствии клавиши и изображения буквы выдавать ошибку;

ü Уровни должны меняться согласно заданным требованиям;

ü Воспроизводить музыкальный файл.

 

Данная программа должна представлять собой следующее: по вертикали сверху вниз падают случайные латинские буквы. Пользователь должен успеть нажать соответствующую клавишу на клавиатуре до того как буква исчезнет из вида . При неправильном нажатие на клавишу появляется сообщение о неправильном нажатии. После нескольких правильных нажатий пользователь переходит на новый уровень. От уровня зависит скорость с которой буквы падают. Данное приложение имеет конечное количество уровней.

Что бы пользователь не скучал во время работы с приложением в программу добавлено музыкальное сопровождение. Имея хоть малое представление о делфи пользователь сможет сам задавать скоростной параметр движения букв и сам вставлять в приложения любимые музыкальные композиции.

 

На рисунке 1.1. представлен конечный вид нашего клавиатурного тренажера.

 

Рисунок 1.1 – Внешний вид клавиатурного тренажера.

 

 

 

Разработка интерфейса и ТЕСТИРОВАНИЕ ПРОГРАММЫ

Разработка интерфейса

 

При разработке интерфейса мною были использованы следующие составляющие:

1. 2-х Panel(рисунок 2.1.1.)

· Panel1 - для определения границ тренажера

· Panel2 - для падающих букв

2. 2-х Buttons(рисунок 2.1.2.)

· Начать - для начала теста

· Завершить - для выхода из тренажера

3. Label - для показа уровня скорости(рисунок 2.1.3.)

4. Timer - для определения скорости падания букв(рисунок 2.1.4.)

5. MediaPlayer – для воспроизведения музыки. (рисунок 2.1.5.)

 

Рисунок 2.1.1.- Изображение Panel1 и Panel2.

 

Рисунок 2.1.2.- Изображение Buttons.

 

Рисунок 2.1.3.- Изображение Label.

 

Рисунок 2.1.4.- Изображение Timer.

Рисунок 2.1.5.- Изображение MediaPlayer.

 

 

 

 

2.1. Тестирование приложение

Тестирование приложения проходило методом многократных прогонов, что позволило проверить ту, либо иную функцию приложения. Результы тестирования работы приложения отображены в следующей таблице (табл. 3. 1):

 

Таблица 2. 1.1. Результаты тестирования

Функции Тестирование при отладке
Рандомное появление латинских букв работает
Движение букв с заданным скоростным параметром работает
Восприятие приложением нажатий клавиш работает
Изменение уровней работает
Воспроизведение музыки   работает

 

 

 

Реализация приложения

 

Для осуществления работы программы мною был разработан следующий алгоритм:

 


 

 


После разработки алгоритма работы приложения и размещения в окне стартовой формы всех требуемых для нашего приложения компонентов, нужно поработать с текстом программы.

Итак, в Листинге 3.1 указан результат работы с процедурой FormKeyPress.

 

Листинг 3.1 – работа с процедурой FormKeyPress

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

begin

 

 

if Panel2.Caption <> key then

showmessage(‘Вы нажали неверную кнопку’);

if Panel2.Caption = key then

begin

Inc(count);

Panel2.Top := Panel1.Height;

end;

if count = x * 3 then

begin

Inc(x);

Label1.Caption := 'Level ' + IntToStr(x);

if Timer1.Interval <= 250 then Timer1.Interval := Timer1.Interval - 25

else

if Timer1.Interval <= 100 then Timer1.Interval := 100

else

Timer1.Interval := Timer1.Interval - 250;

end;

end;

 

 

Сперва указываем следующее: если пользователь нажал клавишу, которая не соответствует текущему изображению на Panel2, то ему выдаётся

информация об ошибке – в противном случаем требуемое условие выполняется и Panel2 перемещается в самый верх Panel1.

После каждых трёх правильно нажатых клавиш уровень увеличивается на 1.

Подробная работа процедуры Timer.Interval описана в алгоритме работы программы.

 

Компонент Button1Click предназначен для начала работы. В программе его следовало бы поместить перед описанием процедуры FormKeyPress для логичности, хотя на работу самого приложения это никак влияет.

 

Листинг 3.2 – работа с процедурой Button1Click

procedure TForm1.Button1Click(Sender: TObject);

begin

if MediaPlayer1.FileName <> '' then

MediaPlayer1.Play;

Form1.Focused;

Panel2.Visible := true;

Panel2.Top := 0;

Randomize;

Panel2.Caption := Chr(Random(26)+97) ;

count := 0;

uncount := 0;

x := 1;

Label1.Caption := 'Level ' + IntToStr(x);

Timer1.Enabled := true;

end;

 

После активации Button1Click автоматически начинает работу

 

 

компонент MediaPlayer( в частности начинает проигрываться музыкальная композиция). «Panel2.Visible := true;» - значит, что при начале работы

программы на панеле отображаются буквы. «Panel2.Top := 0;» значит, что

панель с изображением буквы не заполняется по верху в Panel2.

Функция randomize инициализирует генератор случайных символов некоторым случайным символом. «Panel2.Caption := Chr(Random(26)+97) ;» - на панеле появляются произвольные латинские буквы.

Переменная x является результатом нажатия клавиши соответствующую изображенной букве на панели.

Timer1.Enabled := true; - означает, что после начала работы приложения наш таймер также начинает работать.

 

Листинг 3.3 – работа с процедурой Button2Click

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close;

end;

 

Процедура Button2Click предназначена для завершения работы приложения. Краткий текст этой процедуры описан в Листинге 3.3.

 

Листинг 3.4 – работа с процедурой MediaPlayerNotify

procedure TForm1.MediaPlayer1Notify(Sender: TObject);

begin

with MediaPlayer1 do

if NotifyValue = nvSuccessful then

begin

Notify := True;

Play;

end;

end;

 

Процедура Notify используется в нашем случае для бесконечного воспроизведения музыкального файла до момента, пока пользователь завершит работу с приложением. Полный текст процедуры MediaPlayerNotify

Указан в Листинге 3.4 выше.

 

Листинг 3.5 – работа с процедурой Timer1Timer

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Randomize;

if Panel1.Height > Panel2.Top then

Panel2.Top := Panel2.Top + 20

else

begin

Randomize;

Panel2.Caption := Chr(Random(26)+97);

 

 

Panel2.Left := Random(Panel1.Width - Panel2.Width);

Panel2.Top := 0;

Inc(uncount);

end;

end;

 

В Листинге 3.5 подробным образом описана работа процедуры Timer1Timer.

 

В var переменным x, count(выполнение условия) и uncount (невыполнение условия) присваиваем integer.

Также в окне редактора свойств объектов MediaPlayerсвойство visible рекомендуется изменить в положение false (как изображено на рисунке 3.1)

Рисунок 3.1

 

А в окне редактора свойств объектов нашей формы свойство KeyPreview требуется изменить в положение True (рисунок 3.2). Это требуется делать если мы работаем с передачей кода клавиши в какую-либо процедуру в делфи (как в нашем случае).

Рисунок 3.2

 

Рисунок 3.3

 

Исключительно ради визуализации можно изменить цветовую окраску некоторых компонентов. Я решил изменить цвет панелей нашей основной формы. Чтобы это осуществить требуется в окне редактора свойств объектов

(смотреть рисунок 3.3) кликнуть по Color и далее просто выбрать нужный цвет.

 
 

 

 

 


ЗАКЛЮЧЕНИЕ

 

В ходе проделанной работы была разработана программа«Клавиатурный тренажер».

Пользователи, освоившие этот тренажер в совершенстве могут спокойно приступать к непосредственному изучение слепого десятипальцевого метода печати.

Разработка данного приложения позволила мне более детально ознакомиться с некоторыми процедурами делфи, с которыми я был мало знаком ранее.

Реализованное приложение выполняет все действия, предусмотренные заданием курсового проекта. Разработанное приложение не является готовым коммерческим продуктом, но является хорошим практическим заданием для освоения относительно быстрого набора текста на клавиатуре, что собственно и является целью выполнения данного курсового проекта.

 


список используемой литературы

1. Тейлор Д., ПенманДж.- «Delphi 3: библиотека программиста».-СПб.: «Питер».-1998г. -568с.

2. Фленов М. «Библия Delphi».-СПб.: «БХВ-Петербург».-2004.-880с.

3. Фленов М. «Программирование в Delphi глазами хакера». - СПб.: «БХВ-Петербург».-2003.-368с.

4. Озеров В. Электронный учебник: «Советы по Delphi». Версия 1.4.3 от 1.1.2001.

5. Елманова Н. Электронный учебник: «Советы пользователям Delphi и C++Builder».

6. Коноплянка Р. «Создание оригинальных компонент в среде Delphi».-К.:НИПФ-«ДиаСофт Лтд.».-1996.-512с.

7. Сухарёв М.В. «Основы Delphi. Профессиональный подход».-СПб.: «Наука и Техника».-2004,- 600с.

8. Ревич Ю.В. «Нестандартные приёмы программирования на Delphi».-СПб.: «БХВ-Петербург».-2005. - 560с.

 

 

 
 


Приложение: текст программы

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, ComCtrls, MPlayer;

 

type

TForm1 = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Button1: TButton;

Button2: TButton;

Label1: TLabel;

Timer1: TTimer;

MediaPlayer1: TMediaPlayer;

procedure FormKeyPress(Sender: TObject; var Key: Char);

procedure Button1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure MediaPlayer1Notify(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

uncount,count,x: integer;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

begin

if Panel2.Caption <> key then

showmessage(‘Вы нажали неверную кнопку’);

if Panel2.Caption = key then

 

begin

Inc(count);

Panel2.Top := Panel1.Height;

end;

if count = x * 3 then

begin

Inc(x);

Label1.Caption := 'Level ' + IntToStr(x);

if Timer1.Interval <= 250 then Timer1.Interval := Timer1.Interval - 25

else

if Timer1.Interval <= 100 then Timer1.Interval := 100

else

Timer1.Interval := Timer1.Interval - 250;

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if MediaPlayer1.FileName <> '' then

MediaPlayer1.Play;

Form1.Focused;

Panel2.Visible := true;

Panel2.Top := 0;

Randomize;

Panel2.Caption := Chr(Random(26)+97) ;

count := 0;

uncount := 0;

x := 1;

Label1.Caption := 'Level ' + IntToStr(x);

Timer1.Enabled := true;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Randomize;

if Panel1.Height > Panel2.Top then

Panel2.Top := Panel2.Top + 20

else

begin

Randomize;

Panel2.Caption := Chr(Random(26)+97);

Panel2.Left := Random(Panel1.Width - Panel2.Width);

Panel2.Top := 0;

 

 

Inc(uncount);

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Close;

end;

 

procedure TForm1.MediaPlayer1Notify(Sender: TObject);

begin

with MediaPlayer1 do

if NotifyValue = nvSuccessful then

begin

Notify := True;

Play;

end;

end;

 

end.