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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 03.04.2015
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • Аналитический обзор литературы и существующих аналогов
  • Обоснование технических приёмов программирования
  • Тестирование, экспериментальные исследования и анализ полученных результатов
  • Руководство пользователя
  • Заключение
  • Список литературы
  • Приложения

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Набор слов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таблица 1

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

Подпрограмма

Передаваемые параметры, возвращаемые значения

Описание

newround

r: byte - для указания создаваемого уровня

Считывает из соответствующего файла и отображает слова для текущего уровня

bukva

t: char - клавиша, которую следует выделить

Выделяет нужную букву на изображении клавиатуры

press

Key: Char - нажатая клавиша

Если нажата нужная клавиша, то переходит к следующей букве

nextword

Переход к следующему по списку слову

procend

Подсчет пройденного процента

TForm2. Button1Click

Sender: TObject

Открытие списка рекордов для просмотра

TForm2. BitBtn1Click

Sender: TObject

Закрытие программы

TForm2. Button2Click

Sender: TObject

Запуск основной части

TForm1. FormCreate

Sender: TObject

Задание начальных значений

TForm1. FormShow

Sender: TObject

Запуск первого уровня

TForm1. Button1Click

Sender: TObject

Пауза

TForm1. Button2Click

Sender: TObject

Завершение основной части

TForm4. FormShow

Sender: TObject

Загрузка и вывод данных из файла с рекордами

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

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

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

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

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

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

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

procedure TForm1. Timer1Timer (Sender: TObject);

var i: integer;

begin

Label1. Left: =Label1. Left-rount;

Label2. Left: =Label2. Left-rount;

if label2. Left<50

then procend;

if label2. Left<posit

then

begin

Label2. Font. Color: =RGB ( ( (750-label2. Left) *255) div 750, ( (label2. Left-50) *255) div 750, ( (label2. Left-50) *60) div 650);

posit: =label2. Left;

end;

end;

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

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

Проверяемая функция

программы

Ожидаемый результат

Полученный результат

Считывание списка слов из файла

Отображение их на экране

Соответствует ожидаемому

Просмотр лучших результатов

Чтение из файла результатов данных и их отображение на экране

Соответствует ожидаемому

Остановка работы при окончании отведенного времени

Закрытие формы и показ результатов

Соответствует ожидаемому

Указание клавиши для нажатия

Установка рамки на нужную клавишу

Соответствует ожидаемому

Подсчет ошибок

Увеличение количества ошибок при нажатии неверной клавиши

Соответствует ожидаемому

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

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

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

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

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

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

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

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

Приложения

Приложение А

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm2 = class (TForm)

Button2: TButton;

BitBtn1: TBitBtn;

Button1: TButton;

procedure Button2Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

mesto = record

name: string [10];

procent: real;

oshibki: integer;

time: integer;

end;

filemesto=file of mesto;

var

Form2: TForm2;

m: mesto;

pokaz: boolean = false;

implementation

uses Unit1, Unit4;

{$R *. dfm}

procedure TForm2. Button2Click (Sender: TObject);

begin

Form2. Hide;

form1: =tform1. create (self);

try

if form1. showmodal=mrOK

then;

finally form1. free

end;

form4: =tform4. create (self);

try

if form4. showmodal=mrCancel

then;

finally form4. free

end;

form2. Show;

end;

procedure TForm2. BitBtn1Click (Sender: TObject);

begin

close

end;

procedure TForm2. Button1Click (Sender: TObject);

begin

form2. Hide;

pokaz: =true;

form4: =tform4. Create (self);

try

if form4. ShowModal=mrcancel

then;

finally form4. Free

end;

pokaz: =false;

form2. Show;

end;

end.

unit Unit1; {автор - Булойчик Алексей}

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, ComCtrls, XPMan, jpeg, Buttons;

type

TForm1 = class (TForm)

ListBox1: TListBox;

ListBox2: TListBox;

Label2: TLabel;

Label1: TLabel;

Timer1: TTimer;

Timer2: TTimer;

Image1: TImage;

Edit2: TEdit;

Label3: TLabel;

Label4: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

Panel1: TPanel;

Image2: TImage;

i1: TImage;

i4: TImage;

i3: TImage;

i2: TImage;

Label5: TLabel;

Edit1: TEdit;

procedure Timer1Timer (Sender: TObject);

procedure Timer2Timer (Sender: TObject);

procedure Button1Click (Sender: TObject);

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

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

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

