Помощь в написании студенческих работ
Антистрессовый сервис

Разработка алгоритма программы «Таймер» на языке программирования C++

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Платформа RAD Studio DataSnap® и драйверы доступа к данным dbExpress™ позволяют создать одну систему и с ее помощью легко получать доступ к различным источникам данных. При этом обеспечивается поддержка специфических функций баз данных разных поставщиков без ухудшения их производительности и управляемости. В то время как другие средства быстрой разработки рассчитаны на определенную базу данных… Читать ещё >

Разработка алгоритма программы «Таймер» на языке программирования C++ (реферат, курсовая, диплом, контрольная)

Департамент образования и науки Приморского края Краевое государственное бюджетное образовательное учреждение среднего профессионального образования

«Находкинский государственный гуманитарно-политехнический колледж»

КУРСОВАЯ РАБОТА (ПРОЕКТ) По дисциплине: Системное программирования На тему: «Разработка алгоритма программы «Таймер» на языке программирования C++

Студента Соловьева Евгения Андреевича Группа 731 специальность 230 115 Программирование в компьютерных системах Находка 2013

Введение

Раздел 1. Теоретическая часть

1.1 Язык программирование C++

1.2 Среда программирования Embarcadero RAD Studio

Раздел 2. Практическая часть

2.1 Создание окна, которое отображает системную дату и время

2.2 Разработка приложения таймер с функциями

2.2.1 Выполнение выбранного действия в определенный промежуток времени заданный пользователем

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

3. Руководство программиста

4. Руководство пользователя

Заключение

Список использованных источников

Приложение А. Программный Листинг

Введение

В современном мире язык программирования Си (C++) широко используется для разработки программного обеспечения, а также это язык программирования высокого уровня, который хорошо известный своей эффективностью, экономичностью, и переносимостью. Ведь первые Операционные системы были написаны именно на языке Си. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр).

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

Достижение цели обеспечивается решением следующей задачи:

Разработка приложения «Таймер» при помощи динамических библиотек С++

Использование полученных знаний на лекционном курсе

Раздел 1. Теоретическая часть

1.1 Язык программирование C++

Для разработки программы применялся язык программирования C++ .

Язык программирования С++ был разработан на основе языка Си Бьярном Страуструпом (Bjarne Stroustrup) и вышел за пределы его исследовательской группы в начале 80-х годов. Язык С++ является надмножеством языка Си, поэтому программы, написанные на языке Си могут обрабатываться компилятором языка С++. В программах на языке С++ можно использовать тексты на языке С и обращаться к библиотечным функциям языка Си. Язык С++ был создан с учетом следующих целей: улучшить язык Си, поддержать абстракцию данных и обеспечить объектно-ориентированное программирование.

Объектно-ориентированное программирование (ООП) — это новый подход к созданию программ. ООП аккумулирует лучшие идеи, воплощенные в структурном и модульном программировании, и сочетает их с новыми мощными концепциями, которые позволяют оптимально организовывать программы. ООП позволяет разложить проблему на составные части наиболее естественным способом с учетом иерархии взаимосвязей. Каждая часть становится самостоятельным объектом, содержащим свои собственные данные, операции и функции, которые относятся к этому объекту. В результате процесс составления программ упрощается и программист получает возможность оперировать с большими по объему программами. Одна из главных особенностей ООП — это возможность определять новые типы данных так, что их использование ничем не будет отличаться от использования встроенных в язык типов данных. Новые типы данных должны в большей мере соответствовать понятиям той прикладной области, для которой разрабатывается программа, чем встроенные типы, ориентированные на архитектуру компьютера.

Рассмотрим достоинства языка программирования C++:

Высокая совместимость с языком Си Поддержка различных стилей программирования Вычислительная производительность Недостатки:

Синтаксис, провоцирующий ошибки Некоторые преобразования типов неинтуитивны Плохая поддержка модульности Основные среды языка C++: Visual C++, C++ Builder, Borland C++, Embarcadero RAD Studio.

Таким образом, для разработки программы была выбрана среда программирования Embarcadero RAD Studio. Embarcadero RAD Studio была выбрана последующим возможностям:

подключение к локальным базам данных InterBase®, Blackfish™ SQL и MySQL в Delphi и C++Builder;

подключение к базам данных в VisualStudio с помощью ADO.NET, включая подключение к локальным базам данных InterBase и Blackfish в DelphiPrism;

развертывание Blackfish SQL в системах с одним пользователем и размером базы данных 512 МБ;

веб-библиотеку VCL с ограничением числа подключений (не более пяти);

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

визуализацию кода с использованием UML, упрощающую анализ исходного кода благодаря визуальному представлению.

1.2 Среда программирования Embarcadero RAD Studio

Embarcadero® RAD Studio 2010 — это комплексное решение для быстрой разработки приложений Windows®, .NET, веб-приложений и приложений баз данных. Оно включает в себя Delphi®, C++Builder® и Delphi ®Prism™, позволяя создавать приложения для различных платформ Windows и баз данных до 5 раз быстрее. Инструменты RAD Studio значительно ускоряют создание приложений для настольных компьютеров, рабочих станций, сенсорных дисплеев, информационных терминалов и Интернета, поэтому их использует уже более 2 миллионов разработчиков. В состав этих средств входят быстрые компиляторы, визуальная среда для разработки приложений с пользовательским интерфейсом, платформа визуальных компонентов (VCL), а также обширные возможности для подключения к базам данных и службам Также RAD Studio работает со всеми типами баз данных, архитектур и протоколов.

Платформа RAD Studio DataSnap® и драйверы доступа к данным dbExpress™ позволяют создать одну систему и с ее помощью легко получать доступ к различным источникам данных. При этом обеспечивается поддержка специфических функций баз данных разных поставщиков без ухудшения их производительности и управляемости. В то время как другие средства быстрой разработки рассчитаны на определенную базу данных или архитектуру, либо используют «универсальные» методы подключения к данным, которые ограничивают производительность и возможности управления, открытая среда RAD Studio обладает гибкостью и эффективностью, необходимыми для создания высококачественных приложений.

Основные возможности для разработки приложений Windows:

Интегрированная среда разработки Delphi и C++Builder с функцией перетаскивания мышью Более 250 компонентов в VCL (Библиотека визуальных компонеентов (Visual Component Library) — объектно-ориентированная библиотека) Встроенная поддержка касаний и жестов (более 30 готовых жестов)

dbExpress с поддержкой 9 основных баз данных, включая InterBase®

Многоуровневое промежуточное ПО DataSnap с поддержкой JSON, REST, HTTP, COM и XML

Возможность отладки многопоточных приложений

UML/аудит кода и учет показателей Единая система для работы с Windows 2000, Windows Xp, Windows Vista и Windows 7

Основные возможности для разработки приложений .NET:

Язык программирования Delphi Prism для .NET

Включена интегрированная среда разработки на основе Visual Studio либо установка в Visual Studio

Поддержка новейших технологий .NET

Стандартное подключение к базам данных с помощью ADO.NET, платформа dbExpress для баз данных InterBase и Blackfish SQL

Разработка клиентов DataSnap .NET

Разработка веб-приложений с помощью ASP.NET

Использование Mono с ОС Windows, Linux и Mac OS X

Раздел 2. Практическая часть

2.1 Создание окна, которое отображает системную дату и время Для создания этого окна использовались компоненты GroupBox и Label.

Рисунок 2.1 Окно, отображающее системную дату и время Листинг 2.1 Отображение текущей даты и время

void __fastcall TForm1: Timer1Timer (TObject *Sender)

