Скачиваний:
34
Добавлен:
28.03.2021
Размер:
229.36 Кб
Скачать

3 Индивидуальное задание

Разработать связи между следующими классами: «Часы», «Механические часы», «Электронные часы», «Циферблат», «Источник энергии» Все классы должны содержать функции получения и изменения всех полей. Написать программу, позволяющую получать сведения о часах. Использовать конструктор с параметрами, конструктор без параметров, конструктор копирования. В класс добавить необходимый набор полей и методов (минимум два поля и два метода) на свое усмотрение. Предусмотреть метод для записи полученных данных в файл.

4 Код решения индивидуального задания

main.h”

#include <iostream>

#include <Windows.h>

#include "El.h"

#include "Clockandother.h"

#include "Mex.h"

int main()

{

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

int a = -1;

Clock * m, * l; //указатели для хранения данных о фигуре каждого класса

string color;

string name;

string y;

string z;

double x;

cout << "Введите данные о МЕХАНИЧЕСКИХ ЧАСАХ\n";

cout << "Ведите стоимость часов в $: ";

cin >> x;

cout << "Выбирите способ получения энергии" << endl;

cout << "(1 - зарядное устройство, 2 - солнечная энергия, 3 - батарейки) " << endl;

cin >> a;

switch (a)

{

case 1:

{

y = "зарядное устройство";

break;

}

case 2:

{

y = "солнечная энергия";

break;

}

case 3:

{

y = "батарейки";

break;

}

}

int k = -1;

cout << "Выбирите вид циферблата" << endl;

cout << "(1 - аналоговый, 2 - цифровой, 3 - комбинированный, 4 - бинарный) " << endl;

cin >> k;

switch (k)

{

case 1:

{

z = "аналоговый";

break;

}

case 2:

{

z = "цифровой";

break;

}

case 3:

{

z = "комбинированный";

break;

}

case 4:

{

z = "бинарный";

break;

}

}

cout << "Выберите цвет: ";

cin >> color;

cout << "Придумайте наименование часам: ";

cin >> name;

m= new Mex(x, y, z, name, color); //создаем

int o = -1;

cout << "\nВведите данные об ЭЛЕКТРОННЫХ ЧАСАХ\n";

cout << "Ведите стоимость часов в $: ";

cin >> x;

cout << "Выбирите способ получения энергии" << endl;

cout << "(1 - зарядное устройство, 2 - солнечная энергия, 3 - батарейки) " << endl;

cin >> o;

switch (o)

{

case 1:

{

y = "зарядное устройство";

break;

}

case 2:

{

y = "солнечная энергия";

break;

}

case 3:

{

y = "батарейки";

break;

}

}

int r = -1;

cout << "Выбирите вид циферблата" << endl;

cout << "(1 - аналоговый, 2 - цифровой, 3 - комбинированный, 4 - бинарный) " << endl;

cin >> r;

switch (r)

{

case 1:

{

z = "аналоговый";

break;

}

case 2:

{

z = "цифровой";

break;

}

case 3:

{

z = "комбинированный";

break;

}

case 4:

{

z = "бинарный";

break;

}

}

cout << "Выберите цвет: ";

cin >> color;

cout << "Придумайте наименование часам: ";

cin >> name;

l = new El(x, y, z, name, color);

//вывод данных

cout << "Мех.часы, цвет: " << m->GetColor()<< " Наименование: " << m->GetName() << ".\nСтоимость в $: " << m->GetX() << "; Получают энергию с помощью:" << m->GetY() << "\nВид циферблата: " << m->GetZ() << endl;

cout << "Электронные часы, цвет: " << l->GetColor() << " Наименование: " << l->GetName() << ".\nСтоимость в $: " << l->GetX() << "; Получают энергию с помощью:" << l->GetY() << "\nВид циферблата: " << l->GetZ() << endl;

//работа с фигурами через меню

int command = -1;

while (command != 0) //пока не выбран выход из программы

{

//вывод меню

cout << "\nМеню:\n";

cout << "1 - Вывод данных о часах\n";

cout << "----------------------------------------" << endl;

cout << "\n2 - Изменить СТОИМОСТЬ механических часов\n";

cout << "3 - Изменить ЦВЕТ механических часов\n";

cout << "4 - Изменить НАИМЕНОВАНИЕ мех.часов\n";

cout << "\n5 - Изменить способ ПОЛУЧЕНИЯ ЭНЕРГИИ мех.часов\n";

cout << "6 - Изменить ВИД ЦИФЕРБЛАТА мех.часов\n";

cout << "----------------------------------------" << endl;

cout << "\n7 - Изменить СТОИМОСТЬ эл. часов\n";

cout << "8 - Изменить ЦВЕТ электронных часов\n";

cout << "9 - Изменить НАИМЕНОВАНИЕ эл.часов\n";

cout << "\n10 - Изменить способ ПОЛУЧЕНИЯ ЭНЕРГИИ эл.часов\n";

cout << "11 - Изменить ВИД ЦИФЕРБЛАТА эл.часов\n";

cout << "----------------------------------------" << endl;

cout << "12 - Запись данных о ЧАСАХ в файл figures.txt\n";

cout << "13 - Перевести из долларов $ в BYN\n";

cout << "0 - Выход\n";

cout << "\nВведите номер команды: ";

cin >> command;

cout << "\n";

//в зависимости от команды выполняем действие

switch (command)

{

case 1:

{

cout << "Мех.часы, цвет: " << m->GetColor() << "Наименование: " << m->GetName() << ".\nСтоимость в $: " << m->GetX() << "; Получают энергию с помощью:" << m->GetY() << "\nВид циферблата: " << m->GetZ() << endl;

cout << "Электронные часы, цвет: " << l->GetColor() << "Наименование: " << l->GetName() << ".\nСтоимость в $: " << l->GetX() << "; Получают энергию с помощью:" << l->GetY() << "\nВид циферблата: " << l->GetZ() << endl;

break;

}

case 2:

{

cout << "Введите новую стоимость: ";

cin >> x;

m->SetX(x);

break;

}

case 3:

{

cout << "Введите новый цвет: ";

cin >> color;

m->SetColor(color);

break;

}

case 4:

{

cout << "Введите новое наименование: ";

cin >> name;

m->SetName(name);

break;

}

case 5:

{

int s = -1;

cout << "Введите новый способ ПОЛУЧЕНИЯ ЭНЕРГИИ мех.часов: ";

cout << "(1 - зарядное устройство, 2 - солнечная энергия, 3 - батарейки) " << endl;

cin >> s;

switch (s)

{

case 1:

{

y = "зарядное устройство";

break;

}

case 2:

{

y = "солнечная энергия";

break;

}

case 3:

{

y = "батарейки";

break;

}

}

m->SetY(y);

}

case 6:

{

int v = -1;

cout << "Выбирите новый вид циферблата" << endl;

cout << "(1 - аналоговый, 2 - цифровой, 3 - комбинированный, 4 - бинарный) " << endl;

cin >> v;

switch (v)

{

case 1:

{

z = "аналоговый";

break;

}

case 2:

{

z = "цифровой";

break;

}

case 3:

{

z = "комбинированный";

break;

}

case 4:

{

z = "бинарный";

break;

}

}

m->SetZ(z);

}

case 7:

{

cout << "Введите новую стоимость: ";

cin >> x;

l->SetX(x);

break;

}

case 8:

{

cout << "Введите новый цвет: ";

cin >> color;

l->SetColor(color);

break;

}

case 9:

{

cout << "Введите новое наименование: ";

cin >> name;

l->SetName(name);

break;

}

case 10:

{

int s = -1;

cout << "Введите новый способ ПОЛУЧЕНИЯ ЭНЕРГИИ эл.часов: ";

cout << "(1 - зарядное устройство, 2 - солнечная энергия, 3 - батарейки) " << endl;

cin >> s;

switch (s)

{

case 1:

{

y = "зарядное устройство";

break;

}

case 2:

{

y = "солнечная энергия";

break;

}

case 3:

{

y = "батарейки";

break;

}

}

l->SetY(y);

}

case 11:

{

int v = -1;

cout << "Выбирите новый вид циферблата" << endl;

cout << "(1 - аналоговый, 2 - цифровой, 3 - комбинированный, 4 - бинарный) " << endl;

cin >> v;

switch (v)

{

case 1:

{

z = "аналоговый";

break;

}

case 2:

{

z = "цифровой";

break;

}

case 3:

{

z = "комбинированный";

break;

}

case 4:

{

z = "бинарный";

break;

}

}

l->SetZ(z);

}

case 12: //запись в файл

{

ofstream out("clock.txt"); //создаем файл

m->WriteToFile(out);

l->WriteToFile(out);

out.close();

cout << "Данные о часах успешно записаны в файл clock.txt!\n";

break;

}

case 13:

{

cout << "Стоимость механических часов в бел.рублях составляет : " << ((Mex*)m)->CalcPB() <<endl;

cout << "Стоимость электронных часов в бел.рублях составляет : " << ((El*)l)->CalcPB() << endl;

break;

}

case 0:

{

break;

}

default:

{

cout << "Неверная команда!\n";

break;

}

}

}

system("pause");

}

