Проектирование на языке UML

Курсовая работа
Содержание скрыть

Требуется разработать программное обеспечение встроенного микропроцессора для будильника.

12 : 00),

Управление будильником осуществляется следующими кнопками:

  • кнопкой режима установки времени,
  • кнопкой режима установки времени срабатывания,
  • двумя отдельными кнопками для установки часов и минут,
  • кнопкой сброса сигнала «СБРОС».

На будильнике имеется переключатель режима работы со следующими положениями: «ВЫКЛ», «ВКЛ», «РАДИО» и «ТАЙМЕР».

Для установки текущего времени нужно нажать на кнопку режима установки и, при нажатой кнопке, нажимать на кнопки установки часов и минут. При каждом нажатии на кнопки, устанавливаемое значение увеличивается на одну единицу (один час или одну минуту соответственно).

При достижении максимального значения производится сброс. Для установки времени срабатывания будильника нужно нажать на кнопку режима установки времени срабатывания и, держа кнопку нажатой, нажимать на кнопки установки часов и минут. Когда переключатель режима работы находится в положении «ВКЛ», при достижении времени срабатывания происходит подача звукового сигнала. Сигнал можно прервать, нажав на кнопку «СБРОС». При этом сигнал должен быть возобновлен через пять минут. При установке переключателя в положение «ВЫКЛ» звуковой сигнал не подается.

Когда переключатель находится в положении «РАДИО» работает радиоприемник. При переводе переключателя в положение «ТАЙМЕР» включается радиоприемник на тридцать минут, а затем часы переходят в состояние будильника (аналогично положению «ВКЛ»).

При нажатии на кнопку режима установки времени, будильник должен отображать время срабатывания.

1) Программа должна отображать текущее время (часы и минуты, например 12:00), двоеточие между числом часов и числом минут зажигается и гаснет с интервалом в полсекунды.

2) При изменении положения переключателя режима работы программа должна переходить в разные режимы работы будильника (ВЫКЛ, ВКЛ, РАДИО, ТАЙМЕР)

3) В режиме ВЫКЛ функция будильник выключена, радио не работает, сигнал выключается.

4) В режиме ВКЛ функция будильника включена, радио не работает.

5) В режиме РАДИО функция будильника выключена, радио работает.

6) В режиме ТАЙМЕР первые 30 минут радио включено, будильника выключен. По истечении 30 минут радио выключается, включается будильник.

7) Программа должна позволять устанавливать текущее время и время срабатывания будильника. При совпадении времени срабатывания будильника и текущего времени должен звучать сигнал.

8 стр., 3693 слов

Автоматическая установка газового пожаротушения

... Модули и аппаратура автоматических установок газового пожаротушения 2. Основные проектные решения 2.1 Назначение установки Модульная автоматическая установка газового пожаротушения предназначена для обнаружения и ... приборе управления газовым пожаротушением выдаются звуковой и световой сигналы. При срабатывании одного пожарного извещателя - сигнал «ВНИМАНИЕ», при срабатывании второго пожарного ...

8) При срабатывании будильника по нажатию кнопки СБРОС программа должна отключать сигнал на 5 минут.

Прецеденты, представленные на, Вариант использования “Сброс сигнала”

Краткое описание:

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

Основной поток событий:

Вариант использования начинает выполняться при нажатии кнопки СБРОС.

1) Отключается сигнал.

2) Запускается таймер.

Альтернативный поток событий:

Сигнала нет:

Нажатие кнопки будет проигнорировано.

Предусловия:

Сигнал должен быть подан.

Постусловия:

Если вариант использования выполнен успешно, то сигнал выключиться, блок управления своего состояния не изменит.

Вариант использования “Настройка времени у часов”

Краткое описание:

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

Основной поток событий:

Вариант использования начинает выполняться при нажатии кнопки режима установки текущего времени.

Альтернативный поток событий:

Уже включен режим настройки текущего времени:

  • Выйти из режима установки текущего времени

Вариант использования “Настройка часов”

Краткое описание:

Активируется при нажатии кнопки ЧАС. Увеличивает текущее значение часа на 1.

Основной поток событий:

Вариант использования начинает выполняться при нажатии кнопки режима установки текущего времени и последующего нажатия кнопки ЧАС.

  • Изменить текущее время на 1 час.

Альтернативный поток событий:

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

  • Изменить время срабатывания на 1 час.

Вариант использования “Настройка минут”

Краткое описание:

Активируется при нажатии кнопки МИН. Увеличивает текущее значение минут на 1.

Основной поток событий:

Вариант использования начинает выполняться при нажатии кнопки режима установки текущего времени и последующего нажатия кнопки МИН.

  • Изменить текущее время на 1 минуту.

Альтернативный поток событий:

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

  • Изменить время срабатывания на 1 минуту.

Вариант использования “Выбор режима работы системы”

Краткое описание:

Активируется переключателем режима работы.

Основной поток событий:

Вариант использования начинает выполняться при выборе режима с помощью переключателя режима работы.

  • Изменяется режим работы

Постусловие:

Программа начинает работать в соответствии с установленным режимом.

Вариант использования “Получение информации о текущем времени”

Краткое описание:

Вывод на экран текущего времени

Вариант использования “Получение услуги будильник”

Краткое описание:

30 стр., 14976 слов

Использование автоматизированных информационных систем в организации ...

... ¾ Разработать алгоритм автоматизации учебного плана с учетом структурных и количественных параметров. Объектом изучения дипломной работы является управление учебным процессом, предметом - использование автоматизированных информационных систем в целях качественной организации учебного процесса. Для достижения ...

Активируется при включенном режиме ВКЛ и ТАЙМЕР.

Основной поток событий:

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

  • Подается сигнал.

Альтернативный поток событий

Прошло 5 минут с момента отключения сигнала кнопкой СБРОС

  • Подается сигнал.

Диаграмма активности

1) Диаграмма активности: Выдача информации о текущем времени

Пользователь будильника запрашивает информацию о текущем времени, система рассчитывает текущее время и возвращает результат пользователю.

2) Диаграмма активности: Сброс сигнала

Пользователь нажимает кнопку СБРОС, система отключает сигнал.

3) Диаграмма активности: Выбор режима работы будильника

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

Установлен режим ВКЛ: система выключает радио и включает функцию будильник.

Установлен режим ВЫКЛ: система выключает радио и выключает функцию будильник.

Установлен режим РАДИО: система включает радио.

Установлен режим ТАЙМЕР: система проверяет прошло ли уже 30 минут в режиме ТАЙМЕР, если да, то выключается радио и включается функция будильник, если нет , то включается радио.

4) Диаграмма активности: Получение услуги будильник

Система проверяет включен ли режим ВКЛ или ТАЙМЕР, далее проверяется совпадает ли время с установленным временем срабатывания будильника. Если да, подается сигнал. Если нет, проверяется прошло ли 5 минут с момента сброса сигнала кнопкой СБРОС. Если да, то также устанавливается сигнал.

5) Диаграмма активности: Настройка времени у часов

Пользователь запрашивает систему на переход в режим настройки времени нажатием кнопки CLOCK. В ответ система переходит в этот режим. Далее пользователь кнопками HOUR и MIN настраивает время, система применяет выбранную настройку. После настройки пользователь посылает запрос на выход из режима настройки нажатием кнопки CLOCK. Система выходит из режима настройки времени.

6) Диаграмма активности: Настройка времени у будильника

Пользователь запрашивает систему на переход в режим настройки времени будильника нажатием кнопки ALARM. В ответ система переходит в этот режим. Далее пользователь кнопками HOUR и MIN настраивает время, система применяет выбранную настройку. После настройки пользователь посылает запрос на выход из режима нажатием кнопки ALARM. Система выходит из режима настройки времени будильника.

Описание модели взаимодействия, представленной на диаграммах последовательности и кооперации

В модели взаимодействия присутствуют объекты:

  • Пользователь будильника: Является пользователем всех функций системы.
  • Processor: Блок управления всей системой, через который происходит взаимодействие с пользователем.
  • Clock: Компонент, в котором хранится текущее время.
  • AlarmClock: Компонент, в котором хранится время срабатывания.

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

1) Диаграмма последовательности Выдача информации о текущем времени.

Пользователь в цикле посылает сообщение о текущем времени, процессор получает из компонента Clock информацию о текущем времени и возвращает пользователю.

2) Диаграмма последовательности Сброс сигнала

Пользователь посылает сообщение о сбросе сигнала, процессор сбрасывает сигнал.

7 стр., 3492 слов

Настройка стилей и шаблонов в WORD

... цифровые данные, то их легко превратить в диаграмму; режим предварительного просмотра позволяет увидеть документ в ... text=white vlink=2031f alink=red> <H2 align=center>Электронный справочник по теме<P> "Настройка стилей и шаблонов в WORD" </P></H2><P> <UL ... Word Стили в Microsoft Word значительно облегчают работу при форматировании документа. Стиль — это именованный ...

3) Диаграмма последовательности Выбор режима работы будильника.

Пользователь посылает сообщение о выбранном режиме, процессор переходит в соответствующий режим.

4) Диаграмма последовательности Получение услуги будильник.

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

5) Диаграмма последовательности Настройка времени у часов.

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

6) Диаграмма последовательности Настройка времени у часов будильника.

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

Описание диаграмм кооперации

1) Диаграмма кооперации Получение услуги будильник

В варианте использования Получение услуги будильник пользователь взаимодействует с объектом Процессор. Процессор, чтобы принять решение, посылает сообщения объектам Clock и AlarmClock.

2) Диаграмма кооперации Настройка времени часов

В варианте использования Настройка времени часов пользователь отправляет сообщения об установке/отключении режима настройки текущего времени и сообщения для установки часов и минут. Процессор также посылает сообщения объекту Clock для установки часов и минут.

3) Диаграмма кооперации Настройка времени будильника

В варианте использования Настройка времени будильника пользователь отправляет сообщения об установке/отключении режима настройки времени будильника и сообщения для установки часов и минут. Процессор также посылает сообщения объекту AlarmClock для установки часов и минут.

4) Диаграмма кооперации Выбор режима работы будильника

Пользователь посылает сообщения о установке выбранного режима процессору.

5) Диаграмма кооперации Выдача информации от текущем времени

Пользователь посылает сообщение о запросе текущего времени. Процессор опрашивает объект Clock о текущем времени и возвращает информацию пользователю.

6) Диаграмма кооперации Сброс сигнала

Пользователь посылает сообщение о сбросе сигнала процессору

Описание модели поведения представленной на диаграммах состояния

Диаграмма состояния Режима работы будильника.

7 стр., 3387 слов

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

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

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

Диаграмма состояния Режимы изменения текущего времени и времени срабатывания будильника.

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

Описание логической структуры системы, представленной на диаграммах классов.

В системе существуют три класса:

Класс Processor управляет логикой работы всей системы.

Атрибуты класса:

signal:Boolean — указывает подается ли сигнал будильника

mode:Integer — хранит текущий режим будильника

reset:Boolean — хранит информацию о сбросе сигнала

editmode:Integer — хранит текущий режим редактирования.

hourToAlarm:Integer

minToAlarm:Integer — таймеры для режима Таймер

hourToReset:Integer

minToReset:Integer — таймеры для сигнала.

Операции класса:

isSignal() -возвращает состояние сигнала

Time() — возвращает информацию для пользователя

Tick() — используется для расчета времени по сигналу внешнего таймера

SetMode(int) — для установки режима работы будильника

EditAlarmClock() — для входа/выхода в/из режим(а) редактирования времени срабатывания будильника

EditClock() — для входа/выхода в/из режим(а) редактирования текущего времени

SetHour() — установка компоненты часа во времени

SetMinute() — установка компоненты минуты во времени

Reset() — сброс сигнала

Класс Clock хранит, модифицирует и возвращает информацию о текущем времени.

Атрибуты класса:

_min:Integer компонента минут во времени

_hour:Integer компонента часов во времени

Операции класса:

SetMinute() увеличивает компоненту минуты в текущем времени на 1

SetHour() увеличивает компоненту часов в текущем времени на 1

Tick() Используется для расчета текущего времени по сигналу внешнего таймера.

GetHour() возвращает компоненту часов

GetMinute() возвращает компоненту минут.

Класс AlarmClock хранит, модифицирует и возвращает информацию о времени срабатывания будильника.

Атрибуты класса:

_min:Integer компонента минут во времени

_hour:Integer компонента часов во времени

Операции класса:

SetMinute() увеличивает компоненту минуты во времени срабатывания будильника на 1

SetHour() увеличивает компоненту часов во времени срабатывания будильника на 1

GetHour() возвращает компоненту часов

GetMinute() возвращает компоненту минут.

Описание физической структуры системы, представленной на диаграммах компонентов.

Система состоит из 4 компонентов.

1) ProgramMain основная программа, в которой создается объект Processor.

2) Processor описывается класс Processor

3) Clock описывает класс Clock, использующийся в Processor

37 стр., 18434 слов

Проектирование Базы Данных для коммерческого предприятия

... примеров приложений нового поколения, которые определяют потребности в новых средствах разработки баз данных и возможностях применения их. Мы рассмотрим кратко пять таких приложений. 1.База ... науках требующих систематического подхода к работе с данными. Дальнейшее развитие компьютерных технологий и компьютеризация общества привела к тому что, базы данных стали разрабатываться практически во всех ...

4) AlarmClock описывает класс AlarmClock, использующийся в Processor

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

Программа, реализующая систему, написана на языке C#.

Определение классов

Класс Processor управляет логикой работы всей системы.

Атрибуты класса:

signal:Boolean — указывает подается ли сигнал будильника

mode:Integer — хранит текущий режим будильника

reset:Boolean — хранит информацию о сбросе сигнала

editmode:Integer — хранит текущий режим редактирования.

hourToAlarm:Integer

minToAlarm:Integer — таймеры для режима Таймер

hourToReset:Integer

minToReset:Integer — таймеры для сигнала.

Операции класса:

isSignal() -возвращает состояние сигнала

Time() — возвращает информацию для пользователя

Tick() — используется для расчета времени по сигналу внешнего таймера

SetMode(int) — для установки режима работы будильника

EditAlarmClock() — для входа/выхода в/из режим(а) редактирования времени срабатывания будильника

EditClock() — для входа/выхода в/из режим(а) редактирования текущего времени

SetHour() — установка компоненты часа во времени

SetMinute() — установка компоненты минуты во времени

Reset() — сброс сигнала

Класс Clock хранит, модифицирует и возвращает информацию о текущем времени.

Атрибуты класса:

_min:Integer компонента минут во времени

_hour:Integer компонента часов во времени

Операции класса:

SetMinute() увеличивает компоненту минуты в текущем времени на 1

SetHour() увеличивает компоненту часов в текущем времени на 1

Tick() Используется для расчета текущего времени по сигналу внешнего таймера.

GetHour() возвращает компоненту часов

GetMinute() возвращает компоненту минут.

Класс AlarmClock хранит, модифицирует и возвращает информацию о времени срабатывания будильника.

Атрибуты класса:

_min:Integer компонента минут во времени

_hour:Integer компонента часов во времени

Операции класса:

SetMinute() увеличивает компоненту минуты во времени срабатывания будильника на 1

SetHour() увеличивает компоненту часов во времени срабатывания будильника на 1

GetHour() возвращает компоненту часов

GetMinute() возвращает компоненту минут.

В качестве пользователя используется форма Windows Forms с соответствующими контролами.

Результаты тестирования

Было установлено текущее время 00:05.

Время срабатывания будильника 00:10.

Когда текущее время установилось в 00:10 стал проигрываться сигнал.

Кнопка СБРОС выключает сигнал. Через 5 минут после нажатия кнопки СБРОС сигнал зазвучал снова. С помощью комбобокса был выбран режим ВЫКЛ.

При выборе режима РАДИО и ТАЙМЕР зажигается надпись Radio On, обозначающее, что включено радио.

Через 30 минут в режиме таймер включился режим ВКЛ.

Заключение

Было разработано программное обеспечение микропроцессора будильника. ПО полностью соответствует требованием, предъявленным в разделе Требования к программе. В дальнейшем возможно развитие ПО, в частности возможно добавить количество звуковых сигналов с возможностью выбора этих сигналов в качестве основного, а также синхронизация текущего времени с серверами времени в сети Интернет.

7 стр., 3211 слов

Разработка программного обеспечения для работы с базой данных ...

... программы. Будет установленна защита от несанкционированного доступа путем установки пароля при старте. Работа с пользователем будет осуществленна при помощи меню, и подсказок. Информационное обеспечение ... нажать “Enter”. Когда пользователь выберет 4 пункт меню “ Выход “ , программа завершит работу и выйдет в операционную систему. Алгоритм решения задачи. Начало программы: Очищаем экран. ...

Список использованной литературы:

[Электронный ресурс]//URL: https://inzhpro.ru/kursovaya/proektirovanie-avtomatizirovannoy-informatsionnoy-sistemyi-posredstvom/

1) Визуальное моделирование с помощью IBM Rational Software Architect и UML. Терри Кватрани, Джим Палистрант. Издательство: КУДИЦ-Пресс, 2007 г.

2) Intuit.ru Курс “Визуальное моделирование в Rational Rose”.

Приложение, Диаграмма Use Case

Приложение 1

Activity diagram

Приложение 2

Приложение 3

Приложение 4

Приложение 5

Приложение 6

Sequence diagram

Приложение 7

Приложение 8

Приложение 9

Приложение 10

Приложение 11 Приложение 12

Collaboration

Приложение 13Приложение 14

Приложение 15Приложение 16Приложение 17Приложение 18

Statechart

Приложение 19 Приложение 20

Class diagram

Приложение 21

Component

Приложение 22

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

Назначение кнопок:

36 стр., 17744 слов

Базовая система ввода-вывода BIOS

... внешних проявлений совместимости, новый BIOS может нести в себе поддержку новых функций процессора (например, возможность блокировки серийного номера процессора) или же возможность настройки ранее недоступных параметров ...

CLOCK – переход в режим настройки часов

ALARM – переход в режим настройки будильника

HOUR – Настройка часа

MIN – Настройка минут

СБРОС – выключение звукового сигнала будильника

Комбобокс – выбор режима работы устройства

Настройка часов.

При помощи кнопки CLOCK переходим в режим настройки часов. Кнопками HOUR и MIN устанавливаем время. Выйти из режима настройки можно повторным нажатием CLOCK.

Настройка будильника.

При помощи кнопки ALARM переходим в режим настройки часов. Кнопками HOUR и MIN устанавливаем время. Выйти из режима настройки можно повторным нажатием ALARM.

Выбор режима.

С помощью переключателя режимов можно выбрать 4 режима.

ВЫКЛ – отключение будильника

ВКЛ – включение будильника

РАДИО – включение радио

ТАЙМЕР – включение радио, по истечении 30 минут радио отключается, включается будильник.

СБРОС

Сигнал будильника выключается кнопкой СБРОС, через 5 минут сигнал повторится. Чтобы сигнал не повторялся нужно переключателем выбрать режим ВЫКЛ.

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

Проект состоит из 5 файлов.

Form1.cs файл формы программы

