- •Задание
- •Содержание
- •1. Теоритическая часть
- •1.1 Постановка задач
- •1.2 Выбор среды разработки
- •1.3 Рассмотрение аналоговых продуктов
- •2. Техническая часть
- •2.1 Функциональная спецификация
- •2.2 Технический проект
- •2.3 Отдельные алгоритмы и переменные
- •2.4 Листинг программы
- •2.5 Проектирование интерфейса
- •2.6 Проектирование справки
- •2 .7 Тестирование
- •3.1 Оценка програмного продукта
- •3.2 Оформление документации
- •Проектный, научно-исследовательский и конструкторский институт
- •Испытательный центр «красстрой»
- •Протокол №666
1.3 Рассмотрение аналоговых продуктов
ЧАСЫ РАДАР - часы с дополнительными функциями; поиск файлов, музыки, видео, изображений; управление лотками CD-дисководов; очистка списка недавно
использовавшихся документов. Автозагрузка программы "Часы Радар", полупрозрачность, "прилипание" к краям экрана, возможность смены значка программы в TrayBar.
Будильник с говорящими часами - после установки даты и времени требуется нажать на кнопку пуска - будильник заведен. Можно ввести комментарий. Затем кнопкой отправить будильник в трей. По истечении времени будильник выскочит на стол и будет трезвонить пока не нажмете кнопку останова.
Если время сигнала ожидается не скоро, то будильник можно закрыть - все значения запоминаются в INI файле.
Будильник может сообщать текущее время голосом через заданный интервал времени.
Установка интервала делается в настройках. Есть фиксированные значения: через 1, 5, 10, 30 мин и 1 час, а так же установка любого другого значения.
Голос, произносящий время (типа: три часа одна минута) можно выбирать (пока) из двух возможных.
В системе должен быть установлен кодек для проигрывания MP3.
Установка программы не требуется. Скачать Часы на рабочий стол. Говорящие часы.
AClock призван не только помочь, но еще и не навредить своим присутствием.
В данной версии реализовано:
1. Поддержка тем;
2. Настраиваемая прозрачность;
3. Прозрачность для мыши (при включенной опции кликать можно сквозь часы);
4. Опция «Всегда наверху»;
5. Автозапуск;
6. Тиканье;
7. Включение/выключение обычных стрелок (в редакторе настраивается 2 вида каждой стрелки);
8. Включение/выключение секундной стрелки;
9. Смена надписи;
10. Сохранение текущего состояния (тема, положения и т.д.);
11. Настройка для показа времени другого региона;
12. Добавлена возможность в темах отключать простые стрелки;
13. Добавлена возможность включать/выключать зависимость часовой стрелки от минутной;
14. Добавлена возможность маштабирования;
15. Добавлена возможность выбора хода секундной стрелки (обычный, реалистичный (с подергиванием), плавный);
16. Добавлен режим всегда снизу.
Изменения:
1.Заменены все стандартные темы;
Исправления:
1. Исправлен баг приводивший к утечке памяти;
2. Проведена оптимизации работы с памятью, теперь часики вместо 20Mb отъедают всего 400Kb. NEW!!!
В следующих версиях будет добавлено:
1. Будильник;
2. Возможность отображать время других временных зон.
Если Вам понравятся часы, но чего-то, по Вашему мнению, не хватает, напишите нам и мы обязательно добавим это в следующей версии.
В пакет входит:
1. Сами часики
2. Редактор тем
3. 5 Дополнительных тем.
2. Техническая часть
2.1 Функциональная спецификация
2.2 Технический проект
2.3 Отдельные алгоритмы и переменные
Пользователь задаёт время для оповещения, выбирает мелодию звонка и подтверждает операцию. Время пользователь будет выбирать в компоненте TimePicker, о чём его и предупреждает подсказка, а 2 другие операции можно реализовать в обработчике события OnClick кнопки AlarmBttn:
void __fastcall TMainForm::AlarmBttnClick(TObject *Sender)
{
do
{
if(AlarmOpenDialog->Execute()) // Если диалог открытия запущен…
{
MediaPlayer->FileName=AlarmOpenDialog->FileName; // …выберем файл для воспроизведения медиаплейером.
}
if(MediaPlayer->FileName=="") Application->MessageBox("Вы должны выбрать мелодию для оповещения!", "Будильник", MB_OK+MB_ICONWARNING);
}
while(MediaPlayer->FileName=="");
iAlarmHours=StrToInt(FormatDateTime("h", TimePicker->Time));
iAlarmMinutes=StrToInt(FormatDateTime("n", TimePicker->Time));
MediaPlayer->Open();
bIsTimerOn=true; // Таймер будильника запущен.
}
FormatDateTime("h", TimePicker->Time): мы переводим время из свойства TimePicker->Time в «удобоваримую» форму в виде строки. После этого строку преобразуем в целое, воспользовавшись функцией StrToInt, и сохраняем
результат в переменных:
iAlarmHours=StrToInt(FormatDateTime("h", TimePicker->Time));
iAlarmMinutes=StrToInt(FormatDateTime("n", TimePicker->Time));
Теперь нагрузим работой наш бедный таймер, которому каждую секунду (если, конечно запущен будильник bIsTimerOn=true;), помимо отрисовки текущего времени, предстоит сравнивать его с заданным, чтобы решить, не пора ли врубить музыку:
void __fastcall TMainForm::TimerTimer(TObject *Sender)
{
TimePanel->Caption=TimeToStr(Time());
if(bIsTimerOn==true) // Если будильник включён…
{
iHours=StrToInt(FormatDateTime("h", Time()));
iMinutes=StrToInt(FormatDateTime("n", Time())); // …получим текущее время…
if((iHours==iAlarmHours) && (iMinutes>=iAlarmMinutes)) // …и если оно совпало с заданным пользователем…
{
MediaPlayer->Play(); // …играем!
}
if(MediaPlayer->Mode==mpPlaying) bIsTimerOn=false // Если медиаплейер уже играет, то будильник можно выключить.
}
}