Форум программистов, компьютерный форум CyberForum.ru

Класс Book - C++

Восстановить пароль Регистрация
 
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
24.01.2013, 22:34     Класс Book #1
напсиал программу с классами
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream>
#include <string.h>
using namespace std;
#define N 3
 
class book {
private:
    char nazv[50];
    char avtor[50];
    int number;
   int god;
 
    public:
        book()
        {
            strcpy(avtor, "Petrov P.I.");
           
        }
 
        ~book() {};
 
        void setnazv(char *_nazv)
        {
            strcpy(nazv, _nazv);
        }
 
        char *getnazv(void)
        {
            return nazv;
        }
  void setavtor(char *_avtor)
        {
            strcpy(avtor, _avtor);
        }
 
        char *getavtor(void)
        {
            return avtor;
        }
        void setnumber(int _number)
        {
            number = _number;
        }
 
        int getnumber(void)
        {
            return number;
        }
 void setgod(int _god)
        {
            number = _god;
        }
 
        int getgod(void)
        {
            return god;
        }
        
};
 
int main()
{
    setlocale(0, "Russian_Russia.1251");
    char nazv[50];
    char avtor[50];
    int number, god;
    book clas[N];
    for(int i = 0; i<N; i++)
    {
        cout << "Книга №" << i+1 << ":\n";
        cout << "Введите название книги: \n ";
            cin.getline(nazv, 50);
            clas[i].setnazv(nazv);
             cout << "Введите автора книги: \n ";
            cin.getline(avtor, 50);
            clas[i].setavtor(avtor);
        cout << "Введите регистрациооный номер книги: \n";
            cin >> number;
            clas[i].setnumber(number);
      cout << "Введите год книги: \n";
            cin >> god;
            }
    system("pause");
    return 0;
}
в Общем задание звучит так:
1)Создайте программу с классом BOOK, который включает в себя следующие данные-элементы о книгах, хранящихся в библиотеке:
► регистрационный номер книги;
►автор;
► название;
► год издания;
2)В класс входят следующие функции-члены класса:
►конструктор с параметром для инициализации автора;
► деструктор;
►функция инициализации текущего состояния объектов;
► функция для просмотра текущего состояния объектов PRINT ();
3)Производный класс Туре имеет следующие элементы:
► тематика книг;
► тип литераторы (отечественная или зарубежная);
► функция просмотра состояния объектов.
1 и 2 пункт на половну(конструктор и деструктор) сделал помогите реализовать 3 и 2 до конца
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1478 / 1054 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.01.2013, 22:41     Класс Book #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Type : public book
{
   int themeId;
   int litId;
 
   // ну и далее конструкторы и прочие функции по аналогии с book
 
public:
   Type()
   {
       ...
   }
 
   ....
};
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
25.01.2013, 00:07     Класс Book #3
Вот. Написал чисто по заданию.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <string>
 
//====================================================================
// Класс Book
//====================================================================
 
class Book
{
    int regNum; // регистрационный номер книги
    std::string author; // автор
    std::string title; // название
    int year; // год издания
 
public:
    // конструктор с параметром для инициализации всех данных
    Book(int _regNum, std::string _author, std::string _title, int _year):
        regNum(_regNum), author(_author), title(_title), year(_year) {}
 
    // конструктор с параметром для инициализации автора
    Book(std::string _author = ""):
        regNum(0), author(_author), title("Not set."), year(0000)  {}
 
    virtual ~Book() {} // деструктор
 
    // функция инициализации текущего состояния объектов
    void Set(int _regNum, std::string _author, std::string _title, int _year) {
        regNum = _regNum; author = _author; title = _title; year = _year; }
 
    //функция для просмотра текущего состояния объектов
    virtual void Get();
};
 
void Book::Get()
{
    std::cout << "Registration number of the book: " << this->regNum << std::endl;
    std::cout << "Author: " << this->author << std::endl;
    std::cout << "Title: " << this->title << std::endl;
    std::cout << "Imprint date: " << this->year << std::endl;
}
 
//====================================================================
// Производный класс Туре
//====================================================================
 
enum literaryType {domestic, foreign}; // тип литераторы (отечественная или зарубежная)
 
