I have a this project due this Friday and this is what I have so far. I don't understand what to write for the the library (public) functions in the library class & the operator= functions for the book & card classes. I don't want you to give me the answer, I just need to know how to do it because I'm clueless.

//header file for books class

#ifndef BOOKS_H
#define BOOKS_H

#include "card.h"

#include <iostream>
using std :: istream;

class Book {
friend istream &operator<<(istream &, Book &);
private:
char *title;
char *author;
int size1;
int size2;
int BookID;
int status;
Card CardID;
public:
Book(char *, char *, int, int, int);
void print();
~Book();
Book(Book);
Book& operator=(const *Book&);
int getBookID() {return BookID;}
int getstatus() {return status;}
void setstatus(int);
int getCardID() {return CardID;}
void setCardID(int);
};

#endif


//member definitions for book class
#include "book.h"
#include "card.h"
#include <iostream>

using std :: cout;
using std :: endl;

Book :: Book(char *book_name, char *name, int Bid, int s, int Cid)
:CardID
{
while(title != $$$) {
strcpy(title, book_name);
strcpy(author, name);
BookID = Bid;
status = s;
if(status == 0) {
cout << "on shelf" << endl;
}else if (status == 1) {
cout << "checked out" << endl;
}else {
cout << "at the bindery" << endl;
}
CardID = Cid
}
}
istream &operator<<(istream &input, Book &b)
{
input >> b.title >> b.author >> b.BookID
>> b.status >> CardID;
}
void Book :: print () {

cout << title << endl;
cout << author << endl;
cout << BookID << endl;
cout << status << endl;
CardID.print();

}
Book :: ~Book() {

delete [] title;
delete [] author;
delete BookID;
delete status;
delete CardID;
}
Book :: Book(const Book &b) {

title = new char[strlen(title) + 1];
assert(title != 0);
size1 = strlen(title) + 1;

for(int i = 0; i < size1; i++)
title[i] = b.title[i];

author = new char[strlen(author) + 1];
assert(author != 0);
size2 = strlen(author) + 1;

for(int j = 0; j < size2; j++)
author[j] = b.author[j];

BookID = b.BookID;
status = b.status;
CardID = b.CardID;
}
Book &Book :: operator=(const Book &b) {
}
void Book :: setstatus(int s) {

status = (s >= -1 && s <= 1) ? s : 0;

return *this;
}
void Book :: setCardID(int c) {

CardID = (c >= 0) ? c : 0;

return *this;
}


// header file fo card class

#ifndef CARD_H
#define CARD_H

#include "book.h"

#include <iostream>
using std :: istream;

class Card {
friend istream &operator<<(istream &, Card &);
private:
char *name;
int size3;
char phone[13];
int CardID;
Book BookID;
public:
Card(char *, char [], int, int);
void print();
~Card();
Card(Card);
Card& operator=(const Card&);
int getCardID() {return CardID;}
int getBookID() {return BookID;}
void setBookID(int);
};

#endif

//member definitions for card class

#include "card.h"
#include "book.h"
#include <iostream>
using std :: cout;
using std :: endl;

Card :: Card (char *n, char p, int c, int b)
:BookID
{
strcpy(n, name);
phone = p;
CardID = c;
BookID = b;
}
istream &operator<<(istream &input, Card &c) {

input >> c.name >> c.phone >> c.CardID
>> c.BookID;
}
void Card :: print() {

cout << name << endl;
cout << phone << endl;
cout << CardID << endl;
BookID.print();
}
Card :: ~Card() {

delete [] name;
delete [] phone;
delete CardID;
delete BookID;
}
Card :: Card(const Card &c) {

name = new char[strlen(name) + 1];
assert(name != 0);
size3 = strlen(name) + 1;

for(int i = 0; i < size3; i++)
name[i] = c.name[i];

phone = new int[13];
assert(phone != 0);

for(int j = 0; j < 13; j++)
phone[j] = c.phone[j];

CardID = c.CardID;
BookID = c.BookID;
}
void Card :: setBookID(int b) {

BookID = (b >= 0) ? b : 0;

return *this;
}
Card &Card :: operator=(const Card &c) {
}


//header file for library class

#ifndef Library_H
#define Library_H

class Library {
private:
int num_books;
int num_cards;
Book *title;
Card *name;
print_lists;
public:
Library(Book, int, Card, int);
~Library();
DoCommand(char);
};

#endif

//member definition for library class

#include "library.h"
#include "book.h"
#include "card.h"

using std :: cout;
using std :: cout;

