This project is a console-based Library Management System developed in C#, designed to explore object-oriented programming principles, data structures, and application architecture through the implementation of a simple inventory management system.
The application centres around a dedicated Library class that encapsulates all business logic, separating data management from the user interface. Books are stored using a List<string>, while a HashSet<string> with a case-insensitive comparer is used to efficiently track borrowed books and prevent duplicate entries.
The system supports adding, removing, listing, searching, borrowing, and checking in books, with validation rules enforcing application constraints such as preventing duplicate books, restricting the removal of borrowed items, and limiting the number of books that can be borrowed simultaneously.
Throughout the project, emphasis was placed on writing clean and maintainable code by encapsulating functionality into dedicated methods, validating user input, and applying modern C# language features including readonly fields, collection initialisation, and string interpolation.
This project demonstrates an understanding of object-oriented design, collection management, input validation, business rule implementation, and modular application architecture, providing a solid foundation for larger software development projects.