Создание приложения 'Часы'

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

Создание приложения 'Часы'














КУРСОВАЯ РАБОТА

по дисциплине: «Технология разработки программных продуктов»

тема: Создание приложения «Часы»


Введение

Delphi - это комбинация нескольких важнейших технологий:

Высокопроизводительный компилятор в машинный код

Объектно-ориентированная модель компонент

Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов

Масштабируемые средства для построения баз данных.

Основной упор модели в Delphi делается на то, чтобы максимально производительно использовать код. Это позволяет очень быстро разрабатывать приложения, так как уже существуют заранее подготовленные объекты. А так же вы можете создавать свои собственные объекты, без каких-либо ограничений. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.

Информатика - это наука о способах представления, накопления, передачи и обработки информации. Она служит для помощи другим наукам и вместе с математикой снабжает их методами исследований и обработки информации.

Современная информатика имеет несколько основных направлений:

разработка методов и алгоритмов автоматического сбора, хранения, поиска и передачи информации,

разработка методов и алгоритмов обработки и преобразования информации,

разработка технологий и электронно-вычислительной техники позволяющих развивать информатик.

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

Язык нашел широкое применение, как среди учащихся, так и в серьёзной научной деятельности благодаря своей относительной простоте и широкому кругу возможностей. Широко применяется в военных ВУЗах страны, в частности ВАВПВО ВС РФ, для разработки программ расчёта и анализа работы военной техники и вооружения.

Проектирование данной курсовой работы требует рассмотрения одного из методов проектирования и программирования при решении военно-прикладных задач: анализ текста программы. В основу курсовой работы входит программа, созданная на языке программирования DELPHI. Курсовая работа содержит также алгоритм решения поясняющей программы. Алгоритм является одним из необходимых элементов при создании программ на любом из алгоритмических языков

Целью курсовой работы является создание программы «Часы».

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

Ознакомиться с объектно-ориентированной средой Delphi;

Узнать о работе и свойствах компонентов программы;

Разработать приложение «Часы».

Курсовая работа состоит из 3 этапов:

Разбор теоретического материала по Delphi.

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

Инструкция пользователя программы и код программы.

1.Отображение графики с помощью Canvas

Канва Canvas не является компонентом. Но поскольку многие компоненты, в частности, формы, имеют канву и канва предоставляет возможность выводить различную графическую информацию, то некоторые начальные сведения о канве все-таки целесообразно дать. Канва представляет собой область компонента, на которой можно рисовать или отображать готовые изображения. Она содержит свойства и методы, существенно упрощающие графику Delphi. Все сложные взаимодействия с системой спрятаны для пользователя, так что рисовать в Delphi может человек, совершенно не искушенный в машинной графике. Каждая точка канвы имеет координаты X и Y. Система координат канвы, как и везде в Delphi, имеет началом левый верхний угол канвы. Координата X возрастает при перемещении слева направо, а координата Y - при перемещении сверху вниз. Координаты измеряются в пикселях. Пиксель - это наименьший элемент поверхности рисунка, с которым можно манипулировать. Важнейшее свойство пикселя - его цвет. Канва имеет свойство Pixels. Это свойство представляет собой двумерный массив, который отвечает за цвета канвы. Например, Canvas.Pixels[10,20] соответствует цвету пикселя, 10-го слева и 20-го сверху. С массивом пикселей можно обращаться как с любым свойством: изменять цвет, задавая пикселю новое значение, или определять его цвет по хранящемуся в нем значению. Например, Canvas.Pixels[10,20] := 0 или Canvas.Pixels[10,20] := clBlack - это задание пикселю черного цвета. Свойство Pixels можно использовать для рисования на канве. Давайте попробуем нарисовать по пикселям график синусоиды на канве формы. Для этого в обработчик события формы OnPaint (прорисовка) можно вставить следующий код:

procedure TForm1.FormPaint(Sender: TObject);,Y: real; // координаты функции,PY: longint; // координаты пикселей:= clWhite;PX := 0 to ClientWidth do

begin

{X - аргумент графика,

соответствующий пикселю с координатой РХ}

X := PX*4*Pi/ClientWidth;:=Sin(X);

{PY - координата пикселя,

соответствующая координате Y}

PY: =trunc(ClientHeight - (Y+1)*ClientHeight/2);

{Устанавливается черный цвет выбранного

пикселя (О яркости)}

Canvas.Pixels [PX, PY] := 0;;

end;

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


а)

б)


Рис. 10.График синусоиды, построенный по пикселям (а) и линиями (б).

Канва - объект класса TCanvas имеет множество методов, которые позволяют рисовать графики, линии, фигуры с помощью свойства Pen - перо. Это свойство является объектом, в свою очередь имеющим ряд свойств. Одно из них уже известное вам свойство Color - цвет, которым наносится рисунок. Второе свойство - Width (ширина линии). Ширина задается в пикселях. По умолчанию ширина равна 1.

Свойство Style определяет вид линии. Это свойство может принимать следующие значения:

psSolid

Сплошная линия

psDash

Штриховая линия

psDot

Пунктирная линия

psDashDot

Штрих- пунктирная линия

psDashDotDot

Линия, чередующая штрих и два пунктира

psClear

Отсутствие линии

Сплошная линия, но при Width > 1 допускающая цвета, отличные от палитры Windows

 


У канвы имеется свойство PenPos типа TPoint .Это свойство определяет в координатах канвы текущую позицию пера. Перемещение пера без прорисовки линии, т.е. изменение PenPos, производится методом канвы MoveTo(X,Y). Здесь (X, Y) - координаты точки, в которую перемещается перо. Эта текущая точка становится исходной, от которой методом LineTo(X,Y) можно провести линию в точку с координатами (X,Y). При этом текущая точка перемещается в конечную точку линии и новый вызов LineTo будет проводить точку из этой новой текущей точки.

Давайте попробуем нарисовать пером график синуса из предыдущего примера. В данном случае обработчик события формы OnPaint может иметь вид:

Procedure TForm1.FormPaint(Sender: TObject);,Y: real; // координаты функции,PY: longint; // координаты пикселей:=clWhite;.MoveTo(0,ClientHeight div 2);PX: =0 to ClientWidth do

{X - аргумент графика,

соответствующий пикселю с координатой РХ}

X := PX*4*Pi/ClientWidth;:= Sin(X);

{PY - координата пикселя,

соответствующая координате Y}

{Проводится линия на графике}.LineTo(PX,PY);;;

Результат работы приложения в этом варианте вы можете видеть на рис. 10 б. Как видите, качество графика существенно улучшилось.

Перо может рисовать не только прямые линии, но и фигуры. Полный список методов канвы, использующих перо, см. во встроенной справке Delphi. А пока в качестве примера приведем только один из них - Ellipse, который рисует эллипс или окружность. Он объявлен как procedure Ellipse(X1, Y1, Х2, Y2: Integer); где параметры X1, Х2, Y1, Y2 определяют координаты прямоугольника, описывающего эллипс или окружность. Например, оператор Canvas.Ellipse(10, 40, 20, 50); нарисует окружность с диаметром 10 и с координатами центра (15, 45).

Фигуры в общем случае рисуются не пустыми, а закрашенными с помощью свойства канвы Brush - кисть. Свойство Brush является объектом, имеющим в свою очередь ряд свойств. Свойство Color определяет цвет заполнения. Свойство Style определяет шаблон заполнения (штриховку). По умолчанию значение Style равно bsSolid, что означает сплошное закрашивание цветом Color.

