Учебная работа. Курсовая работа: Проектирование на языке UML

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Курсовая работа: Проектирование на языке UML

Министерство образования Русской Федерации

Муниципальный технический Институт

Кафедра Автоматических Систем Управления

Курсовая работа

По предмету «Технологии программирования»

2009г.

Инструкция.

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

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

Задачей курсового проектирования является разработка программной системы от начала (анализ требований) до конца(тестирование и сопровождение-документация).

В качестве инструментальной среды проектирования употребляется Rational
Software
Architect
. Для описания модели употребляется язык UML
.

Процесс проектирования – Rational
Unified
Process
(
RUP
).

В качестве языка программирования употребляется Microsoft Visual C#.

Конечным результатом работы является проект, содержащий модель разработанной системы на языке UML, приготовленную в Rational Software Architect и программный продукт в виде исполняемого (exe) файла и начальных файлов.


Содержание.

1) Задание 4

2) Требование к программке 5

3) Описание Use Case diagram 6

4) Описание Activity diagram 9

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

6) Описание модели поведения, представленной на диаграммах состояний. 14

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

классов 15

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

9) Описание С++ программки. 18

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

11) Заключение 22

приложение


Задание.

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

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

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

· клавишей режима установки времени,

· клавишей режима установки времени срабатывания,

· 2-мя отдельными клавишами для установки часов и минут,

· клавишей сброса сигнала «СБРОС».

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

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

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



Требования к программке.

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

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

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

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

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

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

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

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


Прецеденты, выставленные на
Use
case
diagram
. (см. приложение)

Вариант использования “Сброс сигнала”

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

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

Главный поток событий:

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

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

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

другой поток событий:

Сигнала нет:

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

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

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

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

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

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

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

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

Главный поток событий:

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

Другой поток событий:

Уже включен режим опции текущего времени:

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

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

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

Активизируется при нажатии клавиши ЧАС. Наращивает текущее

Главный поток событий:

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

-Поменять текущее время на 1 час.

Другой поток событий:

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

-Поменять время срабатывания на 1 час.

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

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

Активизируется при нажатии клавиши МИН. Наращивает текущее

Главный поток событий:

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

-Поменять текущее время на 1 минутку.

Другой поток событий:

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

-Поменять время срабатывания на 1 минутку.


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

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

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

Главный поток событий:

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

-Меняется режим работы

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

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

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

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

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

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

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

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

Главный поток событий:

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

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

другой поток событий

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

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


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

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

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

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

юзер надавливает клавишу СБРОС, система отключает сигнал.

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

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

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

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

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

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

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

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

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

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

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

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


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

В модели взаимодействия находятся объекты:

юзер будильника: Является юзером всех функций системы.

— Processor: Блок управления всей системой, через который происходит взаимодействие с юзером.

— Clock: Компонент, в каком хранится текущее время.

-AlarmClock: Компонент, в каком хранится время срабатывания.

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

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

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

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

юзер отправляет сообщение о сбросе сигнала, микропроцессор сбрасывает сигнал.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

юзер отправляет сообщение о сбросе сигнала микропроцессору


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

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

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

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

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


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

В системе есть три класса:

Класс 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

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 минут в режиме таймер включился режим ВКЛ.


Заключение

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

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

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

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

приложение

Диаграмма Use Case

Activity diagram

Sequence diagram

Collaboration
diagram

Statechart
diagram

Class
diagram


Component
diagram


Управление юзера

Предназначение клавиш:

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;

}

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);

}

}

}

]]>