procedure Button2Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure FormShow (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit3, Unit2, Unit4;

const h=16;

var time,pause,rount,posit,mistake,obshmist,obshtime,slovo: integer;

nul1,nul2: string [2];

{$R *. dfm}

procedure bukva (t: char);

var x,y: word;

begin

case 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;

'ю': begin x: =430; y: =120 end

else x: =1000

end;

with form1 do

begin

i1. left: =x;

i1. Top: =y;

i2. Left: =x+37;

i2. Top: =y;

i3. Left: =x;

i3. Top: =y+37;

i4. Left: =x;

i4. Top: =y;

end;

end;

procedure procend;

begin

obshtime: =obshtime+time;

obshmist: =obshmist+mistake;

m. oshibki: =obshmist;

m. time: =obshtime;

with form1 do

m. procent: = (rount-1) *10+ (slovo*length (ListBox2. Items [0]) +length (Label1. Caption)) / (length (ListBox2. Items [0]) *10);

form1. Close;

end;

procedure newround (r: byte);

type sh=shortstring;

var a: array [1.20] of sh;

s: string [15];

sk: set of byte;

i,n,k: byte;

f: file of sh;

begin

slovo: =0;

pause: =0;

time: =0;

mistake: =0;

nul1: ='00';

nul2: ='00';

with form1 do

begin

Edit2. Text: ='000';

Edit3. Text: ='000';

Edit1. Text: =inttostr (rount);

label1. Left: =750;

label2. Left: =label1. Left;

Listbox1. Clear;

Listbox2. Clear;

Listbox1. Height: =0;

Listbox2. Top: =listbox1. Top;

Listbox2. Height: =10*h;

Label2. Font. Color: =RGB ( ( (750-label1. Left) *255) div 750, ( (label1. Left-50) *255) div 750, ( (label1. Left-50) *60) div 650);

end;

s: ='files/'+inttostr (r);

assign (f,s);

reset (f);

n: =0;

repeat

inc (n);

read (f,a [n]);

until eof (f) =true;

close (f);

sk: = [];

for i: =1 to 10 do

begin

repeat

k: =random (n) +1;

until (k in sk) =false;

include (sk,k);

form1. ListBox2. Items. Add (a [k]);

end;

form1. Label1. Caption: ='';

Form1. Label2. Caption: =form1. ListBox2. Items [0];

bukva (form1. ListBox2. Items [0] [1]);

end;

procedure nextword;

begin

inc (slovo);

posit: =790;

with form1 do

begin

ListBox2. ItemIndex: =1;

if ListBox2. ItemIndex=1

then

begin

ListBox1. Items. Add (form1. ListBox2. Items [0]);

ListBox2. Items. Delete (0);

ListBox1. Height: =ListBox1. Height+h;

ListBox2. Height: =ListBox2. Height-h;

ListBox2. Top: =ListBox2. Top+h;

Label1. Caption: ='';

Label2. Caption: =ListBox2. Items [0];

bukva (ListBox2. Items [0] [1]);

label1. Left: =750;

label2. Left: =label1. Left;

Label2. Font. Color: =RGB ( ( (750-label1. Left) *255) div 750, ( (label1. Left-50) *255) div 750, ( (label1. Left-50) *60) div 650);

end

else

begin

inc (rount);

obshtime: =obshtime+time;

obshmist: =obshmist+mistake;

if rount<=10

then newround (rount)

else procend;

end;

end;

end;

procedure press (var Key: Char);

var s: shortstring;

begin

with form1 do

begin

ListBox2. ItemIndex: =0;

s: =label2. Caption;

if key=s [1]

then

begin

label1. Caption: =Label1. Caption+s [1];

delete (s,1,1);

Label2. Caption: =s;

label2. Left: =label1. Left+label1. Width;

if length (s) =0

then nextword

else bukva (s [1]);

end

else

begin

inc (mistake);

if mistake=10

then nul2: ='0';

if mistake=100

then nul2: ='';

Edit3. Text: =nul2+inttostr (mistake);

end;

end;

end;

procedure TForm1. Timer1Timer (Sender: TObject);

var i: integer;

begin

Label1. Left: =Label1. Left-rount;

Label2. Left: =Label2. Left-rount;

if label2. Left<50

then procend;

if label2. Left<posit

then

begin

Label2. Font. Color: =RGB ( ( (750-label2. Left) *255) div 750, ( (label2. Left-50) *255) div 750, ( (label2. Left-50) *60) div 650);

posit: =label2. Left;

end;

end;

procedure TForm1. Timer2Timer (Sender: TObject);

begin

inc (time);

if time=10

then nul1: ='0';

if time =100

then nul1: ='';

Edit2. Text: =nul1+inttostr (time);

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

if pause<3

then

begin

form3: =Tform3. create (self);

try

if form3. ShowModal = mrOk

then;

finally form3. Free

end;

inc (pause);

end;

end;

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

begin

press (key);

end;

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

begin

press (key);

end;

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

begin

press (key);

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

procend;

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

randomize;

obshmist: =0;

obshtime: =0;

rount: =1;

posit: =790;

end;

procedure TForm1. FormShow (Sender: TObject);

begin

newround (rount);

end;

procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction);

begin

procend;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm3 = class (TForm)

Label5: TLabel;

BitBtn1: TBitBtn;

procedure FormActivate (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

procedure pause;

begin

with Form1 do

begin

Timer1. Enabled: =not Timer1. Enabled;

Timer2. Enabled: =not Timer2. Enabled;

Button1. Enabled: =not Button1. Enabled;

Button2. Enabled: =not Button2. Enabled;

ListBox2. Enabled: =not ListBox2. Enabled;

end;

end;

{$R *. dfm}

procedure TForm3. FormActivate (Sender: TObject);

begin

pause

end;

procedure TForm3. FormClose (Sender: TObject; var Action: TCloseAction);

begin

pause

end;

end.

unit Unit4;

interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm4 = class (TForm)

L1: TLabel;

L2: TLabel;

L3: TLabel;

L1N: TLabel;

L2N: TLabel;

L3N: TLabel;

L1P: TLabel;

L2P: TLabel;

L3P: TLabel;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

L4N: TLabel;

L4P: TLabel;

L4M: TLabel;

L4T: TLabel;

L1M: TLabel;

L2M: TLabel;

L3M: TLabel;

L1T: TLabel;

L2T: TLabel;

L3T: TLabel;

Edit: TEdit;

BitBtn1: TBitBtn;

procedure FormShow (Sender: TObject);

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

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Unit2;

{$R *. dfm}

var f: filemesto;

a: array [1.3] of mesto;

i,j,k: byte;

s: string [5];

procedure TForm4. FormShow (Sender: TObject);

var w: boolean;

begin

assignfile (f,'files/records');

reset (f);

for i: =1 to 3 do

read (f,a [i]);

closefile (f);

if pokaz

then

with form4 do

begin

L1N. Caption: =a [1]. name;

L1M. Caption: =inttostr (a [1]. oshibki);

L1T. Caption: =inttostr (a [1]. time) +'с';

str (a [1]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L1P. Caption: =s+'%';

L2N. Caption: =a [2]. name;

L2M. Caption: =inttostr (a [2]. oshibki);

L2T. Caption: =inttostr (a [2]. time) +'с';

str (a [2]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L2P. Caption: =s+'%';

L3N. Caption: =a [3]. name;

L3M. Caption: =inttostr (a [3]. oshibki);

L3T. Caption: =inttostr (a [3]. time) +'с';

str (a [3]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L3P. Caption: =s+'%';

end

else

begin

k: =4;

if (a [3]. procent<m. procent)

then

begin

w: =false;

repeat

dec (k);

if round (a [k-1]. procent*1000) >round (m. procent*1000)

then w: =true

else

if round (a [k-1]. procent*1000) =round (m. procent*1000)

then

begin

if a [k-1]. oshibki<m. oshibki

then w: =true;

if a [k-1]. oshibki=m. oshibki

then

if a [k-1]. time<=m. time

then w: =true;

end;

until (k=1) or w;

for j: =2 downto k do

a [j+1]: =a [j];

a [k]: =m;

if k<>1

then

begin

L1N. Caption: =a [1]. name;

L1M. Caption: =inttostr (a [1]. oshibki);

L1T. Caption: =inttostr (a [1]. time) +'с';

str (a [1]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L1P. Caption: =s+'%';

end

else

begin

L1N. Visible: =false;

L1M. Caption: =inttostr (m. oshibki);

L1T. Caption: =inttostr (m. time) +'с';

str (m. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L1P. Caption: =s+'%';

Edit. Visible: =true;

edit. Top: =48+64* (k-1);

end;

if k<>2

then

begin

L2N. Caption: =a [2]. name;

L2M. Caption: =inttostr (a [2]. oshibki);

L2T. Caption: =inttostr (a [2]. time) +'с';

str (a [2]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L2P. Caption: =s+'%';

end

else

begin

L2N. Visible: =false;

L2M. Caption: =inttostr (m. oshibki);

L2T. Caption: =inttostr (m. time) +'с';

str (m. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L2P. Caption: =s+'%';

Edit. Visible: =true;

edit. Top: =48+64* (k-1);

end;

if k<>3

then

begin

L3N. Caption: =a [3]. name;

L3M. Caption: =inttostr (a [3]. oshibki);

L3T. Caption: =inttostr (a [3]. time) +'с';

str (a [3]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L3P. Caption: =s+'%';

end

else

begin

L3N. Visible: =false;

L3M. Caption: =inttostr (m. oshibki);

L3T. Caption: =inttostr (m. time) +'с';

str (m. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L3P. Caption: =s+'%';

Edit. Visible: =true;

edit. Top: =48+64* (k-1);

end;

end

else

with form4 do

begin

L1N. Caption: =a [1]. name;

L1M. Caption: =inttostr (a [1]. oshibki);

L1T. Caption: =inttostr (a [1]. time) +'с';

str (a [1]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L1P. Caption: =s+'%';

L2N. Caption: =a [2]. name;

L2M. Caption: =inttostr (a [2]. oshibki);

L2T. Caption: =inttostr (a [2]. time) +'с';

str (a [2]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L2P. Caption: =s+'%';

L3N. Caption: =a [3]. name;

L3M. Caption: =inttostr (a [3]. oshibki);

L3T. Caption: =inttostr (a [3]. time) +'с';

str (a [3]. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L3P. Caption: =s+'%';

L4N. Visible: =true;

L4P. Visible: =true;

L4M. Visible: =true;

L4T. Visible: =true;

str (m. procent: 0: 2,s);

if s [3] <>'. '

then delete (s,5,1);

if s [4] ='. '

then s: ='100';

L4P. Caption: =s+'%';

L4M. Caption: =inttostr (m. oshibki);

L4T. Caption: =inttostr (m. time) +'с';

end;

end;

end;

procedure TForm4. EditKeyPress (Sender: TObject; var Key: Char);

begin

if key=#13

then

begin

if Edit. Text=''

then Edit. text: ='NoName';

case k of

1:

begin

L1N. Visible: =true;

L1N. Caption: =Edit. Text;

end;

2:

begin

L2N. Visible: =true;

L2N. Caption: =Edit. Text;

end;

3:

begin

L3N. Visible: =true;

L3N. Caption: =Edit. Text;

end;

end;

a [k]. name: =edit. Text;

edit. Visible: =false;

rewrite (f);

for j: =1 to 3 do

write (f,a [j]);

closefile (f);

end;

end;

procedure TForm4. FormClose (Sender: TObject; var Action: TCloseAction);

begin

if edit. Visible=true

then

begin

if Edit. Text=''

then Edit. text: ='NoName';

case k of

1:

begin

L1N. Visible: =true;

L1N. Caption: =Edit. Text;

end;

2:

begin

L2N. Visible: =true;

L2N. Caption: =Edit. Text;

end;

3:

begin

L3N. Visible: =true;

L3N. Caption: =Edit. Text;

end;

end;

a [k]. name: =edit. Text;

edit. Visible: =false;

rewrite (f);

for j: =1 to 3 do

write (f,a [j]);

closefile (f);

end;

end;

procedure TForm4. BitBtn1Click (Sender: TObject);

begin

close

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Приемы программирования в Delphi. Алгоритм поиска альфа-бета отсечения, преимущества. Описание программного средства. Разработка программы, реализующая алгоритм игры "реверси". Руководство пользователя. Листинг программы. Навыки реализации алгоритмов.

    курсовая работа [357,1 K], добавлен 28.02.2011

  • Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

    курсовая работа [1,5 M], добавлен 17.01.2011

  • Исторические предпосылки разработки тестирования. Виды электронных тестов и их роль в программировании. Этапы разработки программы для решения задачи быстрой сортировки. Пользовательский интерфейс, отладка, алгоритм программы. Файл теста в формате XML.

    курсовая работа [1,5 M], добавлен 27.01.2014

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

    курсовая работа [63,0 K], добавлен 27.12.2012

  • Исследование алгоритмов и характеристик существующих программных систем аналогов для проверки знаний: Aму Life Test Gold, SunRav TestOfficePro. Разработка архитектуры программной системы. Проверка программы в нормальных условиях, руководство пользователя.

    курсовая работа [2,5 M], добавлен 17.06.2012

  • Создание программы визуализации методов сортировки массива, особенности и направления ее практического применения. Выбор и обоснование среды программирования. Разработка руководства пользователя. Листинг программы и оценка эффективности ее использования.

    дипломная работа [1,0 M], добавлен 15.06.2014

  • Создание тестовой программы на определение доминирующего полушария мозга у человека с применением наиболее распространенного языка Visual Basic for Applications. Выбор технических и программных средств. Интерфейс программы, ее тестирование и листинг.

    курсовая работа [222,5 K], добавлен 08.01.2015

  • Блок-схема модулей программы. Главная цель бизнеса ООО "Регион". Протокол тестирования продукта. Руководство пользователя программы. Расчет цены предложения и минимального количества копий тиражирования. Образец отчета "Книга продаж", листинг программы.

    дипломная работа [1,0 M], добавлен 18.09.2014

  • Описание принципа развивающей игры в слова "Виселица". Разработка программы, реализующей задачу данной игры на языке Delphi. Обоснование выбора среды программирования, листинг файла, результаты отладки и тестирования, руководство для пользователя.

    курсовая работа [572,7 K], добавлен 14.07.2012

  • Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).

    курсовая работа [901,8 K], добавлен 11.02.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.