class Type : public Book
{
    std::string theme; // тематика книг
    literaryType lType; // тип литераторы
 
public:
    Type(std::string _theme = "", literaryType _lType = domestic): // конструктор для инициализации
        theme(_theme), lType(_lType) {}
    virtual ~Type() {} // деструктор
 
    //функция для просмотра текущего состояния объектов
    virtual void Get();
};
 
void Type::Get()
{
    std::cout << "Theme of the book: " << this->theme << std::endl;
    std::cout << "Type of literature: ";
 
    switch (this->lType)
    {
    case domestic: std::cout << "domestic \n"; // отечественная
        break; 
    case foreign: std::cout << "foreign \n"; // зарубежная
        break; 
    }
}
 
//====================================================================
// main()
//====================================================================
 
int main()
{
    Book be("Serega");
    be.Get();
 
    be.Set(1, "Vasya", "C++", 2013);
    be.Get();
 
    Book* be2 = new Type("Programming", foreign);
    be2->Get();
 
    system("PAUSE");
    return 0;
}
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 00:21  [ТС]     Класс Book #4
Цитата Сообщение от SeregaC++ Посмотреть сообщение
Вот. Написал чисто по заданию.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <string>
 
//====================================================================
// Класс Book
//====================================================================
 
class Book
{
    int regNum; // регистрационный номер книги
    std::string author; // автор
    std::string title; // название
    int year; // год издания
 
public:
    // конструктор с параметром для инициализации всех данных
    Book(int _regNum, std::string _author, std::string _title, int _year):
        regNum(_regNum), author(_author), title(_title), year(_year) {}
 
    // конструктор с параметром для инициализации автора
    Book(std::string _author = ""):
        regNum(0), author(_author), title("Not set."), year(0000)  {}
 
    virtual ~Book() {} // деструктор
 
    // функция инициализации текущего состояния объектов
    void Set(int _regNum, std::string _author, std::string _title, int _year) {
        regNum = _regNum; author = _author; title = _title; year = _year; }
 
    //функция для просмотра текущего состояния объектов
    virtual void Get();
};
 
void Book::Get()
{
    std::cout << "Registration number of the book: " << this->regNum << std::endl;
    std::cout << "Author: " << this->author << std::endl;
    std::cout << "Title: " << this->title << std::endl;
    std::cout << "Imprint date: " << this->year << std::endl;
}
 
//====================================================================
// Производный класс Туре
//====================================================================
 
enum literaryType {domestic, foreign}; // тип литераторы (отечественная или зарубежная)
 
class Type : public Book
{
    std::string theme; // тематика книг
    literaryType lType; // тип литераторы
 
public:
    Type(std::string _theme = "", literaryType _lType = domestic): // конструктор для инициализации
        theme(_theme), lType(_lType) {}
    virtual ~Type() {} // деструктор
 
    //функция для просмотра текущего состояния объектов
    virtual void Get();
};
 
void Type::Get()
{
    std::cout << "Theme of the book: " << this->theme << std::endl;
    std::cout << "Type of literature: ";
 
    switch (this->lType)
    {
    case domestic: std::cout << "domestic \n"; // отечественная
        break; 
    case foreign: std::cout << "foreign \n"; // зарубежная
        break; 
    }
}
 
//====================================================================
// main()
//====================================================================
 
int main()
{
    Book be("Serega");
    be.Get();
 
    be.Set(1, "Vasya", "C++", 2013);
    be.Get();
 
    Book* be2 = new Type("Programming", foreign);
    be2->Get();
 
    system("PAUSE");
    return 0;
}
спасибо за ваш код. я не совсем разбираюсь в классах оно так и должно быть сразу выводится все заполненые поля или я в консоли должен заполнять все поля (книга автор и т.д.) чтобы книг было несколько?
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
25.01.2013, 00:25     Класс Book #5
Цитата Сообщение от илья1995 Посмотреть сообщение
чтобы книг было несколько?
вот смотри: be - это одна книга.
Напишешь ещё так: Book be3 - ещё одна книга.
Т.е создаешь обьекты класса. Один обьект - одна книга.
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 00:45  [ТС]     Класс Book #6
Цитата Сообщение от SeregaC++ Посмотреть сообщение
вот смотри: be - это одна книга.
Напишешь ещё так: Book be3 - ещё одна книга.
Т.е создаешь обьекты класса. Один обьект - одна книга.
т.е я пишу
C++
1
Book be3
патом вызываю функции и в майне я должен заполнить во так поля
C++
1
2
3
4
5
6
Book be3("Serega");
    be.Get();
 
    be.Set(1, "Vasya", "C++", 2013);
    be.Get();
