Разработка технического и эскизного проектов программы




Разработка технического и эскизного проектов программы

 

Задание

 

Тема: Разработка приложения для Windows, представляющего собой программу “Будильник”

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

 

Назначение и область применения

 

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

 

Технические характеристики

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

 

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

Необходимо организовать проверку ввода целочисленных значений в пределах от 0 до 23 для часов и от 0 до 59 для минут. А также предусмотреть обработку ситуации, если невозможно проиграть звуковой файл.


Описание алгоритма

 

Рисунок 1.1 – Блок-схема алгоритма работы программы

 

Организация входных и выходных данных

Ввод данных подразумевает собой установку целочисленных значений в пределах от 0 до 23 для часов и от 0 до 59 для минут. Целочисленность организуем при помощи компоненты UpDown, которая обеспечивает получение целых чисел, больших или равных нулю. А границы (для часов 23, а для минут 59) установим проверкой значения позиции компонент UpDown.

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown1.Position > 23

then UpDown1.Position:= 0;

if UpDown1.Position < 10

then Label3.Caption:= '0' + IntToStr(UpDown1.Position)

else Label3.Caption:= IntToStr(UpDown1.Position);

end;

procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown2.Position > 59

then UpDown2.Position:= 0;

if UpDown2.Position < 10

then Label4.Caption:= '0' + IntToStr(UpDown2.Position)

else Label4.Caption:= IntToStr(UpDown2.Position);

end;

Ввод текста сообщения организуем через компоненту Edit.

Вывод сообщения осуществляется при помощи функции ShowMessage, а воспроизведение звукового файла – с помощью объекта TMediaPlayer.

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

 


Разработка рабочего проекта

Технические характеристики

 

Для разработки приложения “Будильник” используем среду визуального программирования Delphi. Проект программы содержит окно ввода данных и активизации будильника (Рисунок 2.1). Также есть вспомогательное окно для вывода сообщения (Рисунок 2.2).

 

Рисунок 2.1 – Главное окно программы

 

Рисунок 2.2 – Окно сообщения

 

Компонент TForm1

Свойства:

Caption – Будильник;

События:

FormCreate – создание окна.

1 – компонент TEdit1

Свойства:

Text – Вставаааай!

События:

Нет.

2 – компонент TLabel1

Свойства:

Caption – Сообщение.

3 – компонент TLabel3

Свойства:

Caption –:;

Font – размер 16.

4 – компонент TLabel3

Свойства:

Caption – 00;

Font – размер 12.

5 – компонент TLabel4

Свойства:

Caption – 00;

Font – размер 12.

6 – компонент TUpDown1

События:

UpDown1Click – изменения значения часов во времени срабатывания будильника.

7 – компонент TUpDown2

События:

UpDown2Click – изменения значения минут во времени срабатывания будильника.

8 – компонент TButton1

Свойства:

Caption – Ok.

События:

Button1Click – активизация работы будильника (начало сравнения значения введенного момента времени с текущим).

9 – компонент TTimer1

События:

Timer1Tick – сравнение значения введенного момента времени с текущим моментом времени.

Обработчик FormCreate предполагает инициализацию некоторых свойств приложения: текстового значения Label3 и Label4, заголовока приложения (Application.Title), звукового файла (процедура SetSound).

procedure TForm1.FormCreate(Sender: TObject);

begin

Label3.Caption:= '00';

Label4.Caption:= '00';

Application.Title:= 'Будильник';

SetSound;

end;

Продедура SetSound – загрузка звукового файла для последующего воспроизведения. Создаем компонент TMediaPlayer, получаем путь к файлу '\media\chord.wav' в директории Windows, пытаемся открыть компонент TMediaPlayer для воспроизведения.

pWinDir – путь в директорию Windows.

MediaPlayer – компонент для воспроизведения звука.

procedure TForm1.SetSound;

var

pWinDir: PChar;

begin

MediaPlayer:= TMediaPlayer.Create(Form1);

MediaPlayer.ParentWindow:= Form1.Handle;

MediaPlayer.Visible:= False;

GetMem(pWinDir,80);

GetWindowsDirectory(pWinDir,80);

MediaPlayer.FileName:= pWinDir + '\media\chord.wav';

try

MediaPlayer.Open;

except

on EMCIDeviceError do;

end;

end;

Обработчик UpDown1Click – установка значения часов в моменте времени срабатывания сигнала будильника.

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown1.Position > 23

then UpDown1.Position:= 0;

if UpDown1.Position < 10

then Label3.Caption:= '0' + IntToStr(UpDown1.Position)

else Label3.Caption:= IntToStr(UpDown1.Position);

end;

Обработчик UpDown1Click – установка значения часов в моменте времени срабатывания сигнала будильника.

procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown2.Position > 59

then UpDown2.Position:= 0;

if UpDown2.Position < 10

then Label4.Caption:= '0' + IntToStr(UpDown2.Position)

else Label4.Caption:= IntToStr(UpDown2.Position);

end.


Рисунок 2.3 – Установка значения часов во времени будильника

 

Рисунок 2.4 – Установка значения минут в времени будильника


Обработчик Button1Click.

Запоминаем установленное время (AlarmHour – часы, AlarmMin - минуты). Сворачиваем программу в трей с подсказкой времени срабатывания сигнала будильника. Включаем проверку таймера установкой переменной AlarmSet в значение true.

procedure TForm1.Button1Click(Sender: TObject);

begin

AlarmHour:= StrToInt(Label3.Caption);

AlarmMin:= StrToInt(Label4.Caption);

AlarmSet:= true;

