Can't display book and borrower's details.

This is a discussion on Can't display book and borrower's details. within the C++ Programming forums, part of the General Programming Boards category; Dear all, I can't borrow a book even though the code does not have any error. When I try to ...

  1. #1
    Registered User
    Join Date
    Apr 2003
    Posts
    16

    Can't display book and borrower's details.

    Dear all,
    I can't borrow a book even though the code does not have any error. When I try to display the book details along with the member's name (in case the member has borrowed the book), I can't display the member's name, but only the book details and a message: "no member has borrowed a book".


    Though the code works fine when I have one book and one member, but now that I'm using an array of books and members it doesn't work.


    The code that displays the book and the member's name when I have 1 book and 1 member is:
    Code:
    void Book::display(Member* borrower)
    {
    	cout<<"Book title and author are: "<<this->bookDetails<<"."<<endl;
    	if (borrower)
    		cout<<"The member's name is: "<<borrower->get_Data()/*get_name()*/<<"."<<endl;
    	else
    		cout<<"No member has borrowed a book."<<endl;
    }

    Code:
    char* get_Data(){return this->name;}
    returns the member's full name, entered in the constructor


    I have an associationlist that holds pointers to associations. Each association has two pointers, one to a book object and the other to the member object.

    Code:
    class AssociationList
    {
    public:
    	//It initialises all slots in the associationlist array to zero.
    	AssociationList();
    
    	/* It searches the associationlist, if book is found then returns 
    	   the member that is connected with.*/
    	   //Member* get_member(Book* book);
    	   Member* get_data(Book* book);
    	
    	/* It searches the associationlist, if member is found then returns
    	   the book that is connected with.*/ 
    	   //Book* get_book(Member* member);
    	   Book* get_data(Member* member);
    
    	/* Checks that book/member not already linked
    	   creates association if objects are free to link
    	   returns whether or not link was valid */
    	bool link(Book* book,Member* member);
    
    	/* Checks that book and member are linked 
    	   deletes association if they are linked
    	   returns whether or not unlinking was valid */
    	bool unlink(Book* book,Member* member);
    private:
    	Association<Book,Member>* association_list[LIST_SIZE];
    };


    The code that performs the linking between 1 book object and 1 member object is the following:

    Code:
    template<class Book,class Member>
    bool AssociationList<Book,Member>::link(Book* book,Member* member)
    {
    	bool searching=true;
    	bool success=true;
    	int index=0;
    	int free_slot;
    
    	while(searching)
    	{
    		if(this->association_list[index])
    			if((this->association_list[index]->linked_book()==book ||
    				(this->association_list[index]->linked_member()==member)))
    		{
    			searching=false;
    			success=false;
    		}
    			else
    				index++;
    		else
    		{
    			free_slot=index;
    			index++;
    		}
    		if(searching&&(index == LIST_SIZE))
    			searching=false;
    	}
    	if (success)
    		this->association_list[free_slot]=new Association(book,member);
    	return success;
    }


    Code that is used in the link function

    Code:
    template<class Book,class Member>
    class Association
    {
    	public:
    		//Sets up book and member with parameters
    		Association(Book* book, Member* member);
    		
    		//Returns Book
    		Book* linked_book(){return this->book;}
    		
    		//Returns Member
    		Member* linked_member(){return this->member;}
    		
    	private:
    		Book* book;
    		Member* member;
    };
    and

    Code:
    template<class Book,class Member>
    Association<Book,Member>::Association(Book* book, Member* member)
    {
    	cout<<"Association constructor called\n";
    	this->book=book;
    	this->member=member;
    }
    What needs to be done so that each member to be able to borrow one book?
    (10-members)
    (10-books)
    (1 member can only borrow one book at a time)

    Regards,
    grscot
    Last edited by grscot; 05-02-2003 at 02:01 PM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Can't display item from an array
    By grscot in forum C++ Programming
    Replies: 16
    Last Post: 05-06-2003, 11:04 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21