Console app: Building a Library Management System in C#

Introduction

In this blog post, I will guide you through creating a simple Library Management System in C# that utilizes the concepts of encapsulation, polymorphism, and inheritance. This exercise is perfect for practicing object-oriented programming principles.

Objective

Create a simple Library Management System that demonstrates encapsulation, polymorphism, and inheritance.

Requirements

1. Encapsulation
  •    Create a `Book` class with private properties: `Title`, `Author`, `ISBN`, and `IsAvailable`.
  •    Provide public methods to get and set these properties as needed.
2. Inheritance
  •    Create a base class `LibraryItem` with common properties such as `ID`, `Title`, and `IsAvailable`.
  •    The `Book` class should inherit from `LibraryItem`.
  •    Create another derived class `Magazine` that inherits from `LibraryItem` and has additional properties such as `IssueNumber` and `Publisher`.
3. Polymorphism
  • Create a method `DisplayDetails` in the `LibraryItem` class that can be overridden by the derived classes `Book` and `Magazine`.
  • Implement the `DisplayDetails` method in both the `Book` and `Magazine` classes to show their specific details.
4. Implementation
  • In the `Main` method, create a list of `LibraryItem` and add instances of `Book` and `Magazine` to it.
  • Loop through the list and call the `DisplayDetails` method on each item, demonstrating polymorphism.

Guidelines

1. Book Class
  • Implement encapsulation by using private fields and public properties.
  • Inherit from `LibraryItem`.
2. Magazine Class
  •  Inherit from `LibraryItem`.
  •  Add specific properties for `Magazine`.

3. LibraryItem Class
  •  Define common properties.
  •  Implement a virtual method `DisplayDetails`.

4. Main Method
  • Create instances of `Book` and `Magazine`.
  • Add them to a list of `LibraryItem`.
  • Iterate through the list and call `DisplayDetails` on each item.

Code Snippets

LibraryItem


  internal class LibraryItem
  {
      private string Id { get; set; }
      private string Title { get; set; }
      private bool IsAvailable { get; set; }

      public LibraryItem(string id, string title, bool isAvailable)
      {
          SetTitle(title);
          SetId(id);
          SetIsAvailable(isAvailable);
      }

      public string GetTitle()
      {
          return Title;
      }

      public void SetTitle(string title)
      {
          Title = title;
      }

      public string GetId()
      {
          return Id;
      }

      public void SetId(string id)
      {
          Id = id;
      }

      public string GetIsAvailable()
      {
          return IsAvailable? "Yes": "No";
      }

      public void SetIsAvailable(bool isAvailable)
      {
          IsAvailable = isAvailable;
      }

      public virtual void DisplayDetails()
      {
          Console.WriteLine($"ID: {GetId()}");
          Console.WriteLine($"Title: {GetTitle()}");
          Console.WriteLine($"Is available: {GetIsAvailable()}");
      }
  }


Book

    internal class Book : LibraryItem
    {
        private string Title { get; set; }
        private string Author { get; set; }
        private string ISBN { get; set; }
        private bool IsAvailable { get; set; }

        public Book(string id, string title, bool isAvailable, string author, string isbn) : base(id, title, isAvailable)
        {
            SetAuthor(author);
            SetISBN(isbn);
        }

        public string GetTitle()
        {
            return Title;
        }

        public void SetTitle(string title)
        {
            Title = title;
        }

        public string GetAuthor()
        {
            return Author;
        }

        public void SetAuthor(string author)
        {
            Author = author;
        }

        public string GetISBN()
        {
            return ISBN;
        }

        public void SetISBN(string isbn)
        {
            ISBN = isbn;
        }

        public bool GetIsAvailable()
        {
            return IsAvailable;
        }

        public void SetIsAvailable(bool isAvailable)
        {
            IsAvailable = isAvailable;
        }

        public override void DisplayDetails()
        {
            base.DisplayDetails();
            Console.WriteLine($"Author: {GetAuthor()}");
            Console.WriteLine($"ISBN: {GetISBN()}");
        }
    }


Magazine

   internal class Magazine : LibraryItem
    {
        public int IssueNumber { get; set; }
        public string Publisher { get; set; }

        public Magazine(string publisher, int issueNumber, string id, string title, bool isAvailable):base(id, title, isAvailable)
        {

            SetIssueNumber(issueNumber);
            SetPublisher(publisher);
        }

        public int GetIssueNumber() { 
            return IssueNumber; 
        }

        public void SetIssueNumber(int issueNumber)
        {
            IssueNumber = issueNumber;
        }

        public string GetPublisher()
        {
            return Publisher;
        }

        public void SetPublisher(string publisher)
        {
            this.Publisher = publisher;
        }

        public override void DisplayDetails()
        {
            base.DisplayDetails();
            Console.WriteLine($"Issue number: {GetIssueNumber()}");
            Console.WriteLine($"Publisher: {GetPublisher()}");

        }
    }


Program

   using LibraryManagementSystem.Class;

    List<LibraryItem> libraryItems = [
        new Book("R001", "Next world", true, "KaveerR", "IS0002K885R222"), 
        new Magazine("2K publish", 1, "R002", "New coding magazine", true)
        ];

    foreach (var item in libraryItems)
    {
        item.DisplayDetails();
        Console.WriteLine("\n");
    }

	Console.ReadLine();

Screenshot

Repository


You can find the complete source code for this project on GitHub: LibraryManagementSystem

Conclusion

This exercise demonstrates how to implement encapsulation, inheritance, and polymorphism in C#. By building this simple Library Management System, you will gain a better understanding of these fundamental object-oriented programming principles.

Comments

Popular posts from this blog

Car Wash System vb.net

Student Information System - AngularJS , ASP.NET API, C#

Fake Call Android Application