Library :: print_lists(Book b, int num_b, Card c, int num_c) {

while(b != $$$) {
cout << "Processing book - ";
for(int i = 0; i < size5; i++)
cout << b[i];
cout << endl;
num_b++;
}
cout << num_b << "books" << endl;

while(b == $$$ && c !=(cin.eof()) {
cout << "Processing card - ";
for(int j = 0; j < size6; j++)
cout << c[j];
cout << endl;
num_c++;
}
cout << num_c << "cards" << endl;
}

//file: user.h
// header file for class user - an interesting
// class with no data!

#ifndef User_H_
#define User_H_

class User {
public:
User(); // initialize the user object
// by showing the menu
char GetCommand(); // return a legal char from KB

private:
void ShowMenu(); // show the available choices
Bool IsLegal(char cmd); // return true if cmd is legal
};

#endif

//file: user.cc
// implementation file for class user.

#include <iostream.h>
#include <stdlib.h>
#include <ctype.h>
#include "utility.h"
#include "user.h"

User :: User() {
ShowMenu();
}

Bool User :: IsLegal(char cmd) {
// New commands can easily be added.
if( (cmd == 'C') || (cmd == 'B') || (cmd == 'O') ||
(cmd == 'I') || (cmd == 'X') || (cmd == 'M') )
return True;
else
return False;
}

void User :: ShowMenu() {
// A good technique for setting up a menu,
// so that it is extensible.
// ...ignore warnings from compiler....
static char *menu[] = {"\n\tC:\tshow all library Cards",
"\tB:\tshow all library Books",
"\tO:\tcheck Out a book",
"\tI:\tcheck In a book",
"\tM:\tdisplay this Menu",
"\tX:\teXit and close the library",
NULL
};

int k = 0;
cout << " Available Commands: " << endl;
while( menu[k] )
cout << menu[k++] << endl;

}

char User :: GetCommand() {
char cmd;

while( True ) {
cout << "\n> ";
cin >> cmd;
cmd = toupper(cmd);

if( IsLegal(cmd) ) {
if( cmd == 'M' )
ShowMenu();
else
return cmd;
}
else {
cout << "\n*** Unrecognized command+++." << endl;
cout << "Type M to see menu." << endl;
}
}
}


//file: utility.h

#ifndef Utility_H_
#define Utility_H_

enum Status { OK, Error1, Error2 };
enum Bool {False, True};

#endif


HERE'S THE MAIN PROGRAM:
// File: proj3.cc
// main function for library app
#include <iostream.h>
#include <fstream.h>
#include "library.h"
#include "utility.h"
#include "user.h"

int main() {
ifstream inFile("library.data");
Library theLibrary( inFile );
User theUser;
char Command;

while( (Command = theUser.GetCommand()) != 'X' )
theLibrary.DoCommand( Command );

return EXIT_SUCCESS;
}


MAKEFILE:
# makefile for library application
# each entry in the makefile has two lines:
# line 1 is of the form--- module-name:dependency list
# line 2 is of the form--- <tab> command to build the module

project3: card.o book.o library.o proj3.o user.o
CC user.o card.o book.o library.o proj3.o -o project3

proj3.o: proj3.cc card.h book.h library.h user.h
CC -c proj3.cc

library.o: library.cc library.h card.h book.h
CC -c library.cc

book.o: book.cc book.h
CC -c book.cc

card.o: card.cc card.h
CC -c card.cc

user.o: user.cc user.h utility.h
CC -c user.cc

SAMPLE-RUN:
Script started on Mon May 12 10:30:33 1997
deneb [/a/sol/m/csuh/albright/Teaching/cis181/Projects/Librarian/Assignment-Files]> make

CC -c library.cc

CC -c proj3.cc

CC user.o card.o book.o library.o proj3.o -o project3

deneb [/a/sol/m/csuh/albright/Teaching/cis181/Projects/Librarian/Assignment-Files]> project3

Initializing library database ...

initializing book list:

processing book - Intro to C++

processing book - Basic Computer Concepts

processing book - Intro to Word Processing

processing book - How to be a Comp Sci Major

processing book - Design Techniques

processing book - The Poetry of Programs

processing book - Programs that Byte

7 books in library.

initializing card list:

processing card- Peter Piper

processing card- Reader Rabbit

processing card- Bugs Malone

processing card- Uncle Remus

processing card- Mr. Rogers

processing card- Mr. Wizard

processing card- Howdie Doodie

processing card- Clara Belle

processing card- Vincent Vega

processing card- Mia Wallace

10 cards in library.

Done initializing Library Database.

Available Commands:



C: show all library Cards

B: show all library Books

O: check Out a book

I: check In a book

M: display this Menu

X: eXit and close the library



> x

... deleting library database ...

deneb [/a/sol/m/csuh/albright/Teaching/cis181/Projects/Librarian/Assignment-Files]> exit
script done on Mon May 12 10:31:11 1997

FILE:
Intro to C++
Deitel
100 0 0
Basic Computer Concepts
Smith
105 -1 0
Intro to Word Processing
Lamb
110 0 0
How to be a Comp Sci Major
U. R. Redeyed
120 0 0
Design Techniques
Dirksen
130 0 0
The Poetry of Programs
e.e. deitel
140 0 0
Programs that Byte
I. C. Errer
150 0 0
$$$
Peter Piper
222-333-4444
200 0
Reader Rabbit
101-919-1234
210 0
Bugs Malone
123-456-7890
220 0
Uncle Remus
220-220-9900
230 0
Mr. Rogers
123-123-4321
240 0
Mr. Wizard
314-159-2658
250 0
Howdie Doodie
989-767-1212
260 0
Clara Belle
111-222-3333
270 0
Vincent Vega
999-000-1000
280 0
Mia Wallace
246-135-0246
290 0