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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
#1

Класс Book - C++

24.01.2013, 22:34. Просмотров 1127. Ответов 12
Метки нет (Все метки)

напсиал программу с классами
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 до конца
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 22:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс Book (C++):

Создать класс Book. Переменная типа Book должна содержать следующие поля: - C++
Помогите решить=(. Создать класс Book. Переменная типа Book должна содержать следующие поля: название, количество авторов; авторы; год...

Класс Book - C++ - C++
Помогите решить: Класс Book - C++ Данные: название, автор, код ISBN, издательство. Методы: 1. Получения значения полей...

Класс Book - C++
Подскажите, как добавить в список книг ещё одну книгу? Я думаю функцию больше не надо писать, можно в case засунуть. Я немного запутался. ...

Разработать класс Book - C++
почему мне выдает ошибку??? Нужно разработать класс Book. определить конструктор и деструктор. реализовать объявленные методы доступными...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Class Book ошибочка - C++
Задания: Создать пустой проект и добавить в него файл main.cpp с функцией main. Создать заголовочный файл book.h (не забывая о стражах...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
24.01.2013, 22:41 #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()
   {
       ...
   }
 
   ....
};
1
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
25.01.2013, 00:07 #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;
}
2
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 00:21  [ТС] #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;
}
спасибо за ваш код. я не совсем разбираюсь в классах оно так и должно быть сразу выводится все заполненые поля или я в консоли должен заполнять все поля (книга автор и т.д.) чтобы книг было несколько?
0
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
25.01.2013, 00:25 #5
Цитата Сообщение от илья1995 Посмотреть сообщение
чтобы книг было несколько?
вот смотри: be - это одна книга.
Напишешь ещё так: Book be3 - ещё одна книга.
Т.е создаешь обьекты класса. Один обьект - одна книга.
0
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 00:45  [ТС] #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 минут
все разобрался в программе все понял можно как нибудь ее переделать чтобы я данные о книге не в майне заполнял а в консоли?
0
lemegeton
25.01.2013, 01:01
  #7

Не по теме:

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

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

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

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

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

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

"Тип книги" не корректно наследовать от "книги". Потому что "тип книги" не является "книгой". Бред пьяного мультипликатора.
я таково не писал вроде
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
25.01.2013, 01:28 #11
Цитата Сообщение от илья1995 Посмотреть сообщение
я таково не писал вроде
Вот тут.
Цитата Сообщение от илья1995 Посмотреть сообщение
3)Производный класс Туре имеет следующие элементы:
Добавлено через 2 минуты
Цитата Сообщение от илья1995 Посмотреть сообщение
классы вижу второй рас в жизни так что как понял так и сделал я понимаю что у меня плохой код но как смог так сделал
Да при чем тут ваш код?!
Тут как ни крути, если делать по заданию, код будет плохой. Потому что задание плохое.
0
илья1995
3 / 3 / 1
Регистрация: 17.10.2011
Сообщений: 169
25.01.2013, 01:34  [ТС] #12
ну какой вариант попался такой попался ниче не сделаешь
0
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
25.01.2013, 14:23 #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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2013, 14:23
Привет! Вот еще темы с ответами:

Class book continue - C++
Задание: Создать заголовочный файл bookshop.h и описать в нём класс bookshop со следующими полями (закрытыми) и функциями-членами...

Динамические структуры Book - C++
Подскажите пожалуйста, как запихнуть в элемент (BOOK** k) структуры (KART) адрес созданной одиночной динамической переменной структуры...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами - C++
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Написать структуру Book и функции сортировки массива таких структур - C++
Ребят помогайте , нужно лабу сдать , выручите . Описать структуру . Заполнить данными массив из 5 элементов . В полученной базе данных...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.01.2013, 14:23
Ответ Создать тему
Опции темы

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