Тема: Разработка программы-тренажера быстрой печати на клавиатуре

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
  • Формат файла:
    MS Word
  • Размер файла:
    527,26 Кб
Разработка программы-тренажера быстрой печати на клавиатуре
Разработка программы-тренажера быстрой печати на клавиатуре
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Содержание

Введение

Аналитический обзор литературы и существующих аналогов

Обоснование технических приёмов программирования

Тестирование, экспериментальные исследования и анализ полученных результатов

Руководство пользователя

Заключение

Список литературы

Приложения

Введение

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

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

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

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

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

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

программа тренажер печать клавиатура

Аналитический обзор литературы и существующих аналогов

Существует большое количество программ предназначенных для решения данной задачи. Самой известной из них является "СОЛО на клавиатуре.

Рисунок 1 - "Соло на клавиатуре

Эта программа имеет ряд достоинств:

программа имеет очень яркий, приятный интерфейс

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

даётся очень подробная статистика: по скорости, количеству ошибок и ритмичности набора

Но вместе с тем программа не лишена недостатков:

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

упражнения можно выполнять только по порядку

. Постановка задачи на курсовую работу:

программа должна выдавать список слов и проверять правильность их ввода,

сохранение лучших результатов прохождения,

подсчет ошибок и времени прохождения.

. Разработка алгоритма

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

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

Во-вторых, пользователь должен видеть не только то, что он набирает в данный момент времени, но и ближайшие следующие слова. На экране будут отображаться 10 слов которые следует набрать на текущем уровне сложности.

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

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

Алгоритм работы программы можно разделить на два этапа:

1)Подготовительный этап

Загрузка из файла слов для набора.

)Основная часть

Набор слов.

) Этап завершения

Запись в файл рекордов результата (при необходимости)

) Подготовительный этап

Во время этого этапа из файла соответствующего текущему уровню извлекается список слов. Из них в случайном порядке выбирается 10 и помещается на экран. Также запускается счетчик времени прохождения.

) Основная часть

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

) Этап завершения

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

. Разработка программного средства

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

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

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

Поле количества ошибок целочисленное, так как их количество на может быть дробным.

Процедуры разработанные при написании программного средства указаны в таблице 1.

Таблица 1

Работу процедуры перехода на новый уровень отображает схема 1.

ПодпрограммаПередаваемые параметры, возвращаемые значенияОписаниеnewroundr: byte - для указания создаваемого уровняСчитывает из соответствующего файла и отображает слова для текущего уровняbukvat: char - клавиша, которую следует выделитьВыделяет нужную букву на изображении клавиатурыpressKey: Char - нажатая клавишаЕсли нажата нужная клавиша, то переходит к следующей букве nextwordПереход к следующему по списку словуprocendПодсчет пройденного процентаTForm2. Button1ClickSender: TObjectОткрытие списка рекордов для просмотраTForm2. BitBtn1ClickSender: TObjectЗакрытие программыTForm2. Button2ClickSender: TObjectЗапуск основной частиTForm1. FormCreateSender: TObjectЗадание начальных значенийTForm1. FormShowSender: TObjectЗапуск первого уровняTForm1. Button1ClickSender: TObjectПаузаTForm1. Button2ClickSender: TObjectЗавершение основной частиTForm4. FormShowSender: TObjectЗагрузка и вывод данных из файла с рекордами

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

Схема 1 - процедура newround

Обоснование технических приёмов программирования

Для реализации движущейся строки будут использовать компоненты Label и Timer. Набранная часть слова будет изменять цвет на черный и стиль на зачеркнутый. Для реализации этой задачи два компонента Label1 и Label2 с разными стилями будут перемещаться вместе. Это создаст видимость одной строки.

Для создания видимости перемещения строки нужно незначительно изменять координаты соответствующих полей у компонентов строк за малые одинаковые промежутки времени. Реализацию этих функций осуществляет компонент Timer. Каждые 20 миллисекунд строка будет перемещаться влево на количество пикселей равное уровню. Во время срабатывания таймера также будет выполняться условный оператор, описание которого можно найти в разделе 5.

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

Перемещение строки организуется следующей процедурой:

procedure TForm1. Timer1Timer (Sender: TObject);i: integer;. Left: =Label1. Left-rount;. Left: =Label2. Left-rount;label2. Left<50procend;label2. Left<posit. Font. Color: =RGB ( ( (750-label2. Left) *255) div 750, ( (label2. Left-50) *255) div 750, ( (label2. Left-50) *60) div 650);: =label2. Left;;;

Тестирование, экспериментальные исследования и анализ полученных результатов


Проверяемая функция программыОжидаемый результатПолученный результатСчитывание списка слов из файлаОтображение их на экранеСоответствует ожидаемомуПросмотр лучших результатов Чтение из файла результатов данных и их отображение на экранеСоответствует ожидаемомуОстановка работы при окончании отведенного времениЗакрытие формы и показ результатовСоответствует ожидаемомуУказание клавиши для нажатияУстановка рамки на нужную клавишуСоответствует ожидаемомуПодсчет ошибокУвеличение количества ошибок при нажатии неверной клавишиСоответствует ожидаемому

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

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

Итогом тестирования является устранение всех найденных ошибок и в итоге корректная работа программы.

Руководство пользователя

Во время запуска программы появляется окно изображенное на рисунке 2.

Рисунок 2 - Окно начала программы

В окне содержатся три кнопки: "Начать, "Рекорды" и "Закрыть. При нажатии первой кнопки происходит переход к непосредственно набору слов. По нажатию второй откроется окно для просмотра лучших результатов, где содержится информация о прогрессе прохождения, количестве ошибок и времени. Окно результатов изображено на рисунке 3. Третья кнопка завершает работу программы.

Рисунок 3 - Окно рекордов

После нажатия кнопки начать на экране появляется окно изображенное на рисунке 4.

Рисунок 4 - Основное окно программы

Во время набора должна быть включена русская раскладка клавиатуры, а также выключен Caps Lock.

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

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

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

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

В завершающем этапе два варианта: пользователь вошел в тройку лучших или не вошел. В первом случае ему будет предложено ввести своё имя, а если он его не введет, то результат будет сохранен под именем "Noname. Во втором случае пользователь просто просматривает лучшие результаты. По нажатию клавиши "Закрыть" происходит возвращение к окну начала программы.

Заключение

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

Эта программа соответствует требованиям необходимым для работы с ней:

точность - обеспечивает точные результаты выполненной работы, такие как количество ошибок и время набора;

быстродействие - обеспечивает моментальное выполнение всех действий, выполняемых внутри программы;

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

Таким образом разработка программы успешно завершена и реализованы все важные базовые функции.

Список литературы

1. Программирование на языке Delphi: учебное пособие/ А.Н. Вальвачев [и др.]. - 2012. - 432 с.

. Глухова Л.А. Основы алгоритмизации и программирования: Учебное пособие, ч1. - Минск: БГУИР, 2010. - 195 с.

Приложения

Приложение А

unit Unit2;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons;= class (TForm): TButton;: TBitBtn;: TButton;Button2Click (Sender: TObject);BitBtn1Click (Sender: TObject);Button1Click (Sender: TObject);

{ Private declarations }

{ Public declarations };= record: string [10];: real;: integer;: integer;;=file of mesto;: TForm2;: mesto;: boolean = false;Unit1, Unit4;

