Класс «Телевизор»

Страницы работы

Содержание работы

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

Сибирская автомобильно-дорожная академия

(СибАДИ)

Факультет ИСУ

Кафедра Прикладная информатика в

Экономике

КУРСОВОЙ ПРОЕКТ

по дисциплине

«Объектно-ориентированное программирование»

по теме: Класс «Телевизор»

Выполнил:

студент группы: ПИб-11И1

Проверил:

к. т. н., доцент

Омск 2013


Содержание

Задание. 3

1.Теоретическая часть. 4

2.Листинг программы: 5

3.Диаграмма классов: 12

4.Тест программы.. 13


Задание

Класс «Телевизор». Определить операции, допустимые над объектами таких типов. Реализовать интерфейс (графический или текстовый) для манипуляции объектами.

Курсовой проект имеет следующую структуру:

1.  Теоретическая часть;

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

3.  Тестирование.


1.  Теоретическая часть

Телевизор(телевизионный приёмник) (televisorium- дальновидец,)  электронное  устройство для приёма и отображения изображения и звука, передаваемых по беспроводным каналам или по кабелю.

Основные функции телевизора:

·  Включение

·  Выключение

·  Канал +

·  Канал –

·  Громкость +

·  Громкость –

·  Ручной ввод канала

·  Сохранение состояния громкости и канала при выходе.

2.  Листинг программы:

#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
#include <conio.h>
#include <vector> // заголовки
 
using namespace std;
 
HANDLE stdCons;// это хендл консольного окна, нужен для того чтоб курсор перемешать в разные места экрана
 
 
class Channel { // класс канал
 
        int num; // 2 поля номер канала и имя
        string name;
 
 
public:
 
        Channel() {} // конструктор по умолчанию
        Channel(int n, string nm) { // конструктор с 2 параметрами
 
               num = n;
               name = nm;
 
        }
 
        int getNum() const {// функция получения номера канал. const тут и далее означает что функция только возвращает значение но не меняет ничего.         return num;
        }
 
        string getName() const {// функция возвращает имя канала
               return name;
        }
 
 
};
 
 
class TV {// класс Телевизор
 
        bool on; // поле вкл выкл. 1- вкл 0 -выкл
        int curChannel; // номер текущего канала, задается в начале из файла
        int volume; // текущая громкость тоже в начале из файла
        vector<Channel> channels; // вектор каналов
 
public:
 
        TV() {}
        TV(bool o, int cc, int v, vector<Channel> c) { // конструкторы
 
               on = o;
               curChannel = cc;
               volume = v;
               channels = c;
 
        }
 
        void Turn(bool o) { // функция вкл/выкл
               on = o; 
        }
 
        bool isOn() const { // функция вернет значение - включен ли тел. или нет
               return on;
        }
 
        void switchChannel(bool up) {// функция переключения канала
       if (!isOn()) Turn(true);
               if (up) {// если щелкаем вверх
                       if (curChannel < channels.size()-1)// если мы не на последнем канале
                       curChannel++;// просто делаем канал +1
                       else
                       curChannel=0;//  иначе переходим на 1ый канал
               } else {// если щелкаем вниз, тоже самое только если мы на 0-м то переходим на последний
 
                       if (curChannel > 0)
                       curChannel--;
                       else
                       curChannel=channels.size()-1;
               }
 
        }
 
        void switchChannel(int c) {// функция ручного перевода канала (с)
 
               if (c >=0 && c < channels.size())// смотрим если в рамки каналом влезает то изменяем, иначе ничего не происходит
                       curChannel = c;
 
        }
 
        void changeVolume(bool up) {// функция изменения громкости
        if (isOn()) {
               if (up) { // если вверх
                       if (volume < 100)// если не дошли до 100(пусть это будет предельная громкость)
                       volume++;// плюсуем
               } else {
 
                       if (volume > 0)// если не дошли до 0 минусуем. если 0 то вниз уже нельзя.
                       volume--;
               }
 
               } 
        }
 
        Channel getCurChannel() const {// получить текущий канал
               return channels[curChannel];
        }
 
        int getVolume() const {// получить текущее значение громкости
               return volume;
        }
 
};
 
void setHandle() {// получаем Хэндл консольного окна
        stdCons = GetStdHandle(STD_OUTPUT_HANDLE);
}
 
void gotoxy(int x, int y) { // функция перемещения курсора в позицию с координатами x y на экране
        COORD c = {x,y};
        SetConsoleCursorPosition(stdCons,c);// виндусовская функция перемещения
}
 
void updateInfo(const TV& tv) {// обновить инфо на экране в уголке. по переданному телевизору (как параметр). передаем как const& это значит что менять мы его не собираемся, а только смотреть
        
// ну в уголок в общем выводим всю инфу о текущем состоянии телика
gotoxy(50,1);
 
        cout << "TV: " << (tv.isOn() ? "On " : "Off");
 
        gotoxy(50,2);
 
        cout << "Channel: #" << tv.getCurChannel().getNum() << " \'" << tv.getCurChannel().getName() << "\'  ";
        
        gotoxy(50,3);
 
        cout << "Volume: " << tv.getVolume() << "  ";
}
 
int main() 
{
        ifstream ifs("data.txt");// очевидно файл на чтение инфы по каналам
 
        vector<Channel> channels;// здесь будем хранить каналы
 
        int n; // читаем число каналом (1 строка в файле)
        ifs >> n;
 
        string st; // временные переменные для хранения номера канала и его имени 

Похожие материалы

Информация о работе