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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
#1

Курсовая: Домашняя библиотека - C++

09.05.2013, 11:51. Просмотров 2848. Ответов 21
Метки нет (Все метки)

Добрый день участники форума! На этом форуме видел программу к этому задание, но оно не удовлетворяет требованию курсовой, и хочу сам разобраться и написать) Напомню задание:

Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным количеством книг, поиска книги по какой-либо признаки (например, по автору или по году издания), добавления книг библиотеку, удаления книг из нее, сортировки книг по различным полей. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
ТРЕБОВАНИЯ К ПРОГРАММЕ
Программа должна отвечать следующим требованиям:
1. Количество классов не менее 6.
2. Наличие связей между классами, в том числе отношений наследования глубиной не менее 3.
3. Для инициализации объектов должны использоваться конструкторы разных видов.
4. В программе должны использоваться виртуальные функции.
5. Должен использоваться механизм перегрузки функций и операторов.
6. Используйте абстрактные классы.
7. В классах должны использоваться различные виды доступа к полям и методам (public, private, protected).

У меня вопрос : Наличие связей между классами, в том числе отношений наследования глубиной не менее 3 - это приблизительно так

C++
1
2
3
4
5
Class A {
};
class B{
};
Class C : public A, public B {};
то есть есть ли здесь наследование ни меньше 3?? Заранее спасибо, за ответы!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2013, 11:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Курсовая: Домашняя библиотека (C++):

Описать класс «домашняя библиотека» - C++
вот задание Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по...

Описать класс «домашняя библиотека» - C++
Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку...

Написать структуру «Домашняя библиотека» - C++
Написать структуру «Домашняя библиотека». Структура должна содержать не менее 5 полей (автор, название, жанр, издательство, год выпуска,...

Описать класс «домашняя библиотека» - C++
Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку...

Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги - C++
Друзья, не работает функция add. Программа крашится. Я понимаю, что он как бы пытается записать в то же место, но не знаю как, исправить....

Домашняя бухгалтерия - C++
Помогите, пожалуйста, создать домашнюю бухгалтерию) совсем не могу разобраться)) Требования: Человек туда заносит свои...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
27.05.2013, 13:17 #16
Цитата Сообщение от pizurok Посмотреть сообщение
Фактически классы жанров и авторов это обертки стринг-ов.
Это же пример. У автора, например, может быть еще год рождения, год смерти, у жанра может быть еще что-нибудь, типа поджанра.

Цитата Сообщение от Sniti01 Посмотреть сообщение
Только мне обязательно необходимо наследование!
Для решения поставленной задачи наследование избыточно.
Придется что-то искусственно придумывать.
1
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
31.05.2013, 16:15  [ТС] #17
Задание немного изменилось) Теперь я записываю всё информацию в файл, считываю из файла. вывожу всю информацию, добавляю, удаляю, сортирую и всё в фале. Добавление и считывание из файла у меня вышло сделать, но не выходит удаление и сортировка.
На счёт этого я загуглил и понял что для удаления мне надо считать всю информацию из файла, изменить и перезаписать заново, но у меня не выходит создать поиск по файлу. Подскажите пожалуйста, как сделать поис и удаление! Очень нужна помощь!
Желательно к этому коду который я написал:
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
class Book {
 
public:
string Auzer;
string name;
string tupe;
string number;
int year;
int str;
};
 
 
class Librari: public Book {
private:
 vector <string> bibl_book;
public:
 void add (int);
 void prosmotr();
 void sort (int, int);
 void udalenie ();
};
 
 
void Librari::add (int kol){
      string end_str = "end_str";
        for (int i = 0; i < kol; i++){
    cout << "Введите номер книги: ";
    cin >> number;      
    cout << " Введите Автора: " ;
    cin >> Auzer ;
    cout << " Введите название книги: ";
    cin >> name;
    cout << " Введите год издания: ";
    cin >> year;
    cout << " Введите количество страниц: ";
    cin >> str;
    cout << endl;
        //      ******запишем данные в файл*******
    ofstream bibl (" book.txt ", ios_base::app);
    
    if (!bibl.is_open()) // если файл не был открыт
    {
     cout << "Файл не может быть открыт или создан\n"; // напечатать соответствующее сообщение
    }
    else{
    bibl << number << " ";
    bibl << Auzer  << " ";
    bibl << name << " ";
    bibl << year << " ";
    bibl << str << " ";
    bibl << "\n";
    }
  }
}
 
