Разработка программы "Будильник"
Проектирование программы "Будильник" с использованием программной среды, позволяющей осуществлять получение и обработку значений времени и воспроизведение звукового файла. Разработка технического и эскизного проектов программы. Спецификация программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.04.2013 |
Размер файла | 84,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
- Введение
- 1. Разработка технического и эскизного проектов программы
- 1.1 Задание
- 1.2 Назначение и область применения
- 1.3 Технические характеристики
- 1.3.1 Постановка задачи
- 1.3.2 Описание алгоритма
- 1.3.3 Организация входных и выходных данных
- 2. Разработка рабочего проекта
- 2.1 Технические характеристики
- 2.2 Спецификация программы
- 2.3 Текст программы
- 3. Описание программы
- 4. Тестирование программы
- Заключение
- Список использованных источников
- Введение
- В данной курсовой работе приведено решение задания по дисциплине “Программирование на языке высокого уровня” по разработке программы “Будильник”.
- Решение задания подразумевает использование программной среды, позволяющей осуществлять получение и обработку значений текущего времени и воспроизведение звукового файла. Для решения данной задачи подходит среда разработки приложений Delphi 7.0.
1. Разработка технического и эскизного проектов программы
1.1 Задание
Тема: Разработка приложения для Windows, представляющего собой программу “Будильник”
Условие задачи: после того, как пользователь введет время сигнала и текст, который должен выводиться на экран в заданное время, как напоминание о наступлении какого либо события, окно программы должно исчезнуть с экрана. Появление текста напоминания в указанное время должно сопровождаться звуковым сигналом.
1.2 Назначение и область применения
Программа предназначена для напоминания пользователю о чем-либо в определенный момент времени. Поскольку ставится задача разработать приложение для Windows, то использоваться программа может только под управлением ОС Windows.
1.3 Технические характеристики
1.3.1 Постановка задачи
Разработать программу, позволяющую в определенный момент времени выводить заданное сообщение, сопровождаемое звуковым сигналом. Окно программы должно содержать в себе поле ввода выводимого сообщения и поля ввода момента времени, а именно, часов и минут.
Необходимо организовать проверку ввода целочисленных значений в пределах от 0 до 23 для часов и от 0 до 59 для минут. А также предусмотреть обработку ситуации, если невозможно проиграть звуковой файл.
1.3.2 Описание алгоритма
Размещено на http://www.allbest.ru/
Рисунок 1. Блок-схема алгоритма работы программы
1.3.3 Организация входных и выходных данных
Ввод данных подразумевает собой установку целочисленных значений в пределах от 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.
2. Разработка рабочего проекта
2.1 Технические характеристики
Для разработки приложения “Будильник” используем среду визуального программирования Delphi. Проект программы содержит 1 окно Form1 - ввод данных и активизация будильника (Рисунок 2). Также есть вспомогательное окно для вывода сообщения (Рисунок 3).
Рисунок 2. Главное окно программы - Form1
Рисунок 3. Окно сообщения
Компонент 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.
Размещено на http://www.allbest.ru/
Рисунок 4. Установка значения часов во времени будильника
Размещено на http://www.allbest.ru/
Рисунок 5. Установка значения минут в времени будильника
Обработчик 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;
Размещено на http://www.allbest.ru/
Рисунок 6. Работа таймера будильника
Процедура 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;
программный файл звуковой спецификация
2.2 Спецификация программы
Исполняемый файл “Будильник” имеет название Project1.exe и расположен на сменном носителе в каталоге Projects. Состав проекта (Таблица 1).
Таблица 1 - Состав проекта.
Наименование |
Обозначение |
Примечание |
|
Unit1.pas |
Файл программного модуля для формы №1 |
Определяет функциональность формы №1 |
|
Unit1.dfm |
Файл формы №1 |
Содержит список всех компонентов, включенных в форму №1 |
|
Unit1.ddp |
Файл взаимосвязей формы №1 |
Содержит графические схемы, наглядно поясняющие взаимосвязи между компонентами. |
|
Unit1.dcu |
Объектный файл для Unit1.pas |
Откомпилированная версия Unit1.pas |
|
Project1.res |
Файл ресурсов |
Содержит пиктограммы, графические изображения |
|
Project1.dpr |
Файл проекта |
Связывает все файлы, из которых состоит приложение |
|
Project1.dof |
Файл параметров проекта |
Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы |
|
Project1.cfg |
Файл настроек проекта |
Содержит настройки для консольного варианта компилятора |
2.3 Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DateUtils, ComCtrls,
ShellAPI, MPlayer;
type
TForm1 = class(TForm)
Edit1: TEdit;
Timer1: TTimer;
Button1: TButton;
Label1: TLabel;
UpDown1: TUpDown;
UpDown2: TUpDown;
Label3: TLabel;
Label4: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure CreateTrayIcon(n: integer; Tip: String);
procedure DeleteTrayIcon(n: integer);
procedure Button1Click(Sender: TObject);
procedure Timer1Tick(Sender: TObject);
procedure SetSound;
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure UpDown2Click(Sender: TObject; Button: TUDBtnType);
private
{ Private declarations }
public
{ Public declarations }
end;
const
NOTIFY = WM_USER + 123;
var
Form1: TForm1;
AlarmHour, AlarmMin: Word; // время установленное на будильнике
AlarmSet: Boolean; // флаг: установлен ли будильник
MediaPlayer : TMediaPlayer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Label3.Caption := '00';
Label4.Caption := '00';
Application.Title := 'Будильник';
SetSound;
AlarmSet := false;
end;
procedure TForm1.CreateTrayIcon(n: integer; Tip: string);
var
icondata: TNotifyIconData;
begin
// заполним структуру icondata,
// поля которые определяет значок
// на System Tray
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;
// удаляет картинку с System Tray
procedure TForm1.DeleteTrayIcon(n: integer);
var
icondata: TNotifyIconData;
begin
// заполним структуру nidata,
// строка которой определяют значок
// на System Tray
with icondata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uId := n;
end;
Shell_NotifyIcon(NIM_DELETE, @icondata);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// установить будильник
AlarmHour := StrToInt(Label3.Caption);
AlarmMin := StrToInt(Label4.Caption);
AlarmSet := true;
CreateTrayIcon(1,'Будильник '+
Label3.Caption+':'+Label4.Caption); // поместить картинку в System Tray
//c подсказкой о времени срабатывания будильника
Form1.Hide;
end;
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
end
else
// окно программы на экране: мигание двоеточия
Label2.Visible := Not(Label2.Visible);
end;
// определяет звук будильника
procedure TForm1.SetSound;
var
pWinDir: PChar; // указатель на nul terminated строку
begin
// создадим компонент MediaPlayer
MediaPlayer := TMediaPlayer.Create(Form1);
MediaPlayer.ParentWindow := Form1.Handle;
MediaPlayer.Visible := False;
// Cтандартные wav-файлы находятся в каталоге .\Windows\media,
// Получить имя каталога Windows
GetMem(pWinDir,80); // выделить память для строки
GetWindowsDirectory(pWinDir,80); // получить каталог Windows
MediaPlayer.FileName := pWinDir + '\media\chord.wav';
try
MediaPlayer.Open;
except
on EMCIDeviceError do ;
end;
end;
// изменяем время сигнала будильника - часы
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;
end.
3. Описание программы
Программа разработана в среде Delphi 7.0 и функционирует в ОС Windows. Функциональное назначение программы заключается в передаче или напоминании оператору в определенное время определенной информации.
Программа представляет собой один модуль Unit1.pas, который представляет собой набор процедур и обработчиков событий, из которых вызываются описанные процедуры.
При работе программы используется персональный компьютер с установленной на нем ОС Windows.
Входными данными при работе с программой являются введенные оператором с клавиатуры значения часов и минут будильника и необходимое сообщение.
4. Тестирование программы
Приведем контрольный пример работы программы.
Убедимся в наличии файла “.\media\chord.wav” в директории Windows. Если такого звукового файла нет, то копируем туда файл со сменного носителя, на котором находится программа “Будильник”.
Запускаем файл Project1.exe. В полях ввода часов и минут вводим время, на 5 минут большее текущего. Вводим сообщение, например, “Вставаааай!”, которое, к примеру, означает, что оператору необходимо подняться и уйти. Жмем кнопку “Ok”. Программа сворачивается в трей и работает в фоновом режиме. По прошествии 5 минут программа выдает сообщение введенным с текстом, в данном случае - “Вставаааай”, сопровождающееся воспроизведением звукового файла chord.wav.
По окончании работы закрываем окно программы.
Заключение
Среда разработки приложений Deplhi позволяет создавать полноценные приложения, работающие в ОС Windows.
Разработанная программа “Будильник” показывает эффективность использования языков программирования и, в частности, Delphi 7.0 для создания приложений, необходимых человеку в повседневной жизни.
Список использованных источников
1. Фаронов В. Delphi 7. Учебный курс / В. Фаронов. - М.: Нолидж, 2003. - 580 с.
2. Культин Н. Delphi 7. Основы программирования в Delphi 7 / Н. Культин. - СПб.: БХВ-Петербург, 2003. - 480 с.
3. Вальвачев А.Н., Сурков К.А., Сурков Д.А., Четырько Ю.М. Программирование на языке Delphi. Глава 7. Проект приложения. - [Электронный ресурс] - Режим доступа: http://www.interface.ru/home.asp?artId=6678
Размещено на Allbest.ru
Подобные документы
Изучение основ программирования и создание полноценного приложения в среде программирования Delphi. Разработка эскизного и технического проектов программы. Внедрение выполнения программы. Разработка рабочего проекта, спецификация и текст программы.
курсовая работа [560,1 K], добавлен 18.07.2012Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [159,8 K], добавлен 26.01.2010Разработка эскизного и технического проектов компьютерной игры "Скачки". Назначение и область применения программы. Выбор состава технических и программных средств. Составление текста программы, ее спецификация, тестирование и условия выполнения.
курсовая работа [681,4 K], добавлен 18.10.2014Разработка эскизного и технического проектов программы, моделирующей игру "Кости". Постановка задачи, описание алгоритма; написание программы, организация входных и выходных данных; выбор программных средств; спецификация, текст, условия выполнения.
курсовая работа [93,8 K], добавлен 11.02.2012Разработка эскизного и технического проекта программы игры "Собери картинку". Назначение и область применения, основные технические характеристики. Разработка рабочего проекта, разработка и спецификация программы игры. Описание и тестирование программы.
курсовая работа [22,6 K], добавлен 10.06.2010Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [700,6 K], добавлен 26.01.2010Операции реляционной алгебры. Программы построения плана выполнения запроса. Разработка обучающей программы запросов с использованием реляционных операций. Проектирование программы обучения реляционной алгебре. Требования к программной документации.
курсовая работа [56,0 K], добавлен 25.11.2010Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование.
курсовая работа [1,3 M], добавлен 15.11.2009Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.
курсовая работа [563,7 K], добавлен 15.07.2012Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.
лабораторная работа [43,1 K], добавлен 21.07.2012