2.2.1. Тестирование на время

После выбора пользователем уровня сложности из пункта меню «на время» запускается таймер, для каждого уровня сложности установлен определенный интервал времени. Первым делом счетчиком К – количество сгенерированных слов и Т - количество правильных слов присваиваются начальные значения. После чего, как и в процедуре FormCreate генерируется случайное число и выбирается слово с помощью оператора выбора. Далее пользователь вводит текст слова и нажимает клавишу «enter» включается в работу событие «Edit1 KeyPress», которое повторяется до тех пор, пока у свойства interval таймера не закончится время. После окончания времени на экран выводятся результаты тестирования. При наборе правильных слов более 20 программа предлагает Вам перейти на следующий уровень сложности. Для того чтобы пользователь знал, сколько осталось времени до окончания теста помещаем на форму компонент Tpanel 2, который служит контейнером для других компонентов на него помещаем компонент Timer 2 и компонент Label 4. С помощью этих компонентов организован отсчет обратного времени до окончания теста. Также при выборе любого теста из выпадающего меню «на время» меняется фоновая картинка, загружается картинка часов в окно для картинок.



Таймер включен

Генерируется случайное слово

Ожидание ввода текста

Процедура нажатия клавиши “enter”

Таймер выключен

Овал: конец


Рис. 4 Блок-схема процедуры TimerTimer

2.3 Спецификация программы

Исполняемый файл программы «Научись печатать» имеет название PEZATAITE.EXE. Его работоспособность не зависит от расположения на диске. Необходимо, чтобы файлы, прилагающиеся к программе, находились в указанных каталогах. Наименования файлов входящих в проект и краткая информация об их содержании отображены в таблице 2.


Таблица 2

Наименование Обозначение Примечание
pezataite.dof Файл параметров проекта Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы
pezataite.dpr Файл проекта Связывает все файлы, из которых состоит приложение
pezataite.cfg Файл, содержащий настройки проекта Содержит информацию о том, какие окна открыты и в каких позициях они расположены.
pezataite.res Файл ресурсов Содержит пиктограммы, графические изображения
Unit1.pas Файл программного модуля для формы Form1 Определяет функциональность формы Form1
Unit1.dfm Файл формы Form1 Содержит список свойств всех компонентов, включённых в форму Form1
Unit1.dcu Объектный файл для Unit1.pas Откомпилированная версия Unit1.pas

fonovi.bmp

budilnik.bmp

Файлы рисунков программы Загружаются во время работы программы
2.4 Текст программы

Текст программы для формы – Form1[2]:

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Menus, ExtCtrls;

type

TForm1 = class(TForm)

Label1: TLabel; // для вывода случайно сгенерированных слов

 Edit1: TEdit; // для ввода текста с клавиатуры

 Button1: TButton; // завершение работы с программой

 Label2: TLabel; // вывод количества правильно набранных слов

 MainMenu1: TMainMenu; // меню работы программы на время

 N1: TMenuItem; // выпадающий список

 Timer1: TTimer; // временной таймер

 N2: TMenuItem; // тест на время для новичков

 N3: TMenuItem; // тест на время – средняя скорость

 N4: TMenuItem; // тест на время для профессионалов

 Button2: TButton; // сброс значений

 Label3: TLabel; // комментарий

 Panel1: TPanel; // контейнер

 Image1: TImage; // окно для загрузки картинок

 Panel2: TPanel; // контейнер

 Label4: TLabel; // вывод отсчета обратного времени

 Timer2: TTimer;

 // при появлении формы выводится случайно сгенерированное слово

 procedure FormCreate(Sender: TObject);

 procedure Button1Click(Sender: TObect); // обр. кнопки "завершить"

 procedure Timer1Timer(Sender: TObject); // обр. таймер

 // обр. Нажатия клавиши "enter"

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

 procedure N2Click(Sender: TObject); //

 procedure N3Click(Sender: TObject); // три положения скорости таймера

 procedure N4Click(Sender: TObject); //

 procedure Button2Click(Sender: TObject); // обр. Кнопки сброс

 procedure Timer2Timer(Sender: TObject); // отсчет обратного времени

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 // объявление глобальных переменных и констант

