Алгоритм работы программы (приложение А) начинается с ввода пользователем времени выдачи текстового и звукового сообщения – блок один. Далее программа осуществляет выборку значения системного времени – блок два. Для последующего оповещения пользователя о наступлении заданного времени необходимо реализовать подучу звука – блок 3.
Программа находиться в режиме ожидания до момента нажатия клавиши «Готово».
При нажатии клавиши программа обновляет переменную хранения значения системного времени и осуществляет сравнение с временем, заданным пользователем – блок 5. В таком ожидании программа находиться до момента наступления заданного времени, либо выключения программы. Для того, чтобы значение системного времени и заданного пользователем однозначно совпало, необходимо осуществлять выборку системного времени с точностью до секунды.
При совпадении значения системного времени и заданного пользователем программа выводит на экран сообщение, сопровождающееся звуковым оповещением – блоки 6, 8, 10.
Программа должна реализовывать вывод текстового и звукового сообщения при наступлении заданного пользователем времени. Для успешной реализации программы необходимо создание удобного пользовательского интерфейса. В данной программе используется графический интерфейс (см. рисунок 1).
Рисунок 1 – «Внешний вид окна программы»
Интерфейс и вся программа в целом в курсовом проекте создаётся с помощью языка программирования высокого уровня BuilderC++. Данный язык программирования наиболее удобен для реализации данной программы. Осуществляется это при помощи классов следующим образом.
С помощью строк:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Mask, MPlayer;
осуществляется выделение память для использующихся переменных.
Строка Label1: TLabel; осуществляет вывод надписи в окне программы.
MaskEdit1: TMaskEdit; - поле для задания пользователем времени.
Button1: TButton; - добавление кнопки «Готово» о окно программы.
Строки Timer1: TTimer; и Label2: TLabel; реализуют вывод на экран текущего системного времени с интервалов в одну секунду, что позволяет реализовать таймер.
Для последующего звукового оповещения пользователя необходимо реализовать подачу звука. Это реализуется с помощью модуля MediaPlayer1: TMediaPlayer;
После построения окна программы, подключения необходимых модулей и ввода значения времени начинается выполнение тела программы:
Строка procedureTForm1.Button1Click(Sender: TObject); реализует запуск программы при нажатии кнопки «Готово» окна программы. Иначе программа находиться в режиме ожидания.
После нажатия клавиши окно программы минимизируется - Application.Minimize;
За тем программа самостоятельно запускается один раз в секунду по системному таймеру - procedure TForm1.Timer1Timer(Sender: TObject); обновляет свои переменную для хранения текущего времени и осуществляет вывод ее в окно программы - Label2.Caption:=TimeToStr(Time);
Проверка превышения системного времени над заданным пользователем реализуется с помощью строки:
if Time>StrToTime(MaskEdit1.Text)then.
Если заданное условие выполняется, происходит восстановление окна программы из минимизированного состояния с помощью строки: Application.Restore;
Далее программа подключает аудио-плеер и проигрывает звуковое сообщение:
MediaPlayer1.FileName:='error.wav';
MediaPlayer1.DeviceType:=dtAutoSelect;
MediaPlayer1.Open;
MediaPlayer1.Play;
В результате проделанной работы была создана программа, обеспечивающая всем требованиям задания. Программа осуществляет выдачу сообщения в заданное время.
Список использованных источников
1. Керниган Б., Ритчи Д. Язык программирования Си. – СПб.: «Невский Диалект», 2001. – 352с.: ил.
2. Шилд Г. «Программирование на BorlandC/C++». -Москва.: ООО «Попурри», 1999 г
Блок-схема алгоритма работы программы
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Mask, MPlayer;
type
TForm1 = class(TForm)
//Надпись
Label1: TLabel;
//Строка ввода верени
MaskEdit1: TMaskEdit;
//Кнопка
Button1: TButton;
//Таймер
Timer1: TTimer;
//Надпись (выводит текущее время)
Label2: TLabel;
//Модуль отвечающий за подачу звука
MediaPlayer1: TMediaPlayer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
flag: byte;
implementation
{$R *.DFM}
//Запускается при нажатии кнопки
procedure TForm1.Button1Click(Sender: TObject);
begin
//Программа минимизируется
Application.Minimize;
//Флаг запуска = 1
flag:=1;
end;
//Запускается раз в секунду по таймеру
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Вывод текущего времени
Label2.Caption:=TimeToStr(Time);
//Если будильник запущен
ifflag=1 then
//Если текущее время превысило время сигнализирования
// функция StrToTime переводит значение текстовой строки MaskEdit1.Text
// в значение время
if Time>StrToTime(MaskEdit1.Text)then
begin
//Восстановление программы
Application.Restore;
//Подключение к медиа плееру файла error.wav
MediaPlayer1.FileName:='error.wav';
//Медиа плеер автоматически определяет тип устройства
//(по умолчанию аудио драйвер)
MediaPlayer1.DeviceType:=dtAutoSelect;
//Медиа плеер открывает файл
MediaPlayer1.Open;
// И проигрывает его
MediaPlayer1.Play;
end;
end;
//Все
end.