У пера Pen имеется еще одно свойство, которое мы пока не рассматривали. Это свойство - Mode (режим). По умолчанию значение Mode = pmCopy. Это означает, что линии проводятся цветом, заданным в свойстве Color. Но возможны и другие режимы, в которых учитывается не только цвет Color, но и цвет соответствующих пикселей фона. Наиболее интересным из этих режимов является режим pmNotXor - сложение с фоном по инверсному исключающему ИЛИ. Если задан этот режим, то повторное рисование той же фигуры на том же месте канвы убирает ранее нарисованное изображение и восстанавливает цвета пикселей, которые были до первого изображения фигуры.

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

Попробуйте сделать сами простенькую мультипликацию - движущуюся окружность. Начните новое приложение и в раздел implementation вставьте объявление X,Y: integer;

Тем самым вы введете глобальные переменные X и Y - текущие координаты изображения.

В событие формы OnPaint вставьте операторы

Canvas.Brush.Color := clWhite;:= clWhite;

Canvas.Pen.Mode := pmNotXor;

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

Даже самая простая мультипликация нуждается в синхронизации. Иначе скорость движения будет определяться быстродействием компьютера. Поэтому перенесите на форму компонент Timer - таймер со страницы System. Можете посмотреть там его подробное описание. А пока задайте его свойство Interval равным, например, 30 (это время выдержки в миллисекундах, но реальное время выдержки будет больше) и установите свойство Enabled равным false (это означает, что таймер не будет запускаться автоматически в момент запуска приложения).

В обработчик события этого компонента OnTimer вставьте операторы

// Стирание прежнего изображения.Ellipse(Х-5, Y, X+5, Y-1Q);(X);

// Рисование нового изображения.Ellipse(Х-5, Y, X+5, Y-10);

// Останов при достижении конца формы(X >= ClientWidth-20) then.Enabled := false;

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

Теперь перенесите на форму кнопку Button и в обработчик щелчка на ней поместите операторы

Х:=10;:=100;.Ellipse(X-5, Y, X+5, Y-10);

Timer1.Enabled:=true;

Первые два оператора задают начальные координаты окружности. Третий оператор рисует окружность в ее начальном положении, а четвертый - запускает таймер.

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

На канве можно отображать не только программно создаваемые изображения, но и изображения, хранящиеся в графических файлах. Только сама канва не имеет метода загрузки изображения из файла. Поэтому загружать файл надо в какой-нибудь другой графический объект, способный воспринимать информацию графических файлов. А затем переписывать изображение из этого объекта на канву с помощью метода канвы Draw. Его описание: Draw(X, Y: Integer; Graphic: TGraphic);

Здесь параметры Х и Y определяют координаты левого верхнего угла размещения изображения на канве, a Graphic - объект, хранящий информацию. В качестве такого объекта может выступать, например, объект типа TBitMap, предназначенный для хранения битовых матриц. Давайте посмотрим, как все это выглядит на практике.

Откройте новое приложение, перенесите на форму компонент OpenPictureDialog со страницы Dialogs (это компонент диалога открытия графических файлов) и кнопку Button. Разместите OpenPictureDialog в любом месте формы, так как этот компонент невизуальный, а кнопку разместите внизу формы. В обработчик щелчка на кнопке занесите код:

procedure TForm1.Button1Click(Sender: TObject);

var:TBitMap;

// Выбор пользователем графического файла

If OpenPictureDialog1.Execute then

// Создание объекта BitMap типа TBitMap

BitMap:=TBitMap.Create;

// Загрузка в BitMap выбранного графического файла.LoadFromFile(OpenPictureDialog1.FileName);

// Перенос изображения на канву формы.Draw(10, 10, BitMap);

// Уничтожение объекта BitMap.Free;;;

Этот код создает временный объект типа TBitMap с именем BitMap. Затем вызывается диалог открытия графического файла OpenPictureDialog1 и, если пользователь выбрал файл, то он загружается в BitMap методом LoadFromFile. Затем методом Draw загруженное изображение копируется на канву в область, с координатами левого верхнего угла (10, 10). После этого временный объект BitMap уничтожается.