var

 Form1: TForm1;

 // переменные для подсчета кол-ва выведенных слов, правильных ответов

 // и для оператора выбора генерации случайных слов

 vremi,o,k,t, x:integer;

 m:string; // присваивается значение текста введенного пользователем

 // именованные константы для генератора случайных слов

 const

 prob='диван';

 f='кровать';

 n='картина';

 h='стенка';

 u='солнышко';

 y='компьютер';

 l='принтер';

 d='ковер';

 r='пожар';

 qq='игрушка';

 ww='дверь;

 ee='плита';

 rr='книга';

 tt='уроки';

 yy='кактус';

 uu='дискотека';

 ii='кухня';

 oo='сосна';

 pp='зеркало';

 aa='куртка';

 ss='173042';

 dd='935862';

 ff='0.4789';

 gg='1,9,53';

 hh='с:\юзер';

 jj='(2359)' ;

 kk='2*7=14';

 ll='сколько?';

 zz='12+965';

 xx='500-25';

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject); // процедура создания формы

 begin

 image1.Picture.LoadFromFile ('fonovi.wmf') ; // загружаем картинку

 randomize; //вывоз проц. ген. Чисел

 k:=1; t:=0; // счетчик слов – сгенерированных и правильно набранных

 x:=random (30)+1; //генерируем случ. числа

 case x of // выбор случайного слова из предложенных

 1: label1.Caption := prob;

 2:label1.Caption:= h ;

 3:label1.Caption:= u;

 4: label1.Caption:= f;

 5:label1.Caption:= y;

 6:label1.Caption:= l;

 7:label1.Caption:= d;

 8:label1.Caption:= n;

 9:label1.Caption:= r;

 10:label1.Caption:=qq ;

 11:label1.Caption:= ww;

 12:label1.Caption:= ee;

 13:label1.Caption:=rr ;

 14:label1.Caption:=tt ;

 15:label1.Caption:=yy ;

 16:label1.Caption:=uu ;

 17:label1.Caption:=ii ;

 18:label1.Caption:= oo;

 19:label1.Caption:=pp;

 20:label1.Caption:=aa;

 21:label1.Caption:=ss;

 22:label1.Caption:=dd;

 23:label1.Caption:=ff;

 24:label1.Caption:=gg;

 25:label1.Caption:=hh;

 26:label1.Caption:=jj;

 27:label1.Caption:=kk;

 28:label1.Caption:=ll;

 29:label1.Caption:=zz;

 30:label1.Caption:=xx;

 end;

 end;

procedure TForm1.Button1Click(Sender: TObject);

 begin

 form1.Close; // закрытие приложения

 end;