clockandother”

#pragma once

#include <string>

#include <fstream>

using namespace std;

//базовый для остальных классов

class Energy

{

};

class Ciferblat

{

};

class Clock : public Ciferblat, Energy

{

protected:

double x; //стоимость часов

string y; //энергия (батарея)

string z; //циферблат

string color; //цвет часов

string name; //наименование часов

public:

//конструктор, который будет вызываться в классах-наследниках

Clock(double x, string y, string z, string color, string name)

{

this->x = x; this->y = y; this->z = z; this->color = color; this->name = name;

}

//методы

void SetX(double x) { this->x = x; }

void SetColor(string color) { this->color = color; }

void SetName(string name) { this->name = name; }

void SetY(string y) { this->y = y; }

void SetZ(string z) { this->z = z; }

double GetX() { return this->x; }

string GetY() { return this->y; }

string GetZ() { return this->z; }

string GetColor() { return this->color; } //узнать цвет

string GetName() { return this->name; } //узнать наименование часов

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

virtual double CalcPB() = 0; //перевести стоимость с $ в бел.р.

virtual void WriteToFile(ofstream& out) = 0; //запись данных в открытый файл

};

Mex.h”

#pragma once

#include "Clockandother.h"

class Mex :

public Clock

{

private:

public:

Mex(double x, string y, string z, string color, string name);

double CalcPB() override;

void WriteToFile(ofstream& out) override;

};