void Librari::prosmotr (){
    char buf[1000];
    ifstream bibl (" book.txt ", ios_base::in ); // открываем файл только для чтения
    if (!bibl.is_open()) // если файл небыл открыт
    {
     cout << "Файл не может быть открыт или создан\n"; // напечатать соответствующее сообщение
    }
    else{
            cout << "    Домашняя библиотека!!! " << endl;
        while (!bibl.eof() ){
        bibl.getline(buf,1000);
        cout << buf << endl;
        }
    }   
}
 
    
void Librari::udalenie( ){
 
    char stroka [5000];
    char s [50];
    int i = 0;
    string noll = " ";
    ifstream bibl (" book.txt ", ios_base::app);
    if (!bibl.is_open()) // если файл небыл открыт
    {
     cout << "Файл не может быть открыт или создан\n"; // напечатать соответствующее сообщение
    }
/*
    string del_book;
 cout << "Введите номер книги которую хотите удалить: ";
 cin >> del_book;*/
 
    bibl.getline(stroka,5000);
 
 }
 
 
 
int _tmain(int argc, _TCHAR* argv[]){
 
 setlocale(LC_CTYPE, "rus");
Librari Object;
                    //      ***********меню программы***********
    while (true){
      cout << "        MENU" << endl;
      cout << "1 - Для добавления книг в библиотеку: " << endl;
      cout << "2 - Для просмотра книг в библиотеке: " << endl;
      cout << "3 - Для сортировки книг в библиотеке: " << endl;
      cout << "4 - Для удаления книг в библиотеке: " << endl;
      cout << "5 - Взять книгу в библиотеке: " << endl;
      cout << "6 - Выйти из программы: " << endl;
      int d;
      cin >> d;
 
      switch(d){
      case 1 : {
          cout << "Введите сколько книг будуть занесены в библиотеку :";
            int kol; 
              cin >> kol;
                Object.add (kol);
                  break;
               }
      case 2 : { Object.prosmotr();
                  break;
               }
      case 3 : {
         /*cout << "Введите адрес 1 книги:";
           int adr_1, adr_2;
            cin >> adr_1;
             cout << "Введите адрес 2 книги:";
              cin >> adr_2;
               Object.sort(adr_1, adr_2);
                  break;*/
               }
       case 4 : {
    /*  cout << "Введите адрес книги которую хотите удалить (от 1 - n)";
           int r;
            cin >> r;*/
                Object.udalenie();
          break;
               }
       case 5: {
              //
               }
       case 6: {return 0; }
          
   default: 
       cout << "Ошибка! Введите правельный знак операции!" << endl;
      }
    }
    system("pause");
    return 0;
}
Добавлено через 17 часов 38 минут
Уже второй день мучаюсь, но не могу найти как удалить строку из файла. Помогите кому не трудно!
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.05.2013, 16:29 #18
Цитата Сообщение от Sniti01 Посмотреть сообщение
Уже второй день мучаюсь
И где результат мучений?

Добавлено через 4 минуты
Считали структуры из файла в массив структур (можно сначала посчитать количество строк в файле и создать динамический массив под это количество структур). Перебираете массив, ищете нужную. Если нашли, то запомнили индекс этой структуры в массиве. Открыли файл для записи и записали в файл массив, кроме структуры с найденным индексом.
1
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
31.05.2013, 16:50  [ТС] #19
Цитата Сообщение от alsav22 Посмотреть сообщение
И где результат мучений?
Результаты мучений - это сделанный мною корявый-неробочий код удаления строки из файла, который я просто удалил.
Как мне записать строку из файла в определенный элемент массива строк?
Я только знаю как одно слово считать в один элемент массива строк. А с помощью getliane() не выходит.
C++
1
2
3
ifstream bibl("имя файла", ios_base::app)
string h[100];
bibl >> h[0];
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.05.2013, 17:09 #20
Цитата Сообщение от Sniti01 Посмотреть сообщение
Как мне записать строку из файла в определенный элемент массива строк?
Я же написал:
Цитата Сообщение от alsav22 Посмотреть сообщение
Считали структуры из файла в массив структур
При чём здесь массив строк? А в поля элемента такого массива читайте из файла через >>.

Добавлено через 7 минут
Массив Book создайте. Потом в поля каждого элемента массива читайте из файла:
C++
1
2
3
4
5
6
7
...
Book arr[100];
...
fin >> arr[i].Auzer;
if (fin.eof()) break;
fin >> arr[i].name;
...
и т.д. Расписывать детали времени нет.
1
Sniti01
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 50
31.05.2013, 17:10  [ТС] #21
Огромное спасибо за помощь!!
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.05.2013, 17:19 #22
При чтении в массив из файла можно сразу искать нужное поле для удаления, чтобы потом лишний раз массив не перебирать.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2013, 17:19
Привет! Вот еще темы с ответами:

Подстановка в #include [не домашняя работа] - C++
У меня есть скачанная библиотека log4cplus, но вопрос не по ней. Она лежит распакованная где-то. например, в...

Описать класс "домашняя библеотека" - C++
Задание: Описать класс &quot;домашняя библеотека&quot;,поиск книг по автору и году выдачи, предусмотреть добавленние книг в библеотеку и удаление...

домашняя библиотека - Delphi
помогите создать бомашнюю библиотеку в дэлфи

домашняя библиотека - Delphi БД
помогите сосзать в дэлфи домашнюю библиотеку


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

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

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