procedure TForm1.Timer1Timer(Sender: TObject); // обр. таймера

 begin

 k:=1; // счетчику случ. слов присвоили 1

 o:=k ; // заменяем переменную счетчика к на 0

 randomize; // вызов проц. ген. чисел

 x:=random (30)+1; // генерируем случ. числа

 case x of // выбор случайного слова из предложенных

 1: label1.Caption := prob;

 2:label1.Caption:= h ;

 3:label1.Caption:= u;

 4: label1.Caption:= f;

 5:label1.Caption:= y;

 6:label1.Caption:= l;

 7:label1.Caption:= d;

 8:label1.Caption:= n;

 9:label1.Caption:= r;

 10:label1.Caption:=qq ;

 11:label1.Caption:= ww;

 12:label1.Caption:= ee;

 13:label1.Caption:=rr ;

 14:label1.Caption:=tt ;

 15:label1.Caption:=yy ;

 16:label1.Caption:=uu ;

 17:label1.Caption:=ii ;

 18:label1.Caption:= oo;

 19:label1.Caption:=pp;

 20:label1.Caption:=aa;

 21:label1.Caption:=ss;

 22:label1.Caption:=dd;

 23:label1.Caption:=ff;

 24:label1.Caption:=gg;

 25:label1.Caption:=hh;

 26:label1.Caption:=jj;

 27:label1.Caption:=kk;

 28:label1.Caption:=ll;

 29:label1.Caption:=zz;

 30:label1.Caption:=xx;

 end;

 m:=edit1.Text; // присваиваем введенное пользователем текстовое значение

 // сравниваем текст с константой

 // при равенстве счетчику правильных слов

 // присваиваем +1

 if m=prob then t:=t+1;

 if m=f then t:=t+1 ;

 if m=n then t:=t+1 ;

 if m=h then t:=t+1 ;

 if m= u then t:=t+1 ;

 if m= y then t:=t+1 ;

 if m= l then t:=t+1 ;

 if m= d then t:=t+1 ;

 if m=r then t:=t+1;

 if m= qq then t:=t+1;

 if m= ww then t:=t+1;

 if m=ee then t:=t+1;

 if m=rr then t:=t+1;

 if m=tt then t:=t+1;

 if m=yy then t:=t+1;

 if m= uu then t:=t+1;

 if m=ii then t:=t+1;

 if m= oo then t:=t+1;

 if m= pp then t:=t+1;

 if m=aa then t:=t+1;

 if m=ss then t:=t+1;

 if m=dd then t:=t+1;

 if m=ff then t:=t+1;

 if m=gg then t:=t+1;

 if m=hh then t:=t+1;

 if m=jj then t:=t+1;

 if m=kk then t:=t+1;

 if m=ll then t:=t+1;

 if m=zz then t:=t+1;

 if m=xx then t:=t+1;

 o:=o+1; // счетчику случ. слов присвоили 1

 if o=2 then // если сумма счетчика достигла 2

 begin

 timer1.enabled:=false; // останавливаем таймер

 edit1.Visible:=false; // делаем недоступным текстовое окно

 image1.Picture.LoadFromFile ('fonovi.wmf') ; // загружаем картинку

 // если счетчик правильных слов превысил 20 выводим сообщение пользователю

 if t>20 then label2.Caption:='блестяще количество набранных слов ='+ inttostr (t)+'переходите';

 // если нет, то выводим другое сообщение

 label2.Caption:='количество набранных слов = ' +inttostr (t) + ' из 20 ';

 end;

 end;

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

 begin

 if Key = chr(VK_RETURN) then //если нажата клавиша "enter "

 begin

 m:=edit1.Text; // присваиваем введенное слово пользователем текстовое значение

 // сравниваем текст с константой

 // при равенстве счетчику правильных слов

 // присваиваем +1

 if m=prob then t:=t+1;

 if m=f then t:=t+1 ;

 if m=n then t:=t+1 ;

 if m=h then t:=t+1 ;

 if m= u then t:=t+1 ;

 if m= y then t:=t+1 ;

 if m= l then t:=t+1 ;

 if m= d then t:=t+1 ;

 if m= r then t:=t+1;

 if m= qq then t:=t+1;

 if m= ww then t:=t+1;

 if m=ee then t:=t+1;

 if m=rr then t:=t+1;

 if m=tt then t:=t+1;

 if m=yy then t:=t+1;

 if m= uu then t:=t+1;

 if m=ii then t:=t+1;

 if m= oo then t:=t+1;

 if m= pp then t:=t+1;

 if m= aa then t:=t+1;

 if m=ss then t:=t+1;

 if m=dd then t:=t+1;

 if m=ff then t:=t+1;

 if m=gg then t:=t+1;

 if m=hh then t:=t+1;

 if m=jj then t:=t+1;

 if m=kk then t:=t+1;

 if m=ll then t:=t+1;

 if m=zz then t:=t+1;

 if m=xx then t:=t+1;

 k:=k+1; // счетчику случ. слов присвоили 1

 edit1.Text:=''; // очистим текстовое окно

 edit1.SetFocus; // сделаем активным текстовое окно

 x:=random (30)+1; // генерируем случ. числа

 case x of // выбор случайного слова из предложенных

 1: label1.Caption := prob;

 2:label1.Caption:= h ;

 3:label1.Caption:= u;

 4: label1.Caption:= f;

 5:label1.Caption:= y;

 6:label1.Caption:= l;

 7:label1.Caption:= d;

 8:label1.Caption:= n;

 9:label1.Caption:= r;

 10:label1.Caption:=qq ;

 11:label1.Caption:= ww;

 12:label1.Caption:= ee;

 13:label1.Caption:=rr ;

 14:label1.Caption:=tt ;

 15:label1.Caption:=yy ;

 16:label1.Caption:=uu ;

 17:label1.Caption:=ii ;

 18:label1.Caption:= oo;

 19:label1.Caption:=pp;

 20:label1.Caption:=aa;

 21:label1.Caption:=ss;

 22:label1.Caption:=dd;

 23:label1.Caption:=ff;

 24:label1.Caption:=gg;

 25:label1.Caption:=hh;

 26:label1.Caption:=jj;

 27:label1.Caption:=kk;

 28:label1.Caption:=ll;

 29:label1.Caption:=zz;

 30:label1.Caption:=xx;

 end;

 if k=30 then //если сумма счетчика случайных слов достигла 30

 begin

 timer1.enabled :=false; // останавливаем таймер

 edit1.Visible:=false; // скрываем текстовое окно

 // выводим сообщение пользователю

 label2.Caption:=' количество набранных слов = '+ inttostr (t);

 end;

 begin

 // если счетчик правильных слов превысил 20 выводим сообщение пользователю

 if t>20 then label2.Caption:='блестяще количество набранных слов = '+ inttostr (t)+' переходите';

 end;

 end;

 end;

