COMP 1921 Programming Project

Coursework 1


Deadline: 10 AM GMT on 28th February 2021

This work is the first coursework for this module. It corresponds to 30% of the overall assessment for this module. Submissions should be made via Minerva.


Specification

Create a software for the management of a library, according to the specification below. Use the Gitlab repository created for this module to commit the required changes. If you do not have a Gitlab repository for this module, contact the instructor immediately.


Functionality

The software must have the following functionality:

•  Register users: As your program will work from CLI(command line interface), it should ask user to register first with his/her name, email address a username and a password. It is expected that you apply proper checks on each field for example email must include @ symbol.   [10 marks]

•  User login: Only registered users should be able to login with their username and password supplied at the time of register. [10 marks]

•  Users can search for books: Authentic users can search for books by title, author or year of publication. [10 marks]

•  Borrow/ return: Users can borrow and returns books.   [10 marks]

•  Admin/ Librarian role: A special user, the librarian/admin, can also add and remove books to the library.   [10 marks]

•  Persistence: The state of the library (books, users, and loans) is saved to a text file (no databases allowed) and restored at a new execution.   [10 marks]

The software must have more than one module (C file). One module must implement the provided interface book_management.h.   [total: 60 marks]


Good programming practice

•  Correct use of the static and const modifiers   [5 marks]

•  Code is modular and well-structured   [5 marks]

•  Use of git repository for version control   [5 marks] 

•  Code with proper comments   [5 marks] 

                                                              [total: 20 marks]


Building

Create and keep up-to-date a CMakeLists.txt for the compilation of the main program.   [10 marks]


Reflection

Write one paragraph on each of the following (maximum one a4 side in total).

1.  What went well with this project? Include specific areas of the work, programming, design,or testing.

2.  What was the hardest part of this work? Why, and what will you do to address this for the future?

Please avoid generic statements about time-management. Focus on your C coding, design, and goals for achieving good software (correct, robust, flexible and usable).   [10 marks]


Submission

Submit the reflection part in pdf, and your entire git repository in a single zip file through Minerva. The compressed folder containing the repository must have either extension .zip or .gz. The folder in which you cloned the Gitlab repository contains a copy of the repository. Simply compress and submit this folder (again, in a single zip file).

Important notes on the submission:

•  Write the program in standard C. If you write your code in any other language, it will not be assessed and you will get a zero mark.

•  This is an individual project, and you are not supposed to work in groups or pairs with other students.

•  Be aware that plagiarism in your code will earn you a zero mark and will have very serious consequences. If two (or more) students have large portions of their files nearly identical they will be accused of plagiarism or collusion. If found guilty, all parties involved will incur the penalty, regardless of who was the author of the code. For this reason, never show, or give access to, your code to anyone. Do not help a colleague by sharing your code, or you will both be found guilty of collusion. Do not share your code on teams channel for discussion.

•  It is your responsibility to make sure that nobody has access to your code. Lock the session ifyou leave your computer unattended.

•  Make sure to download and check your submission. Corrupted files, binary files, wrong versions, copies of your java project or anything other than what requested in this document will be considered an invalid submission.


We will not accept submissions other than through Minerva. 

                                                                                      [Grand total: 100 marks]