Разработка программы-тренажера быстрой печати на клавиатуре
Разработка программы, позволяющей приобрести навыки быстрой печати на клавиатуре. Обзор существующих аналогов. Обоснование технических приемов программирования. Тестирование, анализ полученных результатов. Руководство пользователя, листинг программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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