0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
||||||
1 | ||||||
Курсовая: Домашняя библиотека09.05.2013, 11:51. Показов 6672. Ответов 21
Метки нет (Все метки)
Добрый день участники форума! На этом форуме видел программу к этому задание, но оно не удовлетворяет требованию курсовой, и хочу сам разобраться и написать) Напомню задание:
Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным количеством книг, поиска книги по какой-либо признаки (например, по автору или по году издания), добавления книг библиотеку, удаления книг из нее, сортировки книг по различным полей. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса. ТРЕБОВАНИЯ К ПРОГРАММЕ Программа должна отвечать следующим требованиям: 1. Количество классов не менее 6. 2. Наличие связей между классами, в том числе отношений наследования глубиной не менее 3. 3. Для инициализации объектов должны использоваться конструкторы разных видов. 4. В программе должны использоваться виртуальные функции. 5. Должен использоваться механизм перегрузки функций и операторов. 6. Используйте абстрактные классы. 7. В классах должны использоваться различные виды доступа к полям и методам (public, private, protected). У меня вопрос : Наличие связей между классами, в том числе отношений наследования глубиной не менее 3 - это приблизительно так
0
|
09.05.2013, 11:51 | |
Ответы с готовыми решениями:
21
Описать класс «домашняя библиотека» Описать класс «домашняя библиотека» Описать класс «домашняя библиотека» Написать структуру «Домашняя библиотека» |
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
09.05.2013, 14:20 | 2 | |||||
1
|
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
||||||
10.05.2013, 22:37 [ТС] | 3 | |||||
Начал писать программу,и в самом начале пошли ошибки. Подскажите пожалуйста что не правильно и как можно лучше сделать?
Очень нужна помощь!
0
|
4772 / 2581 / 893
Регистрация: 29.11.2010
Сообщений: 5,582
|
|
11.05.2013, 01:09 | 4 |
Аж три уровнял глубины... Это, на минуточку, очень дофига. Будет чертовски сложно придумать, куда-б прикрутить такое.
STL использовать можно? Не хотелось бы велосипедить -- в разы увеличится сложность и без того непростого задания. Хотя бы std::string, что-ли.
2
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
11.05.2013, 02:38 | 5 |
Для класса "домашняя библиотека" достаточно одного дополнительного класса (или структуры): "книга".
Ещё "книжный шкаф", что-ли, придумать? Добавлено через 5 минут Класс Zapolnenie_Dan тут не к месту. Достаточно метода добавления книги в классе "домашняя библиотека".
1
|
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
|
11.05.2013, 09:31 [ТС] | 6 |
буду рад любой помощи! Даже просто на словах, как создать три наследования в моём случае.
0
|
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
||||||
13.05.2013, 22:59 [ТС] | 7 | |||||
немного изменил, но не пойму что не так ,при провке компилятор пишет что ошибки нет . Когда я откомрилирую программу появляеся консоль ,после я выбираю скалько книг добавить в библиотеку., а после у меня на экране появляется crtexe.c ? это ведать какоето исключение если программа не правильно работает?? И Что не так с программой :
Подскажите пожалуйста, если не трудно!
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
13.05.2013, 23:25 | 8 |
Тут всё неправильно. Используйте не указатели на char, а объекты класса string. Создайте класс Book, с данными о книге, и с методами получения и установки этих данных. Создайте класс Библиотека, который будет представлять из себя массив объектов класса Book. В качестве такого массива используйте vector <Book>. В нём реализуйте методы добавления книг, сортировки, поиска и пр.
1
|
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
||||||
27.05.2013, 09:50 [ТС] | 9 | |||||
Подскажите пожалуйста почему я не могу создать объект на класс Bibl, ведь я переопределил чистую виртуальную функцию в абстрактном кдассе Abstr
Добавлено через 10 минут
0
|
4772 / 2581 / 893
Регистрация: 29.11.2010
Сообщений: 5,582
|
|
27.05.2013, 10:26 | 10 |
А зачем вы наследуете класс библиотеки от класса книги?
Библиотека не является и не ведет себя как книга. Наследование неуместно. У вас разное объявление функции print в классе abstr и в классе bibl. Это значит, что для компилятора это две абсолютно разные функции.
2
|
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810
|
|
27.05.2013, 11:31 | 12 |
Предлагаю сделать так.
1. Создаём класс Library, который моделирует библиотеку, хранит список объектов книг-журналов, вообще говоря предметов библиотеки и реализует операции добавления, удаления, поиска и т.д. 2. Создаём абстрактный класс Item, моделирующий предмет библиотеки. Вот тут то и будут виртуальные методы. 3. Создаём класс Book, наследник Item, который моделирует книгу и переопределяет виртуальные методы Item 4. Создаём класс Magazine, наследник Item, который моделирует журнал и тоже переопределяет. Тут мы получим и инкапсуляцию, и наследование, и полиморфизм. Откуда взять ещё два класса, ума не приложу. Придумать ещё одну сущность-наследник Item только если. Например газету, но газета суть тот же журнал
2
|
4772 / 2581 / 893
Регистрация: 29.11.2010
Сообщений: 5,582
|
||||||
27.05.2013, 11:39 | 13 | |||||
Может как-нибудь так.
У книги может быть несколько жанров и несколько авторов... Пять классов достаточно. Наследование запихать вообще некуда.
1
|
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810
|
|
27.05.2013, 12:17 | 14 |
Мне кажется этот подход не пойдет. Фактически классы жанров и авторов это обертки стринг-ов. Да и наследования нет
1
|
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
|
27.05.2013, 12:56 [ТС] | 15 |
Спасибо всем за помощь и за идеи!! Буду пытаться сейчас реализовать
Добавлено через 6 минут Только мне обязательно необходимо наследование!
0
|
4772 / 2581 / 893
Регистрация: 29.11.2010
Сообщений: 5,582
|
|
27.05.2013, 13:17 | 16 |
Это же пример. У автора, например, может быть еще год рождения, год смерти, у жанра может быть еще что-нибудь, типа поджанра.
Для решения поставленной задачи наследование избыточно. Придется что-то искусственно придумывать.
1
|
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
||||||
31.05.2013, 16:15 [ТС] | 17 | |||||
Задание немного изменилось) Теперь я записываю всё информацию в файл, считываю из файла. вывожу всю информацию, добавляю, удаляю, сортирую и всё в фале. Добавление и считывание из файла у меня вышло сделать, но не выходит удаление и сортировка.
На счёт этого я загуглил и понял что для удаления мне надо считать всю информацию из файла, изменить и перезаписать заново, но у меня не выходит создать поиск по файлу. Подскажите пожалуйста, как сделать поис и удаление! Очень нужна помощь! Желательно к этому коду который я написал:
Уже второй день мучаюсь, но не могу найти как удалить строку из файла. Помогите кому не трудно!
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
31.05.2013, 16:29 | 18 |
И где результат мучений?
Добавлено через 4 минуты Считали структуры из файла в массив структур (можно сначала посчитать количество строк в файле и создать динамический массив под это количество структур). Перебираете массив, ищете нужную. Если нашли, то запомнили индекс этой структуры в массиве. Открыли файл для записи и записали в файл массив, кроме структуры с найденным индексом.
1
|
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
|
||||||
31.05.2013, 16:50 [ТС] | 19 | |||||
Результаты мучений - это сделанный мною корявый-неробочий код удаления строки из файла, который я просто удалил.
Как мне записать строку из файла в определенный элемент массива строк? Я только знаю как одно слово считать в один элемент массива строк. А с помощью getliane() не выходит.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
31.05.2013, 17:09 | 20 | |||||
Я же написал:
При чём здесь массив строк? А в поля элемента такого массива читайте из файла через >>. Добавлено через 7 минут Массив Book создайте. Потом в поля каждого элемента массива читайте из файла:
1
|
31.05.2013, 17:09 | |
31.05.2013, 17:09 | |
Помогаю со студенческими работами здесь
20
Описать класс «Домашняя библиотека»; реализовать поиск книги по заданному признаку Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги Домашняя библиотека домашняя библиотека Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |