Hey so this has been very very strange. Here is the problem:
Some of the characteristics of a book are the title, author(s), publisher, ISBN, price, and year of publication. Design a class bookType that defines the book as an ADT.
1. Each object of the class bookType can hold the following information about a book: title, up to four authors, publisher, ISBN, price, and number of copies in stock. To keep track of the number of authors, add another data member.
2. Include the member functions to perform the various operations on objects of the type bookType. For example, the usual operations that can be performed on the title are to show the title, and check whether a title is the same as the actual title of the book. Similarly, the typical operations that can be performed on the number of copies in stock are to show the number of copies in stock, set the number of copies in stock, update the number of copies in stock, and return the number of copies in stock. Add similar operations for the publisher, ISBN, book price, and author. Add the appropriate constructors and a destructor ( if one is needed).
3. Write the definitions of the member functions of the class bookType.
Write a program that uses the class bookType and test the various operations on the objects of class bookType. Declare an array of 100 components of the type bookType. Set to 5 components. Display the output.
Here is what I currently have although I have messed with it alot,
header file
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 157 158 159 160 161 162 163 164
|
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
class bookType
{
private:
string _title;
string _authors[4];
string _publisher;
string _ISBN;
double _price;
int _numOfcopies;
int _numOfAuthor;
string _year;
public:
bookType();
~bookType();
void set_title(string title);
string get_title();
int compare_titles(string title);
void list_authors();
void set_numOfcopies(int num);
int get_numOfcopies();
void updateNumOfcopies(int num);
//void show_numOfcopies();
void set_publisher(string pub);
string get_publisher();
// void show_publisher();
void set_ISBN(string isbn);
string get_ISBN();
//void show_ISBN();
void set_price(double price);
double get_price();
//void show_price();
void add_author(string author);
string get_authors(int num);
//void show_authors();
void set_year(string year);
string get_year();
//void show_year();
void clear_authors();
void set_numOfAuthors(int num);
int get_numOfAuthors();
};
bookType::bookType(){
_title = "";
_authors[0] = "";
_authors[1] = "";
_authors[2] = "";
_authors[3] = "";
_publisher = "";
_price = 0;
_ISBN = "";
_numOfAuthor = 0;
_numOfcopies = 0;
_year = "";
}
bookType::~bookType()
{
_title = "";
_authors[0] = "";
_authors[1] = "";
_authors[2] = "";
_authors[3] = "";
_publisher = "";
_price = 0;
_ISBN = "";
_numOfAuthor = 0;
_numOfcopies = 0;
_year = "";
}
void bookType::set_title(string title){
_title = title;
}
string bookType::get_title(){
return _title;
}
void bookType::clear_authors(){
_numOfAuthor = 0;
}
void bookType::set_publisher(string pub){
_publisher = pub;
}
string bookType::get_publisher(){
return _publisher;
}
void bookType::add_author(string author)
{
_authors[_numOfAuthor] = author;
}
void bookType::set_numOfAuthors(int num)
{
_numOfAuthor = num;
}
int bookType:: get_numOfAuthors()
{
return _numOfAuthor;
}
void bookType::list_authors()
{
int i = 0;
cout << "Authors are" << endl;
for (int i = 0; i < 4; i++)
if (_authors[i] != "")
{
cout << _authors[i] << endl;
}
}
void bookType::set_numOfcopies(int num)
{
_numOfcopies = num;
}
void bookType::updateNumOfcopies(int num)
{
_numOfcopies = _numOfcopies + num;
}
int bookType::get_numOfcopies()
{
return _numOfcopies;
}
void bookType::set_ISBN(string isbn)
{
_ISBN = isbn;
}
string bookType::get_ISBN()
{
return _ISBN;
}
void bookType::set_price(double price)
{
_price = price;
}
double bookType::get_price()
{
return _price;
}
void bookType::set_year(string year)
{
_year = year;
}
string bookType::get_year()
{
return _year;
}
int bookType::compare_titles(string title)//check this
{
int i = (title == _title);
return i;
}
|
here is my main
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
|
#include "bookType.h"
#include <fstream>
int main()
{
bookType books[5];
ifstream theFile("books.dat");
string line;
string line2;
double number;
for (int i = 0; i < 5; i++)
{
getline(theFile, line);
books[i].set_title(line);
getline(theFile, line);
books[i].set_ISBN(line);
getline(theFile, line);
books[i].set_publisher(line);
getline(theFile, line);
books[i].set_year(line);
theFile >> number;
theFile.ignore(numeric_limits<streamsize>::max(), '\n');
books[i].set_price(number);
theFile >> number;
theFile.ignore(numeric_limits<streamsize>::max(), '\n');
books[i].set_numOfcopies(number);
theFile >> number;
theFile.ignore(numeric_limits<streamsize>::max(), '\n');
books[i].set_numOfAuthors(number);
//theFile >> line;
//books[i].add_author(line);
}
for (int i = 0; i < 5; i++)
{
cout << books[i].get_title();
cout << endl;
cout << books[i].get_ISBN();
cout << endl;
cout << books[i].get_publisher();
cout << endl;
cout << books[i].get_year();
cout << endl;
cout << books[i].get_price();
cout << endl;
cout << books[i].get_numOfcopies();
cout << endl;
cout << books[i].get_numOfAuthors();
cout << endl;
//books[i].list_authors();
}
//a[2].list_authors();
cout << endl;
//a[0].get_authors(1);
std::cin.get();
return 0;
}
|
Sadly the code button doesn't seem to be working again so I typed it in manually but hopefully that will work. Anyways I was wondering what I am missing because I have tried to test reading the file and assigning it to each variable for each book. First I did just the first book which worked but when I looped to the second book after the first two strings for the second book it started to spit out 1's and other random values. Then I tried a second way which worked expect for after the firt book the doubles like price were only showing as ints. Then the third way which I have in this post worked for everything for each book expect for the authors which I had commented because I wanted to make sure everything else was working before that part.
Ok now for the strange part, it seems for each time I would tweak with it and get it closer to working but then when I was continue tweaking with it I would get some crazy outputs. Then I would go back to what had been working but when I run it I get more crazy outputs or errors with the same code that had been working. Then I restart my vso and it will run correctly again, expect for this last version which it will just allow me to run without an error but still is not giving correct outputs. Am I missing something? Does it have to do with not using the deconstruct correctly? It just seems like my memory is getting messed up which is affecting the output.