Министерство образования и науки РФ
Сибирская автомобильно-дорожная академия
(СибАДИ)
Факультет ИСУ
Кафедра Прикладная информатика в
Экономике
КУРСОВОЙ ПРОЕКТ
по дисциплине
«Объектно-ориентированное программирование»
по теме: Класс «Телевизор»
Выполнил:
студент группы: ПИб-11И1
Проверил:
к. т. н., доцент
Омск 2013
Содержание
Задание. 3
1.Теоретическая часть. 4
2.Листинг программы: 5
3.Диаграмма классов: 12
4.Тест программы.. 13
Класс «Телевизор». Определить операции, допустимые над объектами таких типов. Реализовать интерфейс (графический или текстовый) для манипуляции объектами.
Курсовой проект имеет следующую структуру:
1. Теоретическая часть;
2. Описание программы;
3. Тестирование.
Телевизор(телевизионный приёмник) (televisorium- дальновидец,) электронное устройство для приёма и отображения изображения и звука, передаваемых по беспроводным каналам или по кабелю.
Основные функции телевизора:
· Включение
· Выключение
· Канал +
· Канал –
· Громкость +
· Громкость –
· Ручной ввод канала
· Сохранение состояния громкости и канала при выходе.
#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; // временные переменные для хранения номера канала и его имени
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.