{$R *. dfm}TForm2. Button2Click (Sender: TObject);. Hide;: =tform1. create (self);form1. showmodal=mrOK;form1. free;: =tform4. create (self);form4. showmodal=mrCancel;form4. free;. Show;;TForm2. BitBtn1Click (Sender: TObject);;TForm2. Button1Click (Sender: TObject);. Hide;: =true;: =tform4. Create (self);form4. ShowModal=mrcancel;form4. Free;: =false;. Show;;.Unit1; {автор - Булойчик Алексей}, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, ComCtrls, XPMan, jpeg, Buttons;= class (TForm): TListBox;: TListBox;: TLabel;: TLabel;: TTimer;: TTimer;: TImage;: TEdit;: TLabel;: TLabel;: TEdit;: TButton;: TButton;: TPanel;: TImage;: TImage;: TImage;: TImage;: TImage;: TLabel;: TEdit;Timer1Timer (Sender: TObject);Timer2Timer (Sender: TObject);Button1Click (Sender: TObject);Button1KeyPress (Sender: TObject; var Key: Char);Button2KeyPress (Sender: TObject; var Key: Char);ListBox2KeyPress (Sender: TObject; var Key: Char);Button2Click (Sender: TObject);FormCreate (Sender: TObject);FormShow (Sender: TObject);FormClose (Sender: TObject; var Action: TCloseAction);

{ Private declarations }

{ Public declarations };: TForm1;Unit3, Unit2, Unit4;h=16;time,pause,rount,posit,mistake,obshmist,obshtime,slovo: integer;,nul2: string [2];

{$R *. dfm}bukva (t: char);x,y: word;t of

'й': begin x: =61; y: =39 end;

'ц': begin x: =101; y: =39 end;

'у': begin x: =142; y: =39 end;

'к': begin x: =183; y: =39 end;

'е': begin x: =225; y: =39 end;

'н': begin x: =266; y: =39 end;

'г': begin x: =307; y: =39 end;

'ш': begin x: =348; y: =39 end;

'щ': begin x: =389; y: =39 end;

'з': begin x: =430; y: =39 end;

'х': begin x: =471; y: =39 end;

'ъ': begin x: =512; y: =39 end;

'ф': begin x: =82; y: =80 end;

'ы': begin x: =124; y: =80 end;

'в': begin x: =164; y: =80 end;

'а': begin x: =205; y: =80 end;

'п': begin x: =246; y: =80 end;

'р': begin x: =287; y: =80 end;

'о': begin x: =328; y: =80 end;

'л': begin x: =369; y: =80 end;

'д': begin x: =410; y: =80 end;

'ж': begin x: =451; y: =80 end;

'э': begin x: =492; y: =80 end;

'я': begin x: =101; y: =120 end;

'ч': begin x: =142; y: =120 end;

'с': begin x: =183; y: =120 end;

'м': begin x: =225; y: =120 end;

'и': begin x: =266; y: =120 end;

'т': begin x: =306; y: =120 end;

'ь': begin x: =348; y: =120 end;

'б': begin x: =389; y: =120 end;

{ Private declarations }

{ Public declarations };: TForm3;Unit1;pause;Form1 do. Enabled: =not Timer1. Enabled;. Enabled: =not Timer2. Enabled;. Enabled: =not Button1. Enabled;. Enabled: =not Button2. Enabled;. Enabled: =not ListBox2. Enabled;;;