CreateTrayIcon(1,'Будильник '+

Label3.Caption+':'+Label4.Caption);

Form1.Hide;

end;

Процедура CreateTrayIcon.

Заполняем структуру, необходимую для создания иконки в трее.

procedure TForm1.CreateTrayIcon(n: integer; Tip: string);

var

icondata: TNotifyIconData;

begin

with icondata do

begin

cbSize:= SizeOf(TNotifyIconData);

Wnd:= Self.Handle;

uId:= n;

uFlags:= NIF_ICON or NIF_MESSAGE or NIF_TIP;

uCallBackMessage:= NOTIFY;

hIcon:= Application.Icon.Handle;

StrPCopy(szTip,Tip);

end;

Shell_NotifyIcon(NIM_ADD, @icondata);

end;

Обработчик Timer1Tick.

Получаем текущее время в переменные curHour (часы) и curMin (минуты). Если время срабатывания сигнала установлено, проверяем, совпадает ли текущее время с установленным. Если совпадает, то выключаем будильник, выдаем введенное сообщение, проигрываем звук, показываем окно Form1 и удаляем иконку из трея.

procedure TForm1.Timer1Tick(Sender: TObject);

var

curHour,curMin: word;

begin

curHour:= HourOf(Now);

curMin:= MinuteOf(Now);

if AlarmSet

then begin

if (curHour = AlarmHour) and (curMin = AlarmMin)

then begin

Form1.Show;

AlarmSet:= false;

try

MediaPlayer.Play;

except

on EMCIDeviceError do;

end;

ShowMessage(Edit1.Text);

DeleteTrayIcon(1);

end

else

if Label2.Visible

then Label2.Visible:= False

else Label2.Visible:= True;

end;

end;

 

Рисунок 2.5 – Работа таймера будильника

 

Процедура DeleteTrayIcon.

Заполняем структуру инициализации иконки и удаляем из трея иконку по заполненной структуре.

procedure TForm1.DeleteTrayIcon(n: integer);

var

icondata: TNotifyIconData;

begin

with icondata do

begin

cbSize:= SizeOf(TNotifyIconData);

Wnd:= Self.Handle;

uId:= n;

end;

Shell_NotifyIcon(NIM_DELETE, @icondata);

end;

программный файл звуковой спецификация

Спецификация программы

 

Исполняемый файл “Будильник” имеет название Alarm2.exe и расположен на сменном носителе в каталоге Projects. Состав проекта (Таблица 2.2.1).

 

Таблица 2.2.1 – Состав проекта.

Наименование Обозначение Примечание
Alarm.pas Файл программного модуля для формы №1 Определяет функциональность формы №1
Alarm2_1.dfm Файл формы №1 Содержит список всех компонентов, включенных в форму №1
Alarm2_1.ddp Файл взаимосвязей формы №1 Содержит графические схемы, наглядно поясняющие взаимосвязи между компонентами.
Alarm2.dcu Объектный файл для Alarm.pas Откомпилированная версия Alarm.pas
Alarm2.res Файл ресурсов Содержит пиктограммы, графические изображения
Alarm2.dpr Файл проекта Связывает все файлы, из которых состоит приложение
Alarm2.dof Файл параметров проекта Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы
Alarm2.cfg Файл настроек проекта Содержит настройки для консольного варианта компилятора

 


Описание программы

 

Программа разработана в среде Delphi 7.0 и функционирует в ОС Windows. Функциональное назначение программы заключается в передаче или напоминании оператору в определенное время определенной информации.

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

При работе программы используется персональный компьютер с установленной на нем ОС Windows.

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

 


Тестирование программы

 

Приведем контрольный пример работы программы.

Убедимся в наличии файла “ sound.wav” в директории Windows. Если такого звукового файла нет, то копируем туда файл со сменного носителя, на котором находится программа “Будильник”.

Запускаем файл Alarm2.exe. В полях ввода часов и минут вводим время, на 5 минут большее текущего. Вводим сообщение, например, “Подъем!”, которое, к примеру, означает, что оператору необходимо подняться и уйти. Жмем кнопку “Ok”. Программа сворачивается в трей и работает в фоновом режиме. По прошествии 5 минут программа выдает сообщение введенным с текстом, в данном случае – “Подъем”, сопровождающееся воспроизведением звукового файла sound.wav.

По окончании работы закрываем окно программы.


ЗАКЛЮЧЕНИЕ

 

Среда разработки приложений Deplhi позволяет создавать полноценные приложения, работающие в ОС Windows.

Разработанная программа “Будильник” показывает эффективность использования языков программирования и, в частности, Delphi 7.0 для создания приложений, необходимых человеку в повседневной жизни.


ГЛОССАРИЙ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

1. Поликарпова Н., Шалыто А. Автоматное программирование / Изд. 2-е Санкт-Петербург: Питер, 2010 г., 176 с.

2. Программирование алгоритмов обработки данных / Ускова О. [и др.]. Санкт-Петербург: БХВ-Петербург, 2010 г., 192 с.

3. Тюгашев А.А. Языки программирования. Учебное пособие. Стандарт третьего поколения Санкт-Петербург: Питер, 2014 г., 336 с.

4. Одинцов И. Профессиональное программирование. Системный подход, 2 изд. Санкт-Петербург: БХВ-Петербург, 2014 г., 624 с.

5. Орлов С. А., Цилькер Б. Я. Технологии разработки программного обеспечения. Учебник для вузов. 4-е издание. Стандарт третьего поколения Санкт-Петербург: Питер, 2012 г., 608 с.

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: