Часы-будильник-таймер-секундомер
Федеральное
агентство по образованию
ГОУ ВПО
Рыбинская государственная авиационная технологическая академия имени П. А.
СОЛОВЬЕВА
Факультет
радиотехники, электроники и информатики
Кафедра
вычислительных систем
КУРСОВАЯ
РАБОТА
по дисциплине
Системное программное
обеспечение
на тему
«Часы-будильник-таймер-секундомер»
Пояснительная
записка
ТА
230101.01.89.000 П3
Студент
группы ВС - 07 Хохонов Д.А.
Руководитель
канд. техн. наук, доцент Тонкий Л. В.
Нормоконтролер
канд. техн. наук, доцент (Тонкий Л. В.)
Рыбинск 2010
Содержание
Введение
Анализ технического
задания
Разработка блок-схем
алгоритма
3 Разработка и описание программы
4 Руководство
пользователя
4.1 Назначение программы
.2 Условие работы с программой
.3 Описание функционирования программы
5 Текст программы
Вывод
Список использованных
источников
Введение
Требуется разработать программу «Часы-будильник-таймер-секундомер».
Заданы ряд требований по выполнению работы. Программа будет написана на языке
Delphi 7. Delphi обеспечивает быстроту работы, легкость компиляции,
совместимость, интеграционную способность и т.д.
1. Анализ требований технического задания
Программа «Часы - будильник - таймер - секундомер», которую необходимо
написать в данной работе, предназначена для отображения времени в цифровой.
Программа имеет доступ к системному времени. Так же имеется возможность
выбора звукового сигнала для таймера и будильника. Все что требуется
пользователю, это выбрать мелодию и установить нужное время. Как только
наступит тот момент времени, который установил пользователь, программа
автоматически запустит выбранную им мелодию.
Все функции установки будильника и таймера достаточно просты и удобны,
тоже самое касается и секундомера. Часы имеют удобную форму и красивый фон. При
необходимости их можно переместить по экрану. Они всегда будут на рабочем столе
и пользователь всегда будет знать время.
Для наглядности работы алгоритма программы построим блок-схему.
2. Разработка блок-схем алгоритмов
Блок-схема поясняет весь алгоритм работы программы. При запуске программы
появляется диалоговое окно, которое предлагает вам выбрать мелодию, которая
будет проигрываться в сигнале будильника и таймера. Одновременно с запуском
программы запускается секундомер, который будет показывать сколько времени вы используете
эту программу. Так же имеется и другой секундомер, который можно запустить при
желании пользователя. Выбрать секундомер, таймер или будильник можно нажав на
окне, в котором располагаются часы, правую кнопку мыши. Установка параметров
устанавливается вручную. Чтобы подтвердить запуск, необходимо нажать кнопку
«Установить». Имеется возможность сброса. Для этого нужно нажать
соответствующую кнопку. Блок-схема алгоритма работы программы представлена на
рисунке 2.1.
Рисунок 2.1 - Блок-схема алгоритма работы органайзера
3. Разработка и описание программы
В данной программе реализовано отображение времени в цифровой форме с
секундомером, имеющим точность 10 знаков, а так же присутствует дизайнерская
проработка.
Рассмотрим более детально реализованные в программе функции. Главная
функция программы - отображение времени, эта возможность реализована в цифровой
форме. Цифровая форма более удобна, так как отображается точное время в формате
чч - мм - сс.
Для получения времени используется системная функция Time, а для отображения ее на экране
функция Timetostr.
При перемещении часов изменяется задний фон, а так же цвет отображения
времени.
Возможность установить будильник на нужное время реализована с помощью
стандартного компонента изменения даты и времени.
Возможность активации будильника представлена в цифровой форме.
Используются кнопки типа Button,
для включения будильника и установки времени, для изменения времени звонка.
Каждый элемент задания(часы, секундомер, таймер) располагаются на
отдельной форме. Звуковой сигнал воспроизводится с общего музыкального
проигрывателя.
Основные процедуры, используемые для реализации часов:
procedure FormCreate(Sender: TObject) - процедура создания формы. Timer1Timer(Sender: TObject) - процедура работы таймера, который получает время.
procedure N1Click(Sender: TObject) - процедура вызова
таймера.C1Click(Sender: TObject)
- процедура вызова
секундомера.N2Click(Sender: TObject)
- процедура выхода
из программы.N3Click(Sender: TObject) - процедура вызова будильника.N4Click(Sender: TObject) - процедура вызова перемещения часов.Button1Click(Sender:
TObject) - процедура установления.Button2Click(Sender: TObject) - процедура сброса.Button3Click(Sender: TObject) - процедура выхода
из окна.
4. Руководство пользователя
.1 Назначение программы
Назначение программы - отображение времени в цифровой форме с
возможностью вызова секундомера.
4.2 Условие работы с программой
Для работы программы необходимы:
- процессор
с частотой 100 МГц(при использовании совместно с Windows 98) и не менее 400МГц (для использования совместно с Windows 2000/ME/2003 Server/XP или альтернативной системой при
использовании программ эмулирования работы Windows)
операционная система Windows
98/2000/ME/2003Server/XP или
альтернативная система с использованием программ эмулирования работы Windows
манипулятор мышь и клавиатура
объем дискового пространства 5 Мб
оперативная память 64 Мб и более.
4.3 Описание функционирования программы
Чтобы начать работу с программой, необходимо запустить файл Taim.exe.
Запуск программы сопровождается появлением диалогового главного окна:
Выбираем в этом окне мелодию, которая будет звучать в будильнике и
таймере и жмем кнопку «Открыть». Появится главная форма программы:
После этого для совершения каких-либо действий необходимо на главной
форме нажать правой кнопкой мыши:
Затем можно выбрать соответствующие действия. Т.е. вызвать секундомер,
таймер, будильник, перемещение формы с часами или завершить работу с программой
и выйти.
Нажав кнопку «Показать», запустится секундомер. Остановить его можно
нажав кнопку «Стоп». Обнулить секундомер позволяет кнопка «Остановить».
Допустим, выбран Таймер, тогда появится окно:
Таймер выставляется вручную и активизируется кнопкой «Установить». После
отсчета таймера запускается мелодия. Остановить таймер можно кнопкой
«Остановить»ю
Допустим, выбран будильник, тогда появится следующее окно:
Будильник устанавливается вручную. Запуск будильника осуществляется
кнопкой «Установить», чтобы сбросить будильник необходимо нажать кнопку
«Сбросить».
Допустим, выбрано перемещение, тогда появится окно:
Нажав соответствующие кнопки форма с часами переместится в указанные
места.
5. Текст программы
Unit1;
, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, XPMan, ExtCtrls, StdCtrls, Menus, ImgList;
= class(TForm): TLabel;: TTimer;: TTimer;: TTimer;:
TXPManifest;: TImage;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;: TMenuItem;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;:
TTimer;FormCreate(Sender: TObject);Timer1Timer(Sender: TObject);N1Click(Sender:
TObject);C1Click(Sender: TObject);N2Click(Sender: TObject);N3Click(Sender:
TObject);N4Click(Sender: TObject);Timer2Timer(Sender:
TObject);Timer3Timer(Sender: TObject);Timer4Timer(Sender: TObject);
{ Private declarations }
{ Public declarations };
: TForm1;: TDateTime;
hour, min, sec, msec: word; //для преобразования
sectime,sectime1:TDateTime;,msrealcount,msreal:integer;, m,
s, ms,mks : word;, m1, s1, ms1: word;, m2, s2, ms2: integer;: boolean;
Unit2, Unit3, Unit4, Unit5;
{$R *.dfm}
TForm1.FormCreate(Sender: TObject);: Cardinal;:=True;
.Timer2.Enabled:=true;:=
CreateEllipticRgn(0,0,Width,Height);(Handle,hRgn,false);:= Time; // получаем время(Now,hour,min,sec,msec);:=hour*60*60*1000+min*60*1000+sec*1000+msec;.Image1.Picture.LoadFromFile('top15.bmp');
Label1.Caption := TimeToStr(Time) {ф-ция, кот возвращает текущее
системное время}
end;
TForm1.Timer1Timer(Sender: TObject);.Caption :=
TimeToStr(Time) {ф-ция, кот возвращает текущее
системное время};
TForm1.N1Click(Sender: TObject);.show;;TForm1.C1Click(Sender:
TObject);.show;;
TForm1.N2Click(Sender: TObject);.Close;;
TForm1.N3Click(Sender: TObject);.show;;
TForm1.N4Click(Sender: TObject);.show;;
TForm1.Timer2Timer(Sender:
TObject);:=time;(sectime1,h1,m1,s1,ms1);:=h1*60*60*1000+m1*60*1000+s1*1000+ms1;:=msrealcount-mscount;:=msreal
mod (60*60*1000);:=msreal div (60*60*1000);:=m2 mod (60*1000);:=m2 div
(60*1000);:=s2 mod 1000;:=s2 div
1000;.Edit1.Text:=inttostr(h2);.Edit2.Text:=inttostr(m2);.Edit3.Text:=inttostr(s2);.Edit4.Text:=inttostr(ms2);;
TForm1.Timer3Timer(Sender:
TObject);:=time;(sectime1,h1,m1,s1,ms1);:=h1*60*60*1000+m1*60*1000+s1*1000+ms1;:=msrealcount-mscount;:=msreal
mod (60*60*1000);:=msreal div (60*60*1000);:=m2 mod (60*1000);:=m2 div
(60*1000);:=s2 mod 1000;:=s2 div
1000;:=ms2*2;.Edit5.Text:=Copy(IntToStr(mks),1,3);;
TForm1.Timer4Timer(Sender:
TObject);:=time;(sectime1,h1,m1,s1,ms1);:=h1*60*60*1000+m1*60*1000+s1*1000+ms1;:=msrealcount-mscount;:=msreal
mod (60*60*1000);:=msreal div (60*60*1000);:=m2 mod (60*1000);:=m2 div
(60*1000);:=s2 mod 1000;:=s2 div
1000;:=ms2*3;.Edit6.Text:=Copy(IntToStr(mks),1,3);;
.
Unit2;
, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, StdCtrls, ExtCtrls, MPlayer;
= class(TForm): TEdit;: TEdit;: TEdit;: TEdit;: TEdit;:
TEdit;: TTimer;: TLabel;: TLabel;: TLabel;: TButton;: TButton;: TButton;:
TTimer;: TTimer;Timer1Timer(Sender: TObject);Button1Click(Sender:
TObject);Button3Click(Sender: TObject);Button2Click(Sender:
TObject);FormCreate(Sender: TObject);Timer2Timer(Sender:
TObject);Timer3Timer(Sender: TObject);
{ Private declarations }
{ Public declarations };
: TForm2;
,sectime1:TDateTime;,msrealcount,msreal:integer;, m, s, ms:
word;, m1, s1, ms1: word;, m2, s2, ms2: integer;: boolean;
{$R *.dfm}
TForm2.Timer1Timer(Sender:
TObject);:=time;(sectime1,h1,m1,s1,ms1);:=h1*60*60*1000+m1*60*1000+s1*1000+ms1;:=msrealcount-mscount;:=msreal
mod (60*60*1000);:=msreal div (60*60*1000);:=m2 mod (60*1000);:=m2 div
(60*1000);:=s2 mod 1000;:=s2 div 1000;.Edit1.Text:=inttostr(h2);.Edit2.Text:=inttostr(m2);.Edit3.Text:=inttostr(s2);.Edit4.Text:=inttostr(ms2);:=false;;
TForm2.Button1Click(Sender:
TObject);.Edit1.Visible:=true;.Edit2.Visible:=true;.Edit3.Visible:=true;.Edit4.Visible:=true;.Edit5.Visible:=true;:=time;(sectime,h,m,s,ms);start
then.Button1.caption:='Стоп';.Timer1.Enabled:=true
;.Timer2.Enabled:=true;.Timer3.Enabled:=true;:=h*60*60*1000+m*60*1000+s*1000+ms;.Button1.caption:='Старт';.Timer1.Enabled:=false;.Timer2.Enabled:=false;.Timer3.Enabled:=false;;:=True;;
TForm2.Button3Click(Sender: TObject);.Hide;;
TForm2.Button2Click(Sender:
TObject);.Edit1.Text:=('0');.Edit2.Text:=('0');.Edit3.Text:=('0');.Edit4.Text:=('000');.Edit5.Text:=('000');.Edit6.Text:=('000');;
TForm2.FormCreate(Sender: TObject);.Timer1.Enabled:=false;.Timer2.Enabled:=false;.Timer3.Enabled:=false;;
TForm2.Timer2Timer(Sender: TObject);:
integer;:=time;(sectime1,h1,m1,s1,ms1);:=h1*60*60*1000+m1*60*1000+s1*1000+ms1;:=msrealcount-mscount;:=msreal
mod (60*60*1000);:=msreal div (60*60*1000);:=m2 mod (60*1000);:=m2 div
(60*1000);:=s2 mod 1000;:=s2 div
1000;:=ms2*2;.Edit5.Text:=Copy(IntToStr(mks),1,3);:=false;;TForm2.Timer3Timer(Sender:
TObject);mks:integer;:=time;(sectime1,h1,m1,s1,ms1);:=h1*60*60*1000+m1*60*1000+s1*1000+ms1;:=msrealcount-mscount;:=msreal
mod (60*60*1000);:=msreal div (60*60*1000);:=m2 mod (60*1000);:=m2 div
(60*1000);:=s2 mod 1000;:=s2 div
1000;:=ms2*3;.Edit6.Text:=Copy(IntToStr(mks),1,3);:=false;;:=True;.
Unit3;
, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, StdCtrls, Buttons, MPlayer, ExtCtrls, XPMan;
= class(TForm): TTimer;: TMediaPlayer;: TBitBtn;: TBitBtn;:
TBitBtn;: TEdit;: TEdit;: TEdit;: TLabel;: TLabel;: TLabel;: TXPManifest;:
TOpenDialog;BitBtn3Click(Sender: TObject);BitBtn1Click(Sender:
TObject);BitBtn2Click(Sender: TObject);Timer1Timer(Sender:
TObject);FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };
:
TForm3;,sreal,taimer:longint;:Tdatetime;,m,s,ms,i:word;,m1,s1:longint;,TaimMin,TaimSec:word;:boolean;
Unit2;
{$R *.dfm}
TForm3.BitBtn3Click(Sender: TObject);.Close;;
TForm3.BitBtn1Click(Sender:
TObject);:=StrToInt(edit1.Text);:=StrToInt(edit2.Text);:=StrToInt(edit3.Text);:=time;(timeTiam,h,m,s,ms);:=TaimHour*60*60+TaimMin*60+TaimSec+h*60*60+m*60+s;.Timer1.Enabled:=true;;
TForm3.BitBtn2Click(Sender:
TObject);.Timer1.Enabled:=FALSE;.Edit1.Text:='0';.Edit2.Text:='0';.Edit3.Text:='0';.MediaPlayer1.Stop;;
TForm3.Timer1Timer(Sender:
TObject);:=time;(timeTiam,h,m,s,ms);:=h*60*60+m*60+s;:=TotalTaim-Sreal;:=taimer
mod (60*60);:=taimer div (60*60);:=m1 mod (60);:=m1 div (60);taimer<=0
then.Timer1.Enabled:=false;;.Edit1.Text:=inttostr(h1);.Edit2.Text:=inttostr(m1);s1>=0
then form3.Edit3.Text:=inttostr(s1);((h1=0) and (s1=0) and (m1=0))
then.MediaPlayer1.Enabled:=true;.MediaPlayer1.open;.MediaPlayer1.Play;;;TForm3.FormCreate(Sender:
TObject);OpenDialog1.Execute then {если диалог состоялся}.MediaPlayer1.FileName :=
form3.OpenDialog1.FileName;;.MediaPlayer1.Enabled:=false;.Edit1.Text:='0';.Edit2.Text:='0';.Edit3.Text:='1';;
.
Unit4;
, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, StdCtrls, MPlayer, ExtCtrls, XPMan, ComCtrls;
= class(TForm): TXPManifest;: TTimer;: TEdit;: TEdit;:
TEdit;: TLabel;: TLabel;: TLabel;: TButton;: TButton;:
TButton;Button1Click(Sender: TObject);Button2Click(Sender:
TObject);Button3Click(Sender: TObject);Timer1Timer(Sender: TObject);
{ Private declarations }
{ Public declarations };
: TForm4;, bm, bs:word;, m1, s1, ms1:
word;,sectime1:TDateTime;, min, sec, msec: word;
//bm,bh,bs:word;: TDateTime;: TTime;,TaimMin,TaimSec:word;,
TotalTaim:longint;: boolean;
Unit3;
{$R *.dfm}TForm4.Button1Click(Sender:
TObject);:=true;:=strtoint(form4.Edit1.Text);:=strtoint(form4.Edit2.Text);:=strtoint(form4.Edit3.Text);;
TForm4.Button3Click(Sender: TObject);.close;;
TForm4.Timer1Timer(Sender: TObject);:=
Time;(Now,hour,min,sec,msec);(signal=true)and ((hour=bh)and(min=bm)and(sec=bs))
then.MediaPlayer1.Enabled:=true;.MediaPlayer1.Open;.MediaPlayer1.Play;
;;
.
Unit5;
, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,, StdCtrls;
= class(TForm): TButton;: TButton;:
TButton;Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender:
TObject);
{ Private declarations }
{ Public declarations };
: TForm5;
Unit1;
{$R *.dfm}
TForm5.Button1Click(Sender:
TObject);.Align:=alleft;.Image1.Picture.LoadFromFile('1.bmp');.Label1.Font.Color:=clblue;;
TForm5.Button2Click(Sender:
TObject);.Align:=alright;.Image1.Picture.LoadFromFile('2.bmp');.Label1.Font.Color:=clred;;
TForm5.Button3Click(Sender:
TObject);.Align:=albottom;.Image1.Picture.LoadFromFile('3.bmp');.Label1.Font.Color:=clgreen;
end;.
Вывод
В ходе выполнения курсовой работы была разработана программа «Часы -
будильник - таймер - секундомер», которая предназначена для вывода времени в
цифровой форме. Реализация программы удовлетворяет условию технического задания
и имеет дружественный пользователю интерфейс.
программирование delphi часовой
Список использованных источников
1. Кучеренко, В. П. Тонкости программирования на Delphi [Текст]: Учебное пособие / В. П.
Кучеренко. - М.: «Познавательная книга плюс», 2000. - 192 с.: ил. - 4100 экз. -
ISBN 5-8321-0066-2 (в пер.).
. Архангельский, А. Я. Приемы программирования в Delphi
[Текст]: Учебное пособие / А.Я. Архангельский. - М.: ООО «Бином-Пресс», 2004. -
848 с.: ил.
. Вирт Н. Алгоритмы + структуры = программы. [Текст]: М.:
Мир, 1985.
. Касьянов В.Н. Графы в программировании: обработка,
визуализация и применение. / В.А. Евстигнеев - СПб.: БХВ-Петербург, 2003. -
1104 с.