procedure TForm1.N2Click(Sender: TObject);

 begin

 image1.Picture.LoadFromFile('budilnik.wmf');

 timer1.Interval:=80000 ;// задаем интервал

 edit1.Visible:=true; // показать текстовое окно

 timer1.enabled :=true; // включаем таймер

 edit1.SetFocus; // сделать активным текстовое окно

 label2.Caption:=''; // очистить

 t:=0; // обнуляем счетчик правильных слов

 vremi:=80 ; // обратный отсчет

 timer2.enabled :=true; // включаем таймер

 end;

procedure TForm1.N3Click(Sender: TObject);

 begin

 image1.Picture.LoadFromFile('budilnik.wmf');

 timer1.enabled :=true; // включаем таймер

 timer1.Interval:=50000 ; // задаем интервал

 edit1.Visible:=true; // показать текстовое окно

 edit1.SetFocus; // сделать активным текстовое окно

 label2.Caption:=''; // очистить

 t:=0; // обнуляем счетчик правильных слов

 vremi:=50 ; // обратный отсчет

 timer2.enabled :=true; // включаем таймер

 end;

procedure TForm1.N4Click(Sender: TObject);

 begin

 image1.Picture.LoadFromFile('budilnik.wmf');

 timer1.enabled :=true; // включаем таймер

 timer1.Interval:=30000 ; // задаем интервал

 edit1.Visible:=true; // показать текстовое окно

 edit1.SetFocus; // сделать активным текстовое окно

 label2.Caption:=''; //очистить

 t:=0; // обнуляем счетчик правильных слов

 vremi:=30 ; // обратный отсчет

 timer2.enabled :=true; // включаем таймер

 end;

procedure TForm1.Button2Click(Sender: TObject);

 begin

 image1.Picture.LoadFromFile ('fonovi.wmf') ;

 timer1.enabled:=false; // останавливаем таймер

 timer2.enabled:=false; // останавливаем таймер

 edit1.Visible:=true; // показать текстовое окно

 edit1.SetFocus; // сделать активным текстовое окно

 label2.Caption:=''; // очистить

 edit1.Text:='' ; // очистить

 t:=0; // обнуляем счетчик правильных слов

 k:=1; // счетчику случ. слов присвоили 1

 label4.Caption:=''; // очистить

 end;

procedure TForm1.Timer2Timer(Sender: TObject); // таймер отсчета обратного

 // времени

begin

vremi:=vremi-1; // каждую секунду отнимаем от заданного времени 1

if vremi=0 then //если время закончилось

 begin

 timer2.Enabled:=false; // выключаем таймер

 label4.Caption:='off'; // выводим окно

 end

 else

 label4.Caption:=inttostr(vremi); // обратный отсчет

end;

 end.


2.5 Тестирование программы

Для тестирования программы были пройдены все временные этапы .

Таблица 3

Тест на время Количество правильно набранных слов
 новичек 20
опытный 15
Высший класс 8

Вид приложения в случайный момент работы приведен на рисунке 5

Рис. 5 Окно приложения в случайный момент игры

2.6 Условия выполнения и выполнение программы