Запустите ваше приложение и щелкните на его кнопке. Вы увидите, что можете загрузить любой графический файл типа .bmp и он отобразится на канве формы (см. рис. 10 а). Графические файлы вы можете найти в каталоге Images. В Delphi 5 и 4 он обычно расположен в каталоге ...\program files\Common Files\Borland Shared. В Delphi 3 он расположен в каталоге ...\program files\Borland\Delphi 3, а в Delphi 1 - в каталоге Delphi 16. В каталоге Images имеется, в частности, подкаталог \Images\Splash\16Color\, в

котором хранится файл, загруженный в примере рис. 1.


а)

б)


Рис. 1. Изображение на канве графического файла (а) и его стирание (б) при перекрытии другим окном.

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

Если же окно вашего приложения перекрывалось только частично, то вернувшись в свое приложение вы, возможно, увидите результат, подобный представленному на рис. 1 б.

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

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

Перерисовка может производиться разными способами в зависимости от приложения. В нашем примере, можно было бы вынести объявление переменной BitMap (оператор var BitMap: TBitMap) за пределы приведенной выше процедуры, т.е. сделать эту переменную глобальной, разместив непосредственно в разделе implementation. Оператор BitMap.Free можно было бы перенести в обработчик события формы OnDestroy, происходящего в момент закрытия приложения. Тогда в течение всего времени выполнения вашего приложения вы будете иметь копию картинки в компоненте BitMap и вам достаточно ввести в обработчик события OnPaint формы всего один оператор: .Draw(10, 10, BitMap);

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

Помимо рассмотренного метода Draw канва имеет еще метод копирования CopyRect:

procedure CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect);

Метод копирует указанную параметром Source область изображения в канве источника изображения Canvas в указанную параметром Dest область данной канвы. Тип TRect, характеризующий прямоугольные области Source и Dest. Например, оператор .CopyRect(MyRect2, Bitmap.Canvas, MyRect1);

копирует на канву формы в область MyRect2 изображение из области MyRect1 канвы компонента Bitmap.

Копирование методом CopyRect производится в режиме, установленном свойством CopyMode. По умолчанию это свойство имеет значение cmSrcCopy, что означает просто замену изображения, содержащегося ранее в области Dest, на копируемое изображение. Другие возможные значения CopyMode позволяют комбинировать изображения, но их рассмотрение выходит за рамки данной книги.

Этими основными сведениями о выводе графической информации на канву мы ограничимся. В целом же канва - сложный объект, обладающий еще многими свойствами и методами. Но это требует развернутого обсуждения, выходящего за рамки данной книги. В следующей книге серии «Все о Delphi» эти вопросы будут рассмотрены подробнее.

.1 Постановка задачи

Разработка программы создания аналоговых часов включает в себя следующие этапы:

Прорисовка часовой стрелки

Прорисовка минутной стрелки

Прорисовка секундной стрелки

Синхронизация с реальным временем

.2 Совет

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

Давайте теперь посмотрим, как изменился наш Менеджер проектов (рис. 4). Как видите, имя проекта изменилось на HelloWorld, а имя модуля на MainModule.

Рис. 4. Обновленный менеджер проектов.

Теперь перейдите в папку, куда вы сохранили проект, и посмотрите, какие файлы там присутствуют. На компакт-диске это папка \ Примеры \ Глава 5 \ Hello World. Давайте посмотрим на содержимое этих файлов..cfg - файлы с расширением cfg, содержат конфигурацию проекта..dof - файлы с расширением dof, содержат опции проекта..dpr - файлы с расширением dpr, это сам проект. В этом файле находятся описание используемых в проекте модулей и описание процедуры инициализации программы. Его можно использовать и для написания кода. В будущем мы научимся писать код в этом модуле..res - файлы с расширением res, содержат ресурсы проекта, например такие, как иконки, курсоры и др.

MainModule.pas - файлы с расширением pas содержат исходный код модулей.

MainModule.dfm - файлы с расширением dfm, содержат визуальную информацию о форме.

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

Откройте этот файл в текстовом редакторе (например, в Блокноте), и вы увидите примерно следующее:

•object Forml:•TForml= 231= 163= 426= 300= 'Hello world'= clBtnFace.Charset = DEFAULT_CHARSET.Color = clWindowText.Height = -11.Name = 'MS Sans Serif. Style = '[]= False=96

TextHeight = 13

Первая строка идентифицирует объект, его имя и тип. Потом идет перечисление свойств объекта и значения, которые им присвоены. Описание свойств заканчивается ключевым словом end.

Если у вас возникла проблема с открытием формы, вы можете открыть файл визуальной формы в текстовом редакторе и подправить это свойство. Это может потребоваться, когда на форме есть компонент, который соединяется с базой данных. Если соединение активно и база недоступна, то при открытии формы Delphi будет пытаться соединиться с базой данных и при неудачном соединении форма может не отобразиться. В этом случае нужно открыть такой файл в текстовом редакторе и отредактировать свойства соединения с базой. Можно отключить соединение или подправить путь к базе данных.

А теперь давайте вернемся к нашей программе Hallo World, которую мы должны написать. Сначала посмотрим, что у нас уже есть. В принципе, мы ничего особого не сделали, но у нас уже есть готовое окно, которое можно превратить в программу. Для этого нужно скомпилировать проект. Для выполнения компиляции выберите из меню пункт Project | Compile HelloWorld (Проект | Компилировать HelloWorld). Если вы выбирали в астройках Delphi показ окна состояния компиляции, то увидите окно, которое показание на рис.5.

Рис. 5. Результат компиляции.

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

Теперь перейдите в папку, где вы сохранили проект. Там появится запускной файл HelloWorld.exe. Запустите его, и вы увидите окно, как показано на рис. 6. Как видите, перед нами пустое окно, т. е. программа почти готова, хотя мы еще вообще ничего не делали. Для завершения поставленной задачи нам нужно только изменить заголовок окна на Hello world и все.

На языке C++ такая простая программа описывалась бы с такими подробностями на протяжении 20-30 страниц. И это не шутка.

Рис. 6. Программа в запущенном виде.

Итак, осталось изменить заголовок. Для этого вспоминаем ООП. В Delphi все - объекты, а значит, и окно программы тоже объект. Заголовок окна - это скорей всего свойство окна. Для того чтобы изменить это свойство, нужно перейти в объектный инспектор (вкладка Properties), найти свойство Caption (Заголовок) и ввести в его поле ввода слово Hello world (рис. 7). После этого можно нажать клавишу <Enter> или просто перейти на другую строку с другим свойством.

Теперь давайте запустим нашу программу. Для этого можно снова скомпилировать ее и запустить файл. Однако на этот раз мы будем действовать по другому. Выберите из меню Run (Выполнить) пункт Run (или нажмите на клавиатуре клавишу <F9>). Delphi сразу откомпилирует и запустит готовую программу. Как видите, программирование не настолько страшно, как его расписывают. Совет

Заведите себе привычку перед каждой компиляцией сохранять весь проект (File | Save All). Обидно будет, если полдня тяжелой работы пропадет даром от какой-нибудь внештатной ситуации. А они бывают, особенно если вы установите в среду Delphi компоненты с ошибками. Поэтому лучше лишний раз сохраниться, чем пол-дня восстанавливать проделанную ранее работу.

Рис. 7. Изменение свойств в объектном инспекторе.

В принципе, на этом можно было бы остановиться и рассмотреть код модуля главной формы. Однако перед этим необходимо рассмотреть свойства проекта и изучить правила, по которым ими можно управлять. Выберите пункт меню Project | Options (Проект | Настройки), и вы увидите окно, как показано на рис. 8. Окно разбито на множество вкладок, и с некоторыми из них мы познакомимся сейчас, а остальные оставим на будущее. Слишком много информации ни к чему хорошему не приведет, тем более что нам пока большинство настроек ненужно.

