Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CST2550 Coursework 2 Summer Resit/Deferral

2022

1    Brief Task Description

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 (marks will not be awarded for any au- tomatically generated code). You also shouldn’t use non-standard or operating system dependant libraries in your program (the code should all be standard C++).

To achieve a good mark, you should design and implement the data structures yourself. Using standard template library (STL) data structures will severely limit the grade you can achieve.

2    Submission

You must submit a single zip file of all required source code; a single MP4 presentation including your design, a demonstration of the software, a conclusion and good quality references; and a single pdf file of your presentation slides.  All files must be submitted to the links on Moodle by Friday, 29th  July 2022  For further details of the required contents of the presentation see below.

The source code zip le should include:

。C++ source code les of your program

。catch2 test code

a Makefile to compile your program

The presentation video must be no longer than 6 minutes. If the presentation exceeds 6 minutes only the rst 6 minutes will be marked.

Note:

To allow anonymous marking your presentation slides, presentation video and zip le submissions must be named using your student ID, i.e.  M00123456.pdf, M00123456.mp4 and M00123456.zip

Only source code  (header and cpp les) and a Makele should be included in the zip le, no other les

If code does not compile and run it will severely limit your marks for the code

As anonymous marking will be applied, you should  not  include your name in your source code or presentation

A penalty will be applied to the mark for submissions not meeting these require- ments, e.g.  name, type and contents of submission

Marks for code will be severely limited if you cannot demonstrate understanding in the demonstration within the video

3    Scenario

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 le, 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 le name, to allow them to later load the full list of all books in the collection.

4    Detailed Description

It is recommended that you complete the tasks in the following order as the later sub-tasks will require the earlier ones.

4.1    Set up Project

Create a Git repository and makefile for the project, remember to update the makefile and commit new les to the git repository as you implement/update them.

4.2    Plan Software

Design and Implement a Book class to hold the book objects, each book record will have:

title

。author(s)

。ISBN

。qty available

4.3    Design and Implement Data Structure/Algorithm

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 for your presentation).

4.4    Test Data Structure

Apply software testing to ensure your book class and data structure and algorithms are all working correctly.

4.5    Read Sample Data File

Implement the program to read the sample data from the given le and load it into the data structure.

4.6    Implement Menu

Implement a (command line) user interface to allow users to search for books by title; add and remove copies of books. When there are no copies remaining of a given book in the system, the book object should be removed from the system.

4.7    Create Presentation Slides

Finish writing the presentation slides, including the time-complexity analysis and test cases you prepared while designing the software.

5    Presentation Contents

The presentation should have the following sections:

。Introduction

 brief description of the project (not just repeating the coursework task)

  a quick overview of the presentation structure

。Design, including:

 justification of selected data structure(s) and algorithms

  analysis of the algorithms which provide the key functionality (using pseudo codenot C++ source code)

。Testing, including:

  statement of testing approach used (not test code)

 table of test cases (not test code)

。Demonstration, including:

  show your code running

  describe how the functionality was achieved (just using the program does NOT demonstrate any understanding of the implementation)

  do not just step through the code line-by-line reading it out, just describe relevant details

。Conclusion, including:

  summary of work done

  limitations and critical reflection of your work (your opinion of the coursework task)

  how would change approach on similar task in future (to avoid repeating your mistakes, do not list irrelevant features which are not required)

References

  in Harvard format

  must have matching in-text references

Marks for code will be limited if you cannot demonstrate understanding of the code in the demonstration.

6    Academic Misconduct

This is individual work and you should complete it yourself. You should not work as a group and each submit the same work (even with minor changes) as your own. Any material or ideas found online, in textbooks, etc should be properly referenced.

You should familiarise yourself with the university’s academic integrity and misconduct policy: https://www.mdx.ac.uk/about-us/policies/university-regulations

7    Extenuating Circumstances

There may be difficult circumstances in your life that affect your ability to meet an assessment deadline or affect your performance in an assessment.  These are known as extenuating circum- stances or ECs’ . Extenuating circumstances are exceptional, seriously adverse and outside of your control. Please see link for further information and guidelines:

https://unihub.mdx.ac.uk/your-study/assessment-and-regulations/extenuating-circumstances

8    Marking

The presentation video and included code will be marked according the to attached marking scheme. Marking will be anonymous, i.e. the marker will not see the name of the student while marking. Marks for the code will be based on the code and your demonstrated understanding in the demonstration.

9    Feedback

Provisional marks and written feedback will be available on Moodle within 15 working days of your submission.  If you would like clarification or more detailed feedback on your coursework contact your module tutor.

10    Marking Scheme

10.1    Presentation

Item

Marks

Introduction (description of the project, not the   coursework task, and overview of the presentation structure)

5

Appropriate selection and justication of data structure

10

Analysis of data structure and algorithms

20

Conclusion, including:

- summary of work done

- limitations and critical reection

- how would change approach on similar task in future

5

References (Harvard style, with matching in-text references)

5

Structure, layout and clarity of presentation

5

10.2    Code

Item

Marks

Code quality (follows code guidelines and user input validation)

10

Makele

5

Implementation matches design

15

Implementation meets requirements

15

Catch2 test code (quality and matches testing approach in presentation)

5