Write code in either C++ or Java the following use cases from the library case study (refer to the notes from Stevens and Pooley, e.g., Fig 7.2):
- Bookborrower borrows a copy of a book
- Bookborrower returns a copy of a book
- Journalborrower borrows a copy of a journal
- Journalborrower returns a copy of a journal
- The librarian updates the catalog
Use the specifications and constraints (e.g., on the number of books that can be borrowed at a time; on who can borrow journals) specified in Stevens-Pooley. Implement at least one standard (success) scenario and at least one failure scenario for each of the above use cases. Try to remain faithful to the design already proposed in Stevens-Pooley (e.g., Figs. 3.5, 9.2, 9.3). Write all code in either C++ or Java. Use of files for storing of data is encouraged; you should choose between text file and binary file; make a design decision on indexing (e.g., indexed sequential or B-tree indexing). No software package; no use of any DBMS software; no use of any web-based database. Maintain a number of items in each case (e.g., 20 books each of which has 2 to 3 copies; 10 journals with 4 issues each; 10 library members (non-staff); 1 librarian; 3 members of the staff (including the librarian)). You do not have to implement any fancy GUI for outputting results – plain text will do. The goal of this project is to give you an experience in the basics of sound design and programming principles in software engineering using the O-O paradigm (with UML) in the modest scope of a classroom project.