На первой вкладке Forms (Формы) вы можете настраивать формы проекта. Вверху есть выпадающий список Main form (Главная форма). Здесь можно выбрать форму, которая будет являться главной для активного приложения.

У нас только одна форма, Formi, которая на данный момент является активной (находится в стадии редактирования), поэтому она будет главной.

Чуть ниже расположены два поля со списком. Слева находится поле Autocreate forms - автоматически создаваемые формы. При запуске программы все описанные здесь формы будут инициализироваться автоматически.

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

Рис. 8. Окно свойств проекта.

Теперь перейдем на вкладку Applications (Приложения). Здесь вы можете настраивать следующие поля.

)Title - заголовок, который будет отображаться в панели задач.

)Help file - имя файла помощи.

)Icon - иконка приложения. По умолчанию используется иконка Delphi, но вы можете ее изменить, нажав на кнопку Load Icon (Загрузить иконку).

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

Следующая вкладка - Version Info (Информация о версии). Если установить флажок Include version information in project (Включить информацию о версии в проект), то в запускаемый программный файл будет встроена информация о версии программы. На этой же вкладке вы можете указать номер версии, сборки и выпуска (рис. 9).

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

Рис. 9. Вкладка Version Info окна настроек проекта.

. Математическое описание

Для решения данной задачи необходимо составить ее математическое описание.

Одним из возможных вариантов решения является следующий:

Константа R-радиус циферблата

.т - переменная времени, т = Now()- реальное время

.после чего реальное время отображается в аналоговом виде:

ahr := 90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;:= 90 - MinuteOf(t)*6;:= 90 - SecondOf(Today)*6;

4.Прорисовка реального времени, циферблата, часовой, минутной и секундной стрелок часов.

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

.1 Алгоритм решения

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

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

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

.2  Операторы, применяемые в программе

В процессе написания программы мною были использованы следующие операторы и управляющие конструкции языка Delphi:- оператор объявления переменной

<,>,<> - операторы сравнения

+, -, /, * - математические операторыОператор цикла- построение окружности- вырисовка объекта- oкругление до целого-прорисовка текущих положений стрелок часов

.3 Разработка интерфейса

Интерфейс для данной программы выполнен с помощью интегрированной среды разработки Delphi 6.0, он включает в себя несколько компонентов оформления форм. Наиболее функциональным и значимыми является невизуальный компонент Timer. Данный компоненты является стандартными для операционной системы Microsoft Windows 2000/XP и присутствуют во множестве популярных программ.

Рис. 2. Интерфейс курсового проекта

3. Программа на языке Delphi

unit clock2_;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls;= class(TForm): TTimer;FormCreate(Sender: TObject);FormPaint(Sender: TObject);Timer1Timer(Sender: TObject);

// эти объявления вставлены вручнуюVector(x0,y0,a,l: integer);

procedure DrawClock;

{ Private declarations }

{ Public declarations };: TForm1;

{$R *.dfm}; // для доступа к SecondOf,

// MinuteOf и HourOf= 75 ; // радиус циферблата часов,y0: integer; // центр циферблата

ahr,amin,asec: integer; // положение стрелок (угол)

// инициализация формыTForm1.FormCreate(Sender: TObject);: TDateTime;

// зададим размер формы

// в соответствии с размером циферблата:= (R+30)*2;

ClientWidth := (R+30)*2;:= R+30;:= R+30;:= Now();

// положение стрелок:= 90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;:= 90 - MinuteOf(t)*6;:= 90 - SecondOf(Today)*6;

Timer1.Enabled := True; // пуск таймера;

// вычерчивает вектор заданной длины из точки (x0,y0)

procedure TForm1.Vector(x0,y0: integer; a, l: integer);

// x0,y0 - начало вектора

// a - угол между осью x и вектором

// l - длина вектора= 0.0174532; // коэффициент пересчета угла из градусов в радианы,y: integer; // координаты конца вектора