Данное приложение, разработанное в Delphi, способно работать на персональных компьютерах с минимальными требованиями Pentium 100, оперативной памятью 32 Мб, операционной средой Windows.

 Запустить приложение можно также как и любое другое. Окно приложения загрузится и появится в центре экрана. Для работы с программой «Научись печатать» необходимо ввести в текстовое окно, предложенное слово и нажать на клавишу «enter», или если вы хорошо печатаете выбрать из выпадающего меню «на время» в левом верхнем углу экрана один из трех предложенных вариантов подходящий вашему уровню скорости набора текста. Для выхода из программы необходимо нажать кнопку «завершить» или щелкнуть левой кнопкой мыши по крестику в правом верхнем углу экрана. Для обнуления результатов нажмите клавишу «сброс».

В разделе описываются (руководство ГОСТ 19.505-79[3])
Заключение

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

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

Для того чтобы пользователь знал, сколько времени у него осталось, на форму выведен обратный отсчет времени таймера. Чтобы с программой было интереснее работать, в форму загружаются две картинки, одна при создании формы другая при выборе выпадающего меню «на время».

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

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

Все эти модификации вызвали бы больший интерес к игре.

Литература

1.         Емелина Е.И. Основы программирования на языке Паскаль. М., 1997.

2.         Мануйлов В. Г. Разработка программного обеспечения на Паскале. М., 1998г.

3.         Фаронов В.В.Турбо Паскаль 7.0. М., 1998

4.         Культин Н. Програмирование на Object Pascal. Киев, 1998.

5.         Федоров А. Г. Delphi 3.0 для всех. М., 1998.

6.         Дарахвелидзе П., Марков Е. Программирование в Delphi 4.СПб.: БХВ. СПб., 1999

7.         Роб Баас, Майк Фервай, Хайдемария Гюнтер. Delphi 4. Полное руководство. - К.: Издательская группа BHV, 1999

8.         Изучаем Delphi. – СПб.: Питер, 2000. – 352 с.: ил.

9.         Александровский А. Д. Delphi 5.0. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с.: ил. (Серия «Для программистов»).

10.      Delphi: быстрый старт. – СПб.: БХВ – Петербург, 2002. – 288 с.: ил.

11.      Turbo Pascal / С.А. Немнюгин. – СПб: Издательство «Питер», 2000. – 496 с.: ил.

12.      Виктор Пестриков Артур Маслобоев DELPHI на примерах Санкт-Петербург 2005г.

13.      Turbo Pascal в задачах и программах. – СПб.: БХВ – Петербург,, 2002. – 560 с.: ил.

14.      Никита Культин Основы программирования на DELPHI 7.


[1] Для программирования приложения «научись печатать» использовалась среда Delphi 7.

[2] Для соблюдения вида текста программы с правильными отступами как это принято на языке Pascal используются нестандартные форматирование и размеры шрифта.


Информация о работе «Составить программу обучения работе с клавиатурой»
Раздел: Информатика, программирование
Количество знаков с пробелами: 30499
Количество таблиц: 18
Количество изображений: 4

Похожие работы

Скачать
235892
25
6

... работе в графическом режиме предназ­начается для обучения студентов младших курсов Санкт-Петербургской государственной Академии аэрокосмического приборостроения навыкам программирования, а именно работе в графическом режиме языка Turbo-Pascal . Для работы с настоящей программой необходимо знание стандарта языка, интегрированной среды и элементарным навыкам работы с персональным компьютером . ...

Скачать
74546
0
0

... , которое связывает компетенцию с развитием, продвижением. Обучение деятельности в целом или сложной деятельности - намного более трудная задача, чем организация обучения конкретным компетенциям. 2. Методы обучения и повышения квалификации персонала Персонал – наиболее сложный объект управления в организации, поскольку в отличие от вещественных факторов производства является “одушевленным”, ...

Скачать
146463
19
10

... с положительностью сальдо поступлений и расходов и малым сроком окупаемости. 6. Обеспечение безопасности жизнедеятельности в системе ДО В данном дипломном проекте разработана автоматизированная информационная система дистанционного обучения по дисциплине “Финансы и кредит”. Ее использование тесно связано с применением ПЭВМ, поэтому организация рабочего места пользователя системы должна ...

Скачать
193894
73
12

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

0 комментариев


Наверх