{$R *. dfm}TForm3. FormActivate (Sender: TObject);;TForm3. FormClose (Sender: TObject; var Action: TCloseAction);;.Unit4;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Buttons;= class (TForm): TLabel;: TLabel;: TLabel;N: TLabel;N: TLabel;N: TLabel;P: TLabel;P: TLabel;P: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;N: TLabel;P: TLabel;M: TLabel;T: TLabel;M: TLabel;M: TLabel;M: TLabel;T: TLabel;T: TLabel;T: TLabel;: TEdit;: TBitBtn;FormShow (Sender: TObject);EditKeyPress (Sender: TObject; var Key: Char);FormClose (Sender: TObject; var Action: TCloseAction);BitBtn1Click (Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm4;Unit2;

{$R *. dfm}f: filemesto;: array [1.3] of mesto;,j,k: byte;: string [5];TForm4. FormShow (Sender: TObject);w: boolean;(f,'files/records');(f);i: =1 to 3 do(f,a [i]);(f);pokazform4 doN. Caption: =a [1]. name;M. Caption: =inttostr (a [1]. oshibki);T. Caption: =inttostr (a [1]. time) +'с';(a [1]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Caption: =a [2]. name;M. Caption: =inttostr (a [2]. oshibki);T. Caption: =inttostr (a [2]. time) +'с';(a [2]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Caption: =a [3]. name;M. Caption: =inttostr (a [3]. oshibki);T. Caption: =inttostr (a [3]. time) +'с';(a [3]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';: =4;(a [3]. procent<m. procent): =false;(k);round (a [k-1]. procent*1000) >round (m. procent*1000)w: =trueround (a [k-1]. procent*1000) =round (m. procent*1000)a [k-1]. oshibki<m. oshibkiw: =true;a [k-1]. oshibki=m. oshibkia [k-1]. time<=m. timew: =true;;(k=1) or w;j: =2 downto k do[j+1]: =a [j];[k]: =m;k<>1N. Caption: =a [1]. name;M. Caption: =inttostr (a [1]. oshibki);T. Caption: =inttostr (a [1]. time) +'с';(a [1]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Visible: =false;M. Caption: =inttostr (m. oshibki);T. Caption: =inttostr (m. time) +'с';(m. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';. Visible: =true;. Top: =48+64* (k-1);;k<>2N. Caption: =a [2]. name;M. Caption: =inttostr (a [2]. oshibki);T. Caption: =inttostr (a [2]. time) +'с';(a [2]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Visible: =false;M. Caption: =inttostr (m. oshibki);T. Caption: =inttostr (m. time) +'с';(m. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';. Visible: =true;. Top: =48+64* (k-1);;k<>3N. Caption: =a [3]. name;M. Caption: =inttostr (a [3]. oshibki);T. Caption: =inttostr (a [3]. time) +'с';(a [3]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Visible: =false;M. Caption: =inttostr (m. oshibki);T. Caption: =inttostr (m. time) +'с';(m. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';. Visible: =true;. Top: =48+64* (k-1);;form4 doN. Caption: =a [1]. name;M. Caption: =inttostr (a [1]. oshibki);T. Caption: =inttostr (a [1]. time) +'с';(a [1]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Caption: =a [2]. name;M. Caption: =inttostr (a [2]. oshibki);T. Caption: =inttostr (a [2]. time) +'с';(a [2]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Caption: =a [3]. name;M. Caption: =inttostr (a [3]. oshibki);T. Caption: =inttostr (a [3]. time) +'с';(a [3]. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';N. Visible: =true;P. Visible: =true;M. Visible: =true;T. Visible: =true;(m. procent: 0: 2,s);s [3] <>'. 'delete (s,5,1);s [4] ='. 's: ='100';P. Caption: =s+'%';M. Caption: =inttostr (m. oshibki);T. Caption: =inttostr (m. time) +'с';;;;TForm4. EditKeyPress (Sender: TObject; var Key: Char);key=#13Edit. Text=''Edit. text: ='NoName';k of

:N. Visible: =true;N. Caption: =Edit. Text;;

:N. Visible: =true;N. Caption: =Edit. Text;;

:N. Visible: =true;N. Caption: =Edit. Text;;;[k]. name: =edit. Text;. Visible: =false;(f);j: =1 to 3 do(f,a [j]);(f);;;TForm4. FormClose (Sender: TObject; var Action: TCloseAction);edit. Visible=trueEdit. Text=''Edit. text: ='NoName';k of

:N. Visible: =true;N. Caption: =Edit. Text;;

:N. Visible: =true;N. Caption: =Edit. Text;;

:N. Visible: =true;N. Caption: =Edit. Text;;;[k]. name: =edit. Text;. Visible: =false;(f);j: =1 to 3 do(f,a [j]);(f);;;TForm4. BitBtn1Click (Sender: TObject);

begin;.

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

 

Не нашел материала для курсовой или диплома?
Пишем качественные работы
Без плагиата!