Book* be2 = new Type("Programming", foreign);
и так для каждой книги надо ?

а как сделать так чтобы вводить самому эти названия книги там номера и т.д
у меня как то в начале
C++
1
#define N 3
вот этим задовался размер класса
а у тебя как бы в функции заложены переменные и когда ты в майне е вызываешь у тебя в соответсвии сколько в функции написано переменных столько ты пишешь данных вскобках
C++
1
 be.Set(1, "Vasya", "C++", 2013);
я хочу чтобы эти данные я ввел в процессе работы программы
чтоб изначально наша библиотека была пуста

Добавлено через 8 минут
все разобрался в программе все понял можно как нибудь ее переделать чтобы я данные о книге не в майне заполнял а в консоли?
lemegeton
25.01.2013, 01:01
  #7

Не по теме:

Задание феерическое.

Цитата Сообщение от SeregaC++ Посмотреть сообщение
Вот. Написал чисто по заданию.
Пацтулом. У меня бы не хватило силы воли так написать. Только enum не надо было вводить -- выдает понимание предмета.

илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 01:07  [ТС]     Класс Book #8
ну задание как мне кажется сложновато для обычной лабы
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
25.01.2013, 01:11     Класс Book #9
Задание не сложноватое, предложенная в задании архитектура напрочь некорректна. Так неправильно делать.

"Тип книги" не корректно наследовать от "книги". Потому что "тип книги" не является "книгой". Бред пьяного мультипликатора.

Да и все остальное не лучше. Единый метод для задания всех полей, метод класса, выводящий поля на экран... Так нельзя делать в реальной жизни. Получится редкостно паршивый код.
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 01:17  [ТС]     Класс Book #10
классы вижу второй рас в жизни так что как понял так и сделал я понимаю что у меня плохой код но как смог так сделал

Добавлено через 5 минут
Цитата Сообщение от lemegeton Посмотреть сообщение

"Тип книги" не корректно наследовать от "книги". Потому что "тип книги" не является "книгой". Бред пьяного мультипликатора.
я таково не писал вроде
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
25.01.2013, 01:28     Класс Book #11
Цитата Сообщение от илья1995 Посмотреть сообщение
я таково не писал вроде
Вот тут.
Цитата Сообщение от илья1995 Посмотреть сообщение
3)Производный класс Туре имеет следующие элементы:
Добавлено через 2 минуты
Цитата Сообщение от илья1995 Посмотреть сообщение
классы вижу второй рас в жизни так что как понял так и сделал я понимаю что у меня плохой код но как смог так сделал
Да при чем тут ваш код?!
Тут как ни крути, если делать по заданию, код будет плохой. Потому что задание плохое.
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 01:34  [ТС]     Класс Book #12
ну какой вариант попался такой попался ниче не сделаешь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2013, 14:23     Класс Book
Еще ссылки по теме:

C++ Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка
Создать класс Book. Переменная типа Book должна содержать следующие поля: C++
Реализовать класс Goods используя для представления цены класс Money C++
Написать структуру Book и функции сортировки массива таких структур C++
C++ Абстрактный класс CGraphicsObject, его наследник - базовый класс CPoint, и класс - наследник от CPoint

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
25.01.2013, 14:23     Класс Book #13
Цитата Сообщение от илья1995 Посмотреть сообщение
можно как нибудь ее переделать чтобы я данные о книге не в майне заполнял а в консоли?
Измени метод Set. Например так:
C++
1
2
3
4
5
6
7
8
void Set() 
{
   std::cout << "Enter ren num: ";
   std::cin >> this->regNum;
   .....
   std::cout << "Enter year: ";
   std::cin >> this->year;
}
Yandex
Объявления
25.01.2013, 14:23     Класс Book
Ответ Создать тему
Опции темы

Текущее время: 10:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru