setw() sets the width for the next element in the stream ie the number of character positions in which the value should be output. If the value to be output is narrower than the specified width then fill characters are inserted as padding. A value wider than the designated width will not be truncated. If you want the book info to align, try something like this

Code:
	// Print Book1 info
	cout << "Book 1: " << Book1.title << endl;
	cout << setw(8) << " " << Book1.author << endl;
	cout << setw(8) << " " << Book1.subject << endl;
	cout << setw(8) << " " << Book1.book_id << endl;
You could also use tabs like this
Code:
	// Print Book1 info
	cout << "Book 1: " << Book1.title << endl;
	cout << "\t" << Book1.author << endl;
	cout << "\t" << Book1.subject << endl;
	cout << "\t" << Book1.book_id << endl;
I would also suggest that you use type string in your struct rather than fixed size char arrays. See http://www.cplusplus.com/reference/string/