Programm.cs файл основного модуля программы

AlarmClock.cs файл содержащий программный код класса AlarmClock

Clock.cs файл содержащий программный код класса Clock

Processor.cs файл содержащий программный код класса Processor

Проект создан в Microsoft Visual Studio 2008 Professional Russian и требуется для компиляции и запуска .Net Framework 2.0

Процесс компиляции:

После открытия файла выбрать конфигурацию Release и нажать кнопку F6.

Листинг

AlarmClock.cs

using System;

  • using System.Collections.Generic;
  • using System.Text;

namespace Curs2

{

class AlarmClock

{

private DateTime _time;

public DateTime Time

{

get { return _time; }

}

public AlarmClock()

{

_time = new DateTime(1, 1, 1, 0, 0, 0);

}

public void SetHour()

{

TimeSpan t = new TimeSpan(1, 0, 0);

  • _time = _time + t;

}

public void SetMinute()

{

TimeSpan t = new TimeSpan(0, 1, 0);

  • _time = _time + t;

}

public int GetHour()

{

return _time.Hour;

}

public int GetMinute()

{

return _time.Minute;

}

}

}

Clock.cs

using System;

  • using System.Collections.Generic;
  • using System.Text;

namespace Curs2

{

class Clock

{

private DateTime _time;

public DateTime Time

{

get { return _time; }

}

public Clock()

{

_time = new DateTime(1, 1, 1, 0, 0, 0);

}

public void SetHour()

{

TimeSpan t = new TimeSpan(1, 0, 0);

  • _time = _time + t;

}

public void SetMinute()

{

TimeSpan t = new TimeSpan(0, 1, 0);

  • _time = _time + t;

}

public int GetHour()

{

return _time.Hour;

14 стр., 6581 слов

Разработка веб-приложения (2)

... сетевые приложения, встраиваемые в страницы Web. Апплеты Java могут настраиваться и распространяться потребителям с такой же легкостью, как любые документы HTML.высвобождает мощь объектно-ориентированной разработки приложений, ... байт-код легко переводится непосредственно в “родные” машинные коды (Just In Time compilers) “на лету”. При этом достигается очень высокая производительность (Symantec JIT ...

}

public int GetMinute()

{

return _time.Minute;

}

public void Tick()

{

TimeSpan t = new TimeSpan(0, 0, 0, 0, 500);

  • _time = _time + t;

}

}

}

Processor.cs

using System;

  • using System.Collections.Generic;
  • using System.Text;

namespace Curs2

{

class Processor

{

private bool signal;

  • private bool radio;
  • private int mode;
  • private Clock clock;
  • private AlarmClock alarmclock;
  • private int editmode;
  • private bool reset;
  • private DateTime timetoreset;
  • private DateTime timetoalarm;

public Processor()

{

clock = new Clock();

  • alarmclock = new AlarmClock();
  • signal = false;
  • mode = 1;
  • editmode = 0;
  • timetoreset = new DateTime();
  • timetoalarm = new DateTime();

}

public bool isSignal()

{

return signal;

}

public bool isRadio()

{

return radio;

}

private bool bracked = false;

public string Time()

{

string tmp=»»;

if (editmode == 0)

{

if (clock.GetHour() < 10)

{

tmp = «0» + clock.GetHour().ToString();

}

else tmp = clock.GetHour().ToString();

  • if (bracked) tmp = tmp + «:»;
  • else tmp = tmp + » «;
  • if (clock.GetMinute() < 10)

{

tmp = tmp + «0» + clock.GetMinute().ToString();

}

else tmp = tmp + clock.GetMinute().ToString();

  • if (bracked) bracked = false;
  • else bracked = true;

}

if (editmode == 1)

{

if (bracked)

{

if (clock.GetHour() < 10)

{

tmp = «0» + clock.GetHour().ToString();

}

else tmp = clock.GetHour().ToString();

  • tmp = tmp + «:»;
  • if (clock.GetMinute() < 10)

{

tmp = tmp + «0» + clock.GetMinute().ToString();

}

else tmp = tmp + clock.GetMinute().ToString();

}

if (bracked) bracked = false;

  • else bracked = true;

}

if (editmode == 2)

{

if (bracked)

{

if (alarmclock.GetHour() < 10)

{

tmp = «0» + alarmclock.GetHour().ToString();

}

else tmp = alarmclock.GetHour().ToString();

  • tmp = tmp + «:»;
  • if (alarmclock.GetMinute() < 10)

{

tmp = tmp + «0» + alarmclock.GetMinute().ToString();

}

else tmp = tmp + alarmclock.GetMinute().ToString();

}

if (bracked) bracked = false;

  • else bracked = true;

}

return tmp;

}

public void Tick()

{

clock.Tick();

//проверки

if(reset)

{

TimeSpan t=new TimeSpan(0,0,0,0,500);

  • timetoreset=timetoreset+t;

}

if ((mode==2||mode==4) && clock.Time.Hour == alarmclock.Time.Hour && clock.Time.Minute == alarmclock.Time.Minute && clock.Time.Second==alarmclock.Time.Second)

{

signal = true;

  • reset=false;

}

if((mode==2&&timetoreset.Minute==5) || (mode ==4 && timetoreset.Minute==5 ))

{

signal=true;

}

if (mode == 4)

{

TimeSpan t=new TimeSpan(0,0,0,0,500);

  • timetoalarm = timetoalarm + t;

}

if (mode == 4 && timetoalarm.Minute == 30)

{

mode = 2;

  • radio = false;

}

if (mode == 1)

{

radio = false;

}

}

public void SetMode(int Mode)

{

mode = Mode;

  • if (mode == 2 || mode == 3) { reset = false;
  • radio = false;
  • }

if (mode == 3) radio = true;

if (mode == 4)

{

radio = true;

  • DateTime t = new DateTime();
  • timetoalarm = t;

}

}

public void EditClock()

{

if (editmode == 1) editmode = 0;

  • else editmode = 1;

}

public void EditAlarmClock()

{

if (editmode == 2) editmode = 0;

  • else editmode = 2;

}

public void SetHour()

{

if (editmode == 1) clock.SetHour();

  • if (editmode == 2) alarmclock.SetHour();

}

public void SetMinute()

{

if (editmode == 1) clock.SetMinute();

  • if (editmode == 2) alarmclock.SetMinute();

}

public void Reset()

{

signal = false;

  • DateTime t=new DateTime();
  • timetoreset = t;
  • reset = true;

}

}

Form1.cs

using System;

  • using System.Collections.Generic;
  • using System.ComponentModel;
  • using System.Data;
  • using System.Drawing;
  • using System.Text;
  • using System.Windows.Forms;
  • using System.Media;

namespace Curs2

{

public partial class Form1 : Form

{

Processor processor;

public Form1()

{

InitializeComponent();

  • processor = new Processor();
  • timer1.Interval = 500;
  • // Enable timer.

timer1.Enabled = true;

  • processor = new Processor();
  • comboBox1.SelectedIndex = 0;

}

private void button5_Click(object sender, EventArgs e)

{

processor.Reset();

}

private void timer1_Tick(object sender, EventArgs e)

{

processor.Tick();

  • label1.Text = processor.Time();
  • if (processor.isSignal() == true) { SystemSounds.Beep.Play();
  • }

if (processor.isRadio() == true) label2.Text = «Radio On»;

  • else label2.Text = «»;

}

private void button1_Click(object sender, EventArgs e)

{

processor.EditClock();

}

private void button2_Click(object sender, EventArgs e)

{

processor.EditAlarmClock();

}

private void button3_Click(object sender, EventArgs e)

{

processor.SetHour();

}

private void button4_Click(object sender, EventArgs e)

{

processor.SetMinute();

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

processor.SetMode(comboBox1.SelectedIndex+1);

}

}

}