The code is modular and you should implement it in small stages, with frequent compiling (with
make) and testing.
I would suggest the following sequence, and testing of the application.
Do not move on until you are sure the code compiles and works
with appropriate error messages.
You should complete the main function so that it properly handles the command line arguments.
 main()
Ensure you report the error message where appropriate.
You should complete the functions to initialize data structures and read in the text file:
 initLibrary()
 readBooks()
At this point you can read in the text file and load values into the Library data structure.
Ensure you report the error messages where appropriate.
You should complete the functions that list the book data to screen:
 listBooks()
 listBorrowedBooks()
At this point you can print out the list of books that you have read in from the text file.
You should complete the functions to list books
 listAvailableBooks()
 listMyBooks()
Test that the user sees the full list of books.
 borrowBook()
Test that a borrowed book is removed from the list of available books.
This should be true from the user menu and also from the librarian menu.
The librarian can view a list of borrowed books that should also verify this works.
 returnBook()
Test that if a book is returned it is removed from the users list and added to the available list of
books for the user and the librarian.
Your application is now complete!
Test the various menu options and error messages to verify it behaves as expected.
Add another book to the books.txt file and test again to see if your application works.