- provide a menu-driven console-based user interface. implementation details are up to you
- employ layered architecture and classes
- have at least 20 procedurally generated items in your application at startup
- provide specifications and pyunit test cases for all non-UI classes and methods for the first functionality
- implement and use your own exception classes.
write an application for a book library. the application will store:
- book:
book_id
,title
,author
- client:
client_id
,name
- rental:
rental_id
,book_id
,client_id
,rented_date
,returned_date
create an application to:
- manage clients and books. the user can add, remove, update, and list both clients and books.
- rent or return a book. a client can rent an available book. a client can return a rented book at any time. only available books (those which are not currently rented) can be rented.
- search for clients or books using any one of their fields (e.g. books can be searched for using id, title or author). the search must work using case-insensitive, partial string matching, and must return all matching items.
- create statistics:
- most rented books. this will provide the list of books, sorted in descending order of the number of times they were rented.
- most active clients. this will provide the list of clients, sorted in descending order of the number of book rental days they have (e.g. having 2 rented books for 3 days each counts as 2 x 3 = 6 days).
- most rented author. this provides the list of book authors, sorted in descending order of the number of rentals their books have.