Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Файл stove.cpp




Пример. Работа с микроволновой печью.

 

Описание системы:

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

2) если пользователь нажимает на кнопку во время работы печи, получаем дополнительную минуту работы;

3) если дверь открыта, нажатие кнопки не имеет эффекта;

4) внутри печи есть электролампа, во время работы она должна быть включена; когда дверь печи открыта, электролампа должна быть включена;

5) можно приостановить процесс приготовления пищи открытием двери, в этом случае время сбрасывается;

6) начальная конфигурация: дверь закрыта, лампа погашена;

7) если время истекло, выключается питание и электролампа.

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

Идентификаторы состояния:

1) включена/выключена электролампа;

2) включено/выключено электропитание;

3) открыта/закрыта дверь;

4) сколько времени осталось до конца приготовления пищи.

Электролампа Дверь Питание
    Невозможный набор
     
     
     

Необходимые функции (сообщения):

1) нажать кнопку;

2) изменить положение двери;

3) пища готова.

Файл stove.h

 

enum state {on, off}; //определение типа для элемента, поддерживающего состояние включён/выключен

enum door {open, close}; //определение типа для элемента, поддерживающего состояние открыт/закрыт

 

class stove

{ state curr_lamp; //поле для описания состояния лампы

door curr_door; //поле для описания состояния двери

state curr_power; //поле для описания состояния питания

int time; //время, оставшееся до конца приготовления еды

void take_door(void); //метод, изменяющий положение двери

void push_button(void); //метод, обрабатывающий работы с питанием микроволновой печи

void ready(void); //метод, обрабатывающий окончание приготовления еды

public:

stove(); //конструктор, задёт начальные параметры

void Run(); //метод, обрабатывающий взаимодействие пользователя с печью

};

 

файл stove.cpp

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include "stove.h"

 

void menu() //выводит на экран меню

{

printf("\n%b - нажать кнопку для приготовления еды\n");

printf("d - открыть/закрыть дверь\n");

printf("ESC - выход\n\n");

}

stove::stove()

{

//начальноге состояние:

curr_lamp=off; //лампа выключена

curr_door=close; //дверь закрыта

curr_power=off; //питание выключено

time=-1; //еда не готовится

}

void stove::take_door(void)

{

if (curr_door==open) //если дверь открыта

{ curr_door=close; //закрываем дверь

curr_lamp=off; //выключаем лампу

printf("Дверь закрыта\n");

}

else //если дверь закрыта

{ curr_door=open; //открываем дверь

curr_lamp=on; //включаем лампу

printf("Дверь открыта\n");

if (curr_power==on) //если в момент открытия двери готовилась еда

{

printf("Процесс прерван\n");

time=-1; //сбрасываем счётчик времени

curr_power=off; //выключаем питание

}

}

return;

}

void stove::push_button(void)

{

if (curr_door==open) //если дверь открыта, еду готовить нельзя

printf("Закройте дверь!\n");

else //если дверь закрыта

{ if (curr_power==on) //если еда уже готовится

{ time+=60; //добавляем минуту

printf("Вам добавлена минута\n");

}

else //если еда не готовится

{ curr_power=on; //включаем питание

curr_lamp=on; //включаем лампу

time=60; //устанавливаем счётчик времени

printf("Еда готовится\n");

}

}

return;

}

void stove::ready(void)

{

//еда пригтовлена

curr_power=off; //выключаем питание

curr_lamp=off; //выключаем лампу

time=-1; //сбрасываем счётчик времени

printf("\aЕда готова\n");

 

}

void stove::Run(void)

{

int key;

do

{

while (!kbhit() && time>0) //в этот цикл заходим, если еда готовится;

условие выхода из цикла: нажата клавиша или истекло время приготовления еды

//функция kbhit() возвращает истину, если пользователь нажал клавишу

{

time--; //вычитаем секунду из времени, оставшегося до конца приготовления еды

Sleep(100); //задержка в 100 мс

printf("Осталось %d секунд\n",time);

}

if (time==0) //если еда закончила готовиться, вызываем метод ready()

ready();

menu();

key=getch();

switch (key)

{ case 'b': push_button(); break;

case 'd': take_door(); break;

}

fflush(stdin);

}

while(key!=27);

return;

}

 





Поделиться с друзьями:


Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 531 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинайте делать все, что вы можете сделать – и даже то, о чем можете хотя бы мечтать. В смелости гений, сила и магия. © Иоганн Вольфганг Гете
==> читать все изречения...

2335 - | 2134 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.