begin.MoveTo(x0,y0);:= Round(x0 + l*cos(a*GRAD));:= Round(y0 - l*sin(a*GRAD));.LineTo(x,y);;

// рисует стрелкиTForm1.DrawClock;

var: TDateTime;

// шаг секундной и минутной стрелок 6 градусов,

// часовой - 30.

// стереть изображение стрелок.Pen.Color := clBtnFace;.Pen.Width :=3;

// часовую(x0,y0, ahr, R-20);

// минутную(x0,y0, amin, R-15);

// секундную(x0,y0, asec, R-7);:= Now();

// новое положение стрелок:= 90 - HourOf(t)*30-(MinuteOf(t)div 12)*6;:= 90 - MinuteOf(t)*6;:= 90 - SecondOf(t)*6;

// нарисовать стрелки

// часовая стрелка.Pen.Width := 3;

Canvas.Pen.Color := clBlack;(x0,y0, ahr, R-20);

// минутная стрелка.Pen.Width := 2;

Canvas.Pen.Color := clBlack;(x0,y0, amin, R-15);

// секундная стрелка.Pen.Width := 1;.Pen.Color := clYellow;(x0,y0, asec, R-7);

end;

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

procedure TForm1.FormPaint(Sender: TObject);

var,y: integer; // координаты маркера на циферблате: integer; // угол между OX и прямой (x0,yo) (x,y): integer; // метка часовой риски: TBrushStyle; // стиль кисти: TColor; // цвет карандаша: integer; // ширина карандаша

begin:= Canvas.Brush.Style;:= Canvas.Pen.Color;:= Canvas.Pen.Width;.Brush.Style := bsClear;.Pen.Width := 1;

Canvas.Pen.Color := clBlack;:=0; // метки ставим от 3-х часов, против

// часовой стрелки:=3; // угол 0 градусов - это 3 часа

// циферблатa < 360 do:=x0+Round( R * cos(a*2*pi/360));:=x0-Round( R * sin(a*2*pi/360));.Canvas.MoveTo(x,y);(a mod 30) = 0 then.Ellipse(x-2,y-2,x+3,y+3);

// цифры по большему радиусу:=x0+Round( (R+15) * cos(a*2*pi/360));

y:=x0-Round( (R+15) * sin(a*2*pi/360));.TextOut(x-5,y-7,IntToStr(h));(h);h = 0 then h:=12;Canvas.Ellipse(x-1,y-1,x+1,y+1);

a:=a+6; // 1 минута - 6 градусов;

// восстановить карандаш кисть.Brush.Style := bs;

Canvas.Pen.Width := pw;.Pen.Color := pc;

DrawClock;;

// прорисовка текущих положений стрелок часов

procedure TForm1.Timer1Timer(Sender: TObject);

begin; ;.

Заключение

canvas графика приложение часы

В данной курсовой работе был разработан алгоритм и программа для создания аналоговых часов. В итоге проделанной работы можно сказать, что среда разработки Delphi обладает широкими возможностями для решения задач практически любой сложности. Значит, эффективность работы ЭВМ вполне оправдывает затраченные на них расходы и ресурсы. Естественно, не трудно предположить, что развитие ЭВМ нисколько не замедлится и некогда не прекратится. Очевидно, что новейшие ЭВМ будут постоянно внедрятся в различные сферы деятельности человека и конечно же Вооруженные Силы Российской Федерации не исключение.

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

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

Методические рекомендации по оформлению и выполнению курсовой работы. Часть 1. Смоленск, ВУ ВПВОВС РФ.. Павлов А. Техническая книга, 2010 г.

Справочник по стандартизации в радиоэлектроники ЕСКД. Воениздат, 2009г.

ГОСТ 19428-74.

Методические рекомендации и задания по выполнении расчетно-графических работ.

Приложение

Запускаем программу. Созданные нами часы запустились.

Рис. Интерфейс курсового проекта

Похожие работы на - Создание приложения 'Часы'

 

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