{

Label2->Caption = TimeToStr (Time ()); // показать текущее время

Label5->Caption = DateToStr (Now ()); //показать дату

if (DayOfWeek (Now ()) == 1) {Label7->Caption= «Воскресенье» ;}

if (DayOfWeek (Now ()) == 2) {Label7->Caption = «Понедельник» ;}

if (DayOfWeek (Now ()) == 3) {Label7->Caption = «Вторник» ;}

if (DayOfWeek (Now ()) == 4) {Label7->Caption = «Среда» ;}

if (DayOfWeek (Now ()) == 5) {Label7->Caption = «Четверг» ;}

if (DayOfWeek (Now ()) == 6) {Label7->Caption = «Пятница» ;}

if (DayOfWeek (Now ()) == 7) {Label7->Caption = «Суббота» ;}

2.2 Разработка приложения таймер с функциями

2.2.1 Выполнение выбранного действия в определенный промежуток времени заданный пользователем Для разработки окна этой функции использовались компоненты GroupBox, button, label и timepicker. В этой функции задавался определенный промежуток времени и выбиралось одно из представленных действий (рисунок 2.2.1). После того как системное время совпадало с заданным, программа выполняла выбранное действие и издавала звуковой сигнал.

Рисунок 2.2.1 Окно в котором выбирается действие и задается время Листинг 2.2.1 Выполнение выбранного действия в определенный промежуток времени заданный пользователем

oid __fastcall TForm1: Timer3Timer (TObject *Sender)

{

iHours=StrToInt (FormatDateTime («hh», Time ()));

iMinutes=StrToInt (FormatDateTime («nn», Time ()));

iSeconds=StrToInt (FormatDateTime («ss», Time ()));

// …получим текущее время системы …

iAlarmHours=StrToInt (FormatDateTime («hh», Form1->timepicker->Time));

iAlarmMinutes=StrToInt (FormatDateTime («nn», Form1->timepicker->Time));

iAlarmSeconds=StrToInt (FormatDateTime («ss», Form1->timepicker->Time));

// Время срабатывания будильника, которое задал пользователь

if (Button2->Enabled == false) { //Если ктопка «Старт» не видимая, то

if (iHours == iAlarmHours &&

iMinutes == iAlarmMinutes &&

iSeconds == iAlarmSeconds)

{ // и если оно совпало с заданным временем пользователем…

MediaPlayer1->Play (); // проигрываем мелодию

switch (RadioGroup1->ItemIndex) {

case 0: {ShellExecute (NULL, «open», «mspaint.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 1: {ShellExecute (NULL, «open», «notepad.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 2: {ShellExecute (NULL, «open», «calc.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 3: {ShellExecute (NULL, «open», «wmplayer.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 4: {ShellExecute (NULL, «open», «http://www.microsoft.com», NULL, NULL, SW_SHOWNORMAL);break;}

}

}

}

}

2.2.2 Выполнение выбранного действия через определенный промежуток времени заданный пользователем В этой функции после того как время на таймере достигало начального значения, программа выполняла выбранное действие и выдавала звуковой сигнал (Рисунок 2.2.2).

Рисунок 2.2.2 Окно в котором выбирается действие и задается время Листинг 2.2.2 Выполнение выбранного действия через определенный промежуток времени заданный пользователем

void __fastcall TForm1: Timer2Timer (TObject *Sender)

{

if (StrToInt (Edit5->Text)>0) {

Edit5->Text = IntToStr (StrToInt (Edit5->Text)-1);

}

if (Edit5->Text <= 0 &&

StrToInt (Edit4->Text)>0)

{

Edit4->Text = StrToInt (Edit4->Text)-1; //добавлено StrToInt — было: «59» is not valid date and time

Edit5->Text = 59; // Поле «секунды» — без изменений

}

// Обратый отсчет, и проверка значения в «Еdit4»

if (Edit4->Text <= 0 &&

StrToInt (Edit3->Text)>0)

{

Edit3->Text = StrToInt (Edit3->Text)-1; //добавлено StrToInt // Поле «секунды»

Edit4->Text = 60; // было 59 — но 1 час = 60 минут, так и стартуем // Поле «минуты»

}

if (Edit3->Text == 0 && // Поле «секунды»

Edit4->Text == 0 && // Поле «минуты»

Edit5->Text == 0) // Поле «секунды»

{ // если значения в таймере равны 0, то

Timer2->Enabled=false;

MediaPlayer1->Play (); // проигрываем мелодию

switch (RadioGroup1->ItemIndex) {

case 0: {ShellExecute (NULL, «open», «mspaint.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 1: {ShellExecute (NULL, «open», «notepad.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 2: {ShellExecute (NULL, «open», «calc.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 3: {ShellExecute (NULL, «open», «wmplayer.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 4: {ShellExecute (NULL, «open», «http://www.microsoft.com», NULL, NULL, SW_SHOWNORMAL);break;}

Для разработки окна этой функции использовались компоненты GroupBox, edit, button, label и UpDown.

3. Руководство программиста Листинг 3.1 Создание окна

void __fastcall TForm1: FormCreate (TObject *Sender)

{

Form1->Position = poDesktopCenter;

Form1->Width = 265;

MediaPlayer1->Visible = false; // скрываем плеер

MediaPlayer1->FileName = «alarm.mp3»; // указываем плееру файл

MediaPlayer1->Open (); // и открываем его для проигрывания

}

В данной функции можно изменить позицию, длину и звуковой сигнал программы.

Смена позиции: Form->Positon

Смена длины: Form->Width

Смена звукового сигнала: MediaPlayer1->FileName

Листинг 3.2 Выполнение выбранного действия в заданный промежуток времени

void __fastcall TForm1: Timer3Timer (TObject *Sender)

{

iHours=StrToInt (FormatDateTime («hh», Time ()));

iMinutes=StrToInt (FormatDateTime («nn», Time ()));

iSeconds=StrToInt (FormatDateTime («ss», Time ()));

// …получим текущее время системы …

iAlarmHours=StrToInt (FormatDateTime («hh», Form1->timepicker->Time));

iAlarmMinutes=StrToInt (FormatDateTime («nn», Form1->timepicker->Time));

iAlarmSeconds=StrToInt (FormatDateTime («ss», Form1->timepicker->Time));

// Время срабатывания будильника, которое задал пользователь

if (Button2->Enabled == false) { //Если кнопка «Старт» не видимая, то

if (iHours == iAlarmHours &&

iMinutes == iAlarmMinutes &&

iSeconds == iAlarmSeconds)

{ // и если оно совпало с заданным временем пользователем…

MediaPlayer1->Play (); // проигрываем мелодию

switch (RadioGroup1->ItemIndex) {

case 0: {ShellExecute (NULL, «open», «mspaint.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 1: {ShellExecute (NULL, «open», «notepad.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 2: {ShellExecute (NULL, «open», «calc.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 3: {ShellExecute (NULL, «open», «wmplayer.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 4: {ShellExecute (NULL, «open», «http://www.microsoft.com», NULL, NULL, SW_SHOWNORMAL);break;}

}

}

}

}

В данной функции можно изменить какую программу будет запускать таймер в определенный промежуток времени заданный пользователем.

Чтобы изменить названия действий нужно зайти в RadioGroup->Properties->Items и открыть Script List Editor при нажатии на троеточие.

Листинг 3.3 Выполнение выбранного действия через определенный промежуток времени

void __fastcall TForm1: Timer2Timer (TObject *Sender)

{

if (StrToInt (Edit5->Text)>0) {

Edit5->Text = IntToStr (StrToInt (Edit5->Text)-1);

}

if (Edit5->Text <= 0 &&

StrToInt (Edit4->Text)>0)

{

Edit4->Text = StrToInt (Edit4->Text)-1; //добавлено StrToInt — было: «59» is not valid date and time

Edit5->Text = 59; // Поле «секунды» — без изменений

}

// Обратный отсчет, и проверка значения в «Еdit4»

if (Edit4->Text <= 0 &&

StrToInt (Edit3->Text)>0)

{

Edit3->Text = StrToInt (Edit3->Text)-1; //добавлено StrToInt // Поле «секунды»

Edit4->Text = 60; // было 59 — но 1 час = 60 минут, так и стартуем // Поле «минуты»

}

if (Edit3->Text == 0 && // Поле «секунды»

Edit4->Text == 0 && // Поле «минуты»

Edit5->Text == 0) // Поле «секунды»

{ // если значения в таймере равны 0, то

Timer2->Enabled=false;

MediaPlayer1->Play (); // проигрываем мелодию

switch (RadioGroup1->ItemIndex) {

case 0: {ShellExecute (NULL, «open», «mspaint.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 1: {ShellExecute (NULL, «open», «notepad.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 2: {ShellExecute (NULL, «open», «calc.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 3: {ShellExecute (NULL, «open», «wmplayer.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 4: {ShellExecute (NULL, «open», «http://www.microsoft.com», NULL, NULL, SW_SHOWNORMAL);break;}

}

}

}

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

4. Руководство пользователя алгоритм программа таймер Минимальные системные требования:

— монитор с минимальным разрешением экрана 800 на 600 пикселей;

— наличие клавиатуры;

— среда MS-DOS, Windows 98/200/ME/XP/Vista/7/8

— процессор тактовой частотой не ниже 200МГц;

— видеокарта;

— минимальный объем оперативной памяти — 32 МБ.

Запуск приложения происходит при двойном нажатии левой кнопки мыши на ярлыке игры с расширением EXE.

Для того чтобы программа выполнила нужное действие в определенный промежуток времени, нужно выбрать действие нажатием левой кнопки мыши и задать время в которое будет выполняться действие, как это показано на Рисунке 3.1. И нажать кнопку старт.

Рисунок 3.1 Окно в котором выбрали действия и задали время, А также если пользователь желает, чтобы действие выполнилось через определенное время. То нужно выбрать действие и задать время, через которое будет запускаться, как это показано на Рисунке 3.2

Рисунок 3.2 Окно в котором выбрали действия и задали время

Заключение

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

В целом данная работа помогла лучше освоить язык С++ и улучшить свои навыки программирования.

Список использованных источников

 Б. Пахомов — C/C++ и MS Visual C++ 2008 для начинающих; БХВ-Петербург; 2008 — 624с Герберт Шилдт — C++ from the Ground Up; Вильямс; 2008 — 624 с Давыдов В. Г. Visual C++. Разработка Windows-приложений с помощью MFC и API-функций. — СПб: БХВ-Петербург, 2008.

Дж. Коплиен — Программирование на C++; Питер; 2005 — 408 с Дж. Либерти — Освой самостоятельно C++; 2099 — 820 с Дьюхерст С. С. — C++. Священные знания. 2-е издание, исправленное; 2012 — 240 с

Зиборов В. В — MS Visual C++ 2010 в среде .NET; 2012 — 320 с Лаптев В. В. — C++. Объектно-ориентированное программирование; Питер; 2008 — 464 с Макс Шлее — Профессиональное программирование на C++; БХВ — Петербург; 2009 — 896с Мэтью Уилсон — Расширение библиотеки STL для С++; ДМК Пресс, Б-П; 2008 — 608 с Н. А. Литвиненко — Технология программирования на C++. Win32 API-приложения; БХВ-Петербург — 2010, 288с Паола Франка — С++. Учебный курс; Питер; 2012 — 496 с Паола Франка — С++. Учебный курс; Питер; 2012 — 496 с Пахомов Б — Самоучитель C/C++ и C++ Builder; БХВ-Петербург; 2008 — 670 с Прохоренок Н. А. — Программирование на C++ в VisualStudio 2010 Express; 2010 — 229 с Роберт Лафоре — Объектно — ориентированное программирование в С++; Питер; 2011 — 928 с

Роберт Лафоре — Объектное — ориентированное программирование в С++; Питер; 2011 — 928 с

Саммерфилд М. — Qt. Профессиональное программирование. Разработка кроссплатформенных приложений на C++; 2011 — 560 с

Степаненко О.Е. — Visual C++/NET. Классика программирования; 2010 — 768 с

Стефан Рэнди Дэвис — С++ для «чайников»; Диалектика, Вильямс; 2009 — 336 с Стивен Прата — Язык программирования С++. Леции и упражнения; Вильямс; 2012 — 1248 с

Стивен Прата — Язык программирования С++. Леции и упражнения; Вильямс; 2012 — 1248 с

Страуструп Б — Язык программирования C++; Бином — 2011, 1136

Уоллес Вонг — Основы программирования для «чайников»; М. — ООО «И.Д. Вильямс»; 2008 — 336 с Федоренко Ю. — Алгоритмы и программы на C++ Builder; 2010 — 544 с

Приложение А. Программный Листинг

Project1.cpp

//—————————————————————————————————————;

#include

#pragma hdrstop

//—————————————————————————————————————;

USEFORM («Unit1.cpp», Form1);

//—————————————————————————————————————;

WINAPI Win Main (HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize ();

Application->CreateForm (__classid (TForm1), &Form1);

Application->Run ();

}

catch (Exception &exception)

{

Application->ShowException (&exception);

}

catch (…)

{

try

{

throw Exception (««);

}

catch (Exception &exception)

{

Application->ShowException (&exception);

}

}

return 0;

}

//—————————————————————————————————————;

Uni1.cpp

//—————————————————————————————————————;

#include

#include

#include

#pragma hdrstop

#include «Unit1.h»

//—————————————————————————————————————;

#pragma package (smart_init)

#pragma resource «*.dfm»

TForm1 *Form1;

boolbIsTimerOn; // Таймер включён

intiHours; // Текущий час.

intiMinutes; // Текущая минута.

intiSeconds; // Текущая секунда

intiAlarmHours; // Час оповещения.

intiAlarmMinutes; // Минута оповещения.

intiAlarmSeconds; // Секунда оповещения

//—————————————————————————————————————;

__fastcall TForm1: TForm1(TComponent* Owner)

: TForm (Owner)

{

}

//—————————————————————————————————————;

void __fastcall TForm1: FormCreate (TObject *Sender)

{

Form1->Position = poDesktopCenter;

Form1->Width = 265;

MediaPlayer1->Visible = false; // скрываем плеер

MediaPlayer1->FileName = «alarm.mp3»; // указываем плееру файл

MediaPlayer1->Open (); // и открываем его для проигрывания

}

//—————————————————————————————————————;

void __fastcall TForm1: Button2Click (TObject *Sender)

{

Button2->Enabled=false; // Кнопка «Старт» невидима

}

//—————————————————————————————————————;

void __fastcall TForm1: Button3Click (TObject *Sender)

{

bIsTimerOn=false; // Выключить будильник

Button2->Enabled=true;

timepicker->Time=StrToTime («0:00:00»); // Сброс на ноль.

}

//—————————————————————————————————————;

void __fastcall TForm1: Timer3Timer (TObject *Sender)

{

iHours=StrToInt (FormatDateTime («hh», Time ()));

iMinutes=StrToInt (FormatDateTime («nn», Time ()));

iSeconds=StrToInt (FormatDateTime («ss», Time ()));

// …получим текущее время системы …

iAlarmHours=StrToInt (FormatDateTime («hh», Form1->timepicker->Time));

iAlarmMinutes=StrToInt (FormatDateTime («nn», Form1->timepicker->Time));

iAlarmSeconds=StrToInt (FormatDateTime («ss», Form1->timepicker->Time));

// Время срабатывания срабатывания будильника, которое задал пользователь

if (Button2->Enabled == false) { //Если кнопка «Старт» не видимая, то

if (iHours == iAlarmHours&&

iMinutes == iAlarmMinutes&&

iSeconds == iAlarmSeconds)

{ // и если оно совпало с заданным временем пользователем…

MediaPlayer1->Play (); // проигрываем мелодию

switch (RadioGroup1->ItemIndex) {

case 0: {ShellExecute (NULL, «open», «mspaint.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 1: {ShellExecute (NULL, «open», «notepad.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 2: {ShellExecute (NULL, «open», «calc.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 3: {ShellExecute (NULL, «open», «wmplayer.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 4: {ShellExecute (NULL, «open», «http://www.microsoft.com», NULL, NULL, SW_SHOWNORMAL);break;}

}

}

}

}

//—————————————————————————————————————;

void __fastcall TForm1: Button1Click (TObject *Sender)

{

exit (0); // Выход с программы

}

//—————————————————————————————————————;

void __fastcall TForm1: Timer1Timer (TObject *Sender)

{

Label2->Caption = TimeToStr (Time ()); // показать текущее время

Label5->Caption = DateToStr (Now ()); //показать дату

if (DayOfWeek (Now ()) == 1) {Label7->Caption= «Воскресенье» ;}

if (DayOfWeek (Now ()) == 2) {Label7->Caption = «Понедельник» ;}

if (DayOfWeek (Now ()) == 3) {Label7->Caption = «Вторник» ;}

if (DayOfWeek (Now ()) == 4) {Label7->Caption = «Среда» ;}

if (DayOfWeek (Now ()) == 5) {Label7->Caption = «Четверг» ;}

if (DayOfWeek (Now ()) == 6) {Label7->Caption = «Пятница» ;}

if (DayOfWeek (Now ()) == 7) {Label7->Caption = «Суббота» ;}

}

//—————————————————————————————————————;

void __fastcall TForm1: UpDown3Click (TObject *Sender, TUDBtnType Button)

{

if (Button == Comctrls: btNext) {

Edit3->Text = IntToStr (StrToInt (Edit3->Text)+1);

}

if (Button == Comctrls: btPrev) {

Edit3->Text = IntToStr (StrToInt (Edit3->Text)-1);

// Изменение значения в поле «Edit1»

}

}

//—————————————————————————————————————;

void __fastcall TForm1: UpDown4Click (TObject *Sender, TUDBtnType Button)

{

if (Button == Comctrls: btNext) {

Edit4->Text = IntToStr (StrToInt (Edit4->Text)+1);

}

if (Button == Comctrls: btPrev) {

Edit4->Text = IntToStr (StrToInt (Edit4->Text)-1);

}

}

//—————————————————————————————————————;

void __fastcall TForm1: UpDown5Click (TObject *Sender, TUDBtnType Button)

{

if (Button == Comctrls: btNext) {

Edit5->Text = IntToStr (StrToInt (Edit5->Text)+1);

}

if (Button == Comctrls: btPrev) {

Edit5->Text = IntToStr (StrToInt (Edit5->Text)-1);

}

}

//—————————————————————————————————————;

void __fastcall TForm1: Timer2Timer (TObject *Sender)

{

if (StrToInt (Edit5->Text)>0) {

Edit5->Text = IntToStr (StrToInt (Edit5->Text)-1);

}

if (Edit5->Text <= 0 &&

StrToInt (Edit4->Text)>0)

{

Edit4->Text = StrToInt (Edit4->Text)-1; //добавлено StrToInt — было: «59» is not valid date and time

Edit5->Text = 59; // Поле «секунды» — без изменений

}

// Обратный отсчет, и проверка значения в «Еdit4»

if (Edit4->Text <= 0 &&

StrToInt (Edit3->Text)>0)

{

Edit3->Text = StrToInt (Edit3->Text)-1; //добавлено StrToInt // Поле «секунды»

Edit4->Text = 60; // было 59 — но 1 час = 60 минут, так и стартуем // Поле «минуты»

}

if (Edit3->Text == 0 && // Поле «секунды»

Edit4->Text == 0 && // Поле «минуты»

Edit5->Text == 0) // Поле «секунды»

{ // если значения в таймере равны 0, то

Timer2->Enabled=false;

MediaPlayer1->Play (); // проигрываем мелодию

switch (RadioGroup1->ItemIndex) {

case 0: {ShellExecute (NULL, «open», «mspaint.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 1: {ShellExecute (NULL, «open», «notepad.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 2: {ShellExecute (NULL, «open», «calc.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 3: {ShellExecute (NULL, «open», «wmplayer.exe», NULL, NULL, SW_SHOWNORMAL);break;}

case 4: {ShellExecute (NULL, «open», «http://www.microsoft.com», NULL, NULL, SW_SHOWNORMAL);break;}

}

}

}

//—————————————————————————————————————;

void __fastcall TForm1: Button4Click (TObject *Sender)

{

Timer2->Enabled = true; // Включить второй таймер

}

//—————————————————————————————————————;

void __fastcall TForm1: Button5Click (TObject *Sender)

{

Timer2->Enabled = false; //Выключить второй таймер

Edit5->Text = «0»; // Значению в поле «секунды» присвоить 0

Edit4->Text = «0»; // Значению в поле «минуты» присвоить 0

Edit3->Text = «0»; // Значению в поле «часы» присвоить 0

}

//—————————————————————————————————————;

Unit1.h

//—————————————————————————————————————;

#ifndef Unit1H

#define Unit1H

//—————————————————————————————————————;

#include

#include

#include

#include

#include

#include

//—————————————————————————————————————;

class TForm1: public TForm

{

__published:// IDE-managed Components

TButton *Button1;

TGroupBox *GroupBox1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TLabel *Label6;

TLabel *Label7;

TGroupBox *GroupBox2;

TLabel *Label8;

TButton *Button2;

TButton *Button3;

TDateTimePicker *timepicker;

TGroupBox *GroupBox3;

TLabel *Label9;

TButton *Button4;

TButton *Button5;

TRadioGroup *RadioGroup1;

TTimer *Timer1;

TTimer *Timer2;

TTimer *Timer3;

TEdit *Edit3;

TUpDown *UpDown3;

TEdit *Edit4;

TUpDown *UpDown4;

TEdit *Edit5;

TUpDown *UpDown5;

TMediaPlayer *MediaPlayer1;

void __fastcall Button2Click (TObject *Sender);

void __fastcall Button3Click (TObject *Sender);

void __fastcall Timer3Timer (TObject *Sender);

void __fastcall Button1Click (TObject *Sender);

void __fastcall Timer1Timer (TObject *Sender);

void __fastcall Timer2Timer (TObject *Sender);

void __fastcall UpDown3Click (TObject *Sender, TUDBtnType Button);

void __fastcall UpDown4Click (TObject *Sender, TUDBtnType Button);

void __fastcall UpDown5Click (TObject *Sender, TUDBtnType Button);

void __fastcall Button4Click (TObject *Sender);

void __fastcall Button5Click (TObject *Sender);

void __fastcallFormCreate (TObject *Sender);

private:// User declarations

public:// User declarations

__fastcallTForm1(TComponent* Owner);

};

//—————————————————————————————————————;

extern PACKAGE TForm1 *Form1;

//—————————————————————————————————————;

#endif

Показать весь текст
Заполнить форму текущей работой