Project 2 -
Extend Project 1 to use advanced data structures and support sorting on various keys. The project will be graded according the criteria for the final project - see below.
Elaboration:
- Use the Map class to support efficient searching on book and author indices.
- Implement comparators to support sorting by title, genre, price and index
- Extend the GUI from Project 1 to allow the user to: sort by title, genre, price and index
- Again, the GUI elements should be distinct from the other classes in the program.
Project 3 -
Implement a GUI interface using advanced Java Swing classes.
The project will be graded according the criteria for the final project - see below.
Elaboration:
- Extend Project 2 to use the Swing class JTable and JTree effectively to display the contents of the Library. See Liang, Chapter 36.
- As before, the GUI elements should be distinct from the other classes in the program
Final Project -
Implement a program to query and update the text database for a library using a client/server model allowing multiple clients safe access to the database, and using a producer-consumer model to control the inventory of each item.
The project will be graded according the criteria for the final project - see below.
Elaboration:
- Multiple instances of a client class should be supported.
- Use threads and locks to provide safe access to the database.
- Add a field to each record in the database representing the maximum number of that book the library will hold. This number should be given a default value if the field is not present in the text file.
- Functions should include:
- Returning a book to the library, blocking if the maximum number of that book is reached until a book is borrowed.
- Borrowing a book, blocking if the desired book is not in the library until a book is returned.
- Allow a client to cancel a request that has been blocked.