Разработка рабочего проекта




 

Разработка программы

 

Для разработки приложения «программы обучающей работе с клавиатурой» используются средства визуального программирования Delphi. Проект программы содержит одно окно: Form1 – рисунок 1.

 


8 4 7 1 3 2 6 10 9

Рис.3 Окно программы – Form1

 

Компонент Form1: TForm1 – окно программы

Свойства:

BorderStyle = bsSingle

Caption = ‘Научись печатать’

Position = poScreenCenter

Menu=MainMenu1

События:

OnClose = FormClose – закрытие программы

OnCreate = FormCreate – создание формы

1 - компонент Timer: TTimer

Свойства:

Enabled = False

Interval = задается кнопками меню «на время»

События:

OnTimer = TimerTimer – вывод случайного слова, после окончания времени заданного интервалом таймер выключается.

2 - компонент Button1: TButton

Свойства:

Caption = 'завершить'

События:

OnClick = Button1Click – выход из приложения

3 - компонент Button2: TButton

Свойства:

Caption = 'сброс'

События:

OnClick = Button2: Click –обнуление счетчиков, сброс результатов тестирования

4 - компонент Label1: TLabel

Свойства:

AutoSize = True

Caption = ' '

Font – шрифт 24 цвет- темносиний

Событий нет.

5 - компонент Label2: TLabel

Свойства:

Caption=’ ’

Font- шрифт 14 цвет- темно синий

Событий: нет

6 - компонент Label3: TLabel

Свойства:

Caption=’<ввод текста>’

Font- шрифт 14 цвет- темно синий

Событий: нет

7 - компонент Edit1: TEdit

Свойства:

Font- шрифт 14 цвет- черный

События:

OnKeyPress=Edit1KeyPress-обработка события нажатия клавиши «enter»

8 - компонент MainMenu1: TMainMenu-раскрывающийся список тестирования на время.

N1: TMenuItem - раскрывающийся список: «на время»

N2: TMenuItem – кнопка запускающая тест на время

События:

TForm1.N2Click - обработка события нажатия клавиши «новичок»

N3: TMenuItem – кнопка запускающая тест на время

События:

TForm1.N3Click - обработка события нажатия клавиши «опытный»

N4: T MenuItem – кнопка запускающая тест на время

События:

TForm1.N4Click - обработка события нажатия клавиши «высший класс»

9- panel1-T panel – содержит компоненты:

panel1-T panel-контейнер

Свойства:

Тор-8

Left-384

Width-337

События- нет

image1- для вывода картинок

Cвойства:

Top-8

Left-8

Width-321

Height-225

События- нет

10-Panel2-Tpanel– содержит компоненты;

panel1-T panel-контейнер

Свойства:

Тор-312

Left-624

Width-145

Height-89

События- нет

timer2-T Timer-отсчет времени

Cвойства:

Enabled- false

Interval- 1000

События:

On timer

Label4-T label –вывод времени на экран

Cвойства:

Тор-16

Left-64

Width-9

Height-37

Font- цвет-красный, размер-24,caption-“ ”

Описание программы

 

Общие сведения.

Программа предназначена для обучения пользователя работе с клавиатурой. Программа называется «Научись печатать.

Для нормального функционирования требуется программное обеспечение Pentium 100 и выше; объём оперативной памяти 8 Мб; жёсткий диск объёмом не менее 500 Мб. Для разработки приложения «программы обучающей работе с клавиатурой» используются средства визуального программирования Delphi.

Функциональное назначение.

Цель разработанной программы научить пользователя быстро печатать. Для этой цели в программе реализованы три ступени тестирования на время.

Описание логической структуры.

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

При создании окна приложения обрабатывается событие – FormCreate. Внутри этой процедуры мы выполняем следующие действия. Во-первых, запускаем генератор случайных чисел, он нам понадобится для того, чтобы при каждом новом запуске проекта у нас не повторялись каждый раз одни и те же слова, а компьютер каждый раз генерировал новые числа для выбора слов. Для этой цели используется процедура Randomize. Во-вторых, в проекте необходимо иметь две переменные-счетчики. Одна переменная-счетчик К будет подсчитывать общее количество выводимых программой слов. Вторая переменная-счетчик Т будет подсчитывать количество правильных слов, данных пользователем, которому соответствует количество набранных балов. В процедуре мы должны проинициализировать эти переменные, т.е. присвоить им начальные значения. Причем эти начальные значения будут разными. Для переменной К начальное значение будет равно 1, т. к. сразу после создания формы мы уже выведем первое слово. Для переменной Т начальное значение будет равно 0, т. к. пользователь не ввел еще ни одного правильного слова.

Следующий оператор процедуры выбирает случайные значения и присваивает их вспомогательной переменной X. Эти действия, производятся с помощью функции Random. Дольше вступает в дело оператор выбора по случайному числу, которое присваивается переменной X, он выбирает слово, которое будет выводиться на экран. Для того чтобы сделать программу более коммуникабельной вставим в форму компонент Tpanel, поверх него растянем другой компонент Imagel, для вывода графики. С помощью процедуры image1.Picture.LoadFromFile ('fonovi.wmf') картинку, предварительно скопировав рисунок формата ‘wmf’ в текущий каталог проекта.

 
 

 

 


Создание формы

 

 

 
 


Счетчики К:=1 Т:=0

 

 
 

 


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

Загрузка картинки

 

 

 
 

 

 


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


При закрытии окна программы обрабатывается событие FormClose, которая закрывает форму программы.

Компоненты Label1 и Label2 служат для вывода информации пользователю.

Компонент Label3 содержит комментарий к текстовому окну Edit1.

Компонент Edit1 служит для ввода текстовой информации, и содержит

событие «Edit1 KeyPress». Внутри этой процедуры мы выполняем следующие действия. После ввода текста и нажатия клавиши «enter» набранный пользователем текст сравнивается со словами, которые выдает на форму генератор случайных слов. Если одно из слов совпадает с набранным в текстовом окне пользователем, то счетчику правильных ответов присваивается 1, если – нет, счетчик остается без изменения. Дальше производится проверка условия счетчика случайных слов. Если слов на форме было выведено К=30, то выдаются результаты тестирования. Причем, если пользователь набрал правильных слов более 20, ему будет предложено перейти на следующий уровень сложности. Если на форму выведено случайных слов менее 30, то слово генерируется снова. После чего программа ожидает ввода текста и нажатия клавиши «enter», т. е. повторение процедуры.

 


 

       
 
 
   

 

 


Нажата клавиша «enter»

Получаем текстовую переменную «M»

Сравниваем M и Z

 

нет

 
 


Да

Генерируем случайное слово   Счетчику правильных ответов – T:=t+1

 


нет

 
 

 


да

Вывод результатов тестирования T

 
 

 


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

Когда пользователь нажимает на кнопку «сброс», то обрабатывается событие нажатия этой кнопки в процедуре Button2Click. В этой процедуре задаются начальные значения всех переменных программы, останавливаются таймеры, очищаются окна ввода и вывода. Так как в программе две картинки которые загружаются в одно окно, то при нажатии кнопки «сброс» снова будет загружаться картинка с файла ‘fonovi’ как и при появлении формы.

 

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

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

 


       
 
 
   

 

 


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

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

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

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

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

 
 

 


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

 

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

 

Исполняемый файл программы «Научись печатать» имеет название 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 Файлы рисунков программы Загружаются во время работы программы

 

Текст программы

 

Текст программы для формы – 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.

 


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

 

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

 

Таблица 3

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

 

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

 

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: