You must design and implement a library search system allowing users to search for books by title. It should also allow adding new books and removing lost/damaged books from the library system. As the library will have millions of books, you should think about the most appropriate data structure(s) and algorithms for the search; add and remove functionality.
During the design phase, you should analyse the algorithms for searching for a book, adding a book and removing a book from the system.
You should not use any third party libraries or code as a part of your solution and all code should be written by you, i.e. not automatically generated. You also shouldn’t use non-standard or operating system dependant libraries in your program (the code should all be standard C++).
You should design and implement the data structures yourself. Do not use standard template library (STL) data structures.
A library has found their book search system has become slower as their collection of books has grown. They need you to design an efficient program which allows searching for books by title and adding and removing books. You will be provided with a sample of book data in a text file, which must be loaded by your program. It should however, be possible for your program to load data from another file, e.g. by using a command line argument of the file name, to allow them to later load the full list of all books in the collection.
Design and Implement a Book class to hold the book objects, each book record will have: • title
• qty available
Design and implement the data structure which will store the Book objects and associated algo- rithm(s). Analyse the time complexity of the algorithms (this will be needed in your report).
Apply software testing to ensure your book class and data structure and algorithms are all working correctly.
Implement the program to read the sample data from the given file and load it into the data structure.
Implement a (command line) user interface to allow users to search for books by title; add books and remove books. When there are no copies of a given book in the system, the book object should be removed from the system.
Finish writing the report, including the time-complexity analysis and test cases you prepared while designing the software.
The report should have the following sections:
– brief description of the project (not just repeating the coursework task) – a paragraph describing the report layout
• Design, including:
– justification of selected data structure(s) and algorithms
– analysis of the algorithms which provide the key functionality (using pseudo code, not C++ source code)
• Testing, including:
– statement of testing approach used (not test code)
– table of test cases (not test code) • Conclusion, including:
– summary of work done
– limitations and critical reflection
– how would change approach on similar task in future
– in Harvard format
– must have matching in-text references