you will develop a library management program that maintains the library book list and the library client (i.e., customer) list, as well as the interactions between the two lists. The program allows the librarian to add copies of books, add clients, let a client check out (i.e., borrow) books, and let a client check in (i.e., return) books.
In this programming assignment, you will develop a project that implements an engineering library (or any other library; engineering library is mentioned because all the books I currently include are engineering textbooks). You will implement and test four classes in this assignment. They are the BookType, BookRecord, ClientType, and LibraryType classes. You are to write the four implementation files: BookType.cpp, BookRecord.cpp, ClientType.cpp, and LibraryType.cpp. In the following, we will discuss each class in more detail.
Each object of the BookType class contains the related information of a book. The BookType.h file is given to you. Carefully read the class definition in BookType.h. The BookType class has five protected data members. They are: a string ISBN13 to store the 13-digit ISBN of a book; a string primaryAuthor to store the primary authors last name; a string title to store the book title; a string publisher to store the publishers name; and an integer key to indicate the key member used for searching and sorting.
You are to implement and test the following operations for the BookType class. Detailed description and precondition/postcondition for all the BookTypes member functions are specified in the given header file.
The BookType class objects are used to represent books borrowed by a client (this will be discussed in the ClientType class).
The BookRecord class is a subclass inherited from the BookType class. The BookRecord.h file is given to you. Carefully read the class definition in BookRecord.h. In addition to the protected data members of the BookType class, the BookRecord class has two additional protected data members: an integer copiesTotal to store the total number of copies of a book in the library (note that a library book may have multiple copies); an integer copiesAvailable to store the available (i.e., unchecked-out) number of copies of a book in the library.
You are to implement and test the following operations for the BookRecord class. Detailed description and precondition/postcondition for all the BookRecords member functions are specified in the given header file.
The BookRecord class objects are used to represent books possessed by the library (this will be discussed in the LibraryType class).
Each object of the ClientType class contains the related information of a library client. The ClientType.h file is given to you. Carefully read the class definition in ClientType.h. The ClientType class has five protected data members. They are: a string ID7 to store the 7-digit ID number of a client; a string lastName to store the clients last name; a string firstName to store the clients first name; an integer key to indicate the key member used for searching and sorting clients; a sorted linked list bookList of BookType objects to store the books borrowed by the client.
You are to implement and test the following operations for the ClientType class. Detailed description and precondition/postcondition for all the ClientTypes member functions are specified in the given header file.
The ClientType class objects are used to represent clients of the library (this will be discussed in the LibraryType class).
Each object of the LibraryType class contains the related information of a library. The LibraryType.h file is given to you. Carefully read the class definition in LibraryType.h. The LibraryType class has two protected data members: a sorted linked list bookRecordList of BookRecord objects to store the books possessed by the library; a sorted linked list clientList of ClientType objects to store the clients of the library.
You are to implement and test the following operations for the LibraryType class. Detailed description and precondition/postcondition for all the LibraryTypes member functions are specified in the given header file.
The LibraryType class is used to generate an engLib object which represents the School of Engineering Library.
Besides the aforementioned four header files, you are also to use the following header files in this project: NodeType.h, LinkedListIterator.h, LinkedListType.h, SortedLinkedList.h. You have been supplied all eight header files
Note that the LinkedListType.h is slightly different from the LinkedListType.h we discussed in lectures. Here we have made the destructor a virtual function, and also added a template version of operator<<. For SortedLinkedList.h, here we have added a default and a copy constructors and a destructor.
For this assignment, you only need to check the precondition for the setBookRecord function of the BookRecord class. For all other functions, you may simply assume that the preconditions are satisfied.
The existing books and clients are given in the files books.txt and clients.txt. They are loaded to initialize the two protected members of engLib at the beginning of the EngLibTest.cpp file.
Don't tackle to whole project at once. Start by implementing what you can, using one or several member functions together with a simple test driver client program to test the functionality of the functions.
After you have tested your programs using your own test driver code, you may test your programs using the given testing program EngLibTest.cpp (available on Blackboard).
Make sure you name the .cpp files as BookType.cpp, BookRecord.cpp, ClientType.cpp, and LibraryType.cpp. Then zip these four files (if you have modified any other files, include them too)