Mex.cpp”

#include "Mex.h"

Mex::Mex(double x, string y, string z, string color, string name) : Clock(x, y, z, name, color)

{

this->x = x;

}

double Mex::CalcPB()

{

return x/2.6;

}

void Mex::WriteToFile(ofstream& out)

{

out << "Механические часы, стоимость в $: " << this->GetX() << "; В бел.руб.: " << this->CalcPB() << " ;ЦВЕТ: " << this->GetColor() << " ;НАИМЕНОВАНИЕ: " << this->GetName()

<< " ; Способ получения энергии: " << this->GetY() << " ; Вид циферблата: " << this->GetZ() << endl;

}

El.h”

#pragma once

#pragma once

#include "Clockandother.h"

class El :

public Clock

{

protected:

public:

El(double x, string y, string z, string color, string name);

//перегружаемые методы

double CalcPB() override;

void WriteToFile(ofstream& out) override;

};

El.cpp”

#include "El.h"

El::El(double x, string y, string z, string color, string name) : Clock(x, y, z, name, color)

{

this->x = x;

}

double El::CalcPB()

{

return x /2.6;

}

//запись данных в файл

void El::WriteToFile(ofstream& out)

{

out << "Электронные часы, стоимость в $: " << this->GetX() << "; В бел.руб.: " << this->CalcPB() << " ;ЦВЕТ: " << this->GetColor() << " ;НАИМЕНОВАНИЕ: " << this->GetName()

<< " ; Способ получения энергии: " << this->GetY() << " ; Вид циферблата: " << this->GetZ() << endl;

}

Соседние файлы в папке лабы салапура