Skip to content

codehelping.com

  • Home
  • Projects
  • Blog
  • Contact Us
  • About Us

Efficient Library Management System in C++: Source Code 2025

Posted on December 10, 2024April 6, 2025 By Omkar Pathak No Comments on Efficient Library Management System in C++: Source Code 2025
C++ Projects, Project

A Library Management System in C++ is an essential tool for automating the management of books and student records in a library. Below, we break down the main features of the provided C++ code for a Library Management System, highlighting its functionality and structure.

Library Management System in C++ Project: 2025

Features of the Library Management System in C++

1. Admin and Student Access

The system distinguishes between administrators and students:

  • Admins can:
    • Add, edit, and view book details.
    • Manage student accounts and view their balances.
  • Students can:
    • Create accounts.
    • View and deposit balance.
    • Issue books if they have sufficient funds.

2. Student Management

  • Account Creation: Students can create an account by providing a roll number, name, and an initial deposit.
  • Account Details: Admins and students can view account details like balance and personal information.
  • Deposit Management: Students can deposit money to their accounts, ensuring they maintain sufficient balance for library transactions.

3. Book Management

  • Adding Books: Admins can add new books to the library by providing details like title, author, and ISBN.
  • Editing Books: Book details can be updated as needed.
  • Viewing Books: The system displays available and issued books with all relevant details.

4. Book Issuing System

  • Students can borrow books if:
    • The book is available.
    • They have a minimum balance of $2 (deducted upon issuing).
  • Books are marked as unavailable once issued.

5. Sorting and Searching

  • Sorting Students: Students are displayed in ascending order of roll numbers.
  • Searching: The system allows finding students by roll number and books by ISBN.

6. Password Protection

Access is restricted to authenticated users via a simple password mechanism, ensuring basic security for admin and student functionalities.

Advantages of This System

  • Ease of Use: Simple menu-driven interface.
  • Efficiency: Automated book and student management reduce manual effort.
  • Scalability: Easily extendable to include additional features like fines or advanced search.

Complete Source Code: Library Management System in C++

#include <iostream>
#include <cstring>
#include <iomanip>

using namespace std;

// Constants
const int MAX_STUDENTS = 20;
const int MAX_BOOKS = 15;
const int MAX_NAME_LENGTH = 50;

// Global variables
int student_count = 0;
int book_count = 0;
double student_balance[MAX_STUDENTS];
int student_roll[MAX_STUDENTS];
char student_name[MAX_STUDENTS][MAX_NAME_LENGTH];
char book_title[MAX_BOOKS][MAX_NAME_LENGTH];
char book_author[MAX_BOOKS][MAX_NAME_LENGTH];
int book_isbn[MAX_BOOKS];
bool book_available[MAX_BOOKS];

// Function prototypes
void create_account();
void display(int roll);
void deposit_amount(int roll, double amount);
void issue_item(int roll);
void display_sorted();
int find_student(int roll);
int find_book(int isbn);
void add_book();
void edit_book();
void view_books();

int main() {
	

    int option;
    bool is_admin;
    string password;

    while (true) {
        cout << "Login as:\n1. Admin\n2. Student\n0. Exit\n";
        cin >> option;

        if (option == 0) {
            break;
        }

        is_admin = (option == 1);

        cout << "Enter password: ";
        cin >> password;

        if (password == "password") { // Use a simple password for demonstration purposes.
            if (is_admin) {
                cout << "Admin options:\n1. Add book\n2. Edit book\n3. View book status\n4. View enrolled students\n5. View student balance\n";
                cin >> option;

                switch (option) {
                    case 1: {
                        add_book();
                        break;
                    }
                    case 2: {
                        edit_book();
                        break;
                    }
                    case 3: {
                        view_books();
                        break;
                    }
                    case 4: {
                        display_sorted();
                        break;
                    }
                    case 5: {
                        int roll;
                        cout << "Enter student roll number (integer): ";
                        cin >> roll;
                        display(roll);
                        break;
                    }
                }
            } else {
                int roll;
                cout << "Enter your roll number (Integer): ";
                cin >> roll;
                
                int index = find_student(roll);
                if (index == -1) {
                    cout << "Student not found. Create an account? (1. Yes / 2. No): ";
                    cin >> option;
                    if (option == 1) {
                        create_account();
                    }
                } else {
                    cout << "Student options:\n1. View balance\n2. Deposit amount\n3. Issue item\n";
                    cin >> option;

                    switch (option) {
                        case 1: {
                            display(roll);
                            break;
                        }
                        case 2: {
                            double amount;
                            cout << "Enter the amount to deposit: ";
                            cin >> amount;
                            deposit_amount(roll, amount);
                            break;
                        }
                        case 3: {
                            issue_item(roll);
                            break;
                        }
                    }
                }
            }
        } else {
            cout << "Incorrect password.\n";
}
}
return 0;
}

void create_account() {
if (student_count >= MAX_STUDENTS) {
cout << "Student limit reached. Cannot create more accounts.\n";
return;
}

int roll;
cout << "Enter roll number (BBRRRR format): ";
cin >> roll;

if (find_student(roll) != -1) {
    cout << "Account already exists for this roll number.\n";
    return;
}

student_roll[student_count] = roll;
cout << "Enter student name: ";
cin.ignore();
cin.getline(student_name[student_count], MAX_NAME_LENGTH);

double initial_deposit;
cout << "Enter initial deposit amount ($50 minimum): ";
cin >> initial_deposit;

if (initial_deposit < 50) {
    cout << "Initial deposit must be at least $50.\n";
    return;
}

student_balance[student_count] = initial_deposit - 20 - 30; // Account opening and security deposit
student_count++;
}

void display(int roll) {
int index = find_student(roll);
if (index == -1) {
    cout << "Student not found.\n";
    return;
}

cout << "Roll No: " << student_roll[index] << endl;
cout << "Name: " << student_name[index] << endl;
cout << "Balance: $" << fixed << setprecision(2) << student_balance[index] << endl;
}

void deposit_amount(int roll, double amount) {
int index = find_student(roll);
if (index == -1) {
    cout << "Student not found.\n";
    return;
}

student_balance[index] += amount;
cout << "New balance: $" << fixed << setprecision(2) << student_balance[index] << endl;
}

void issue_item(int roll) {
int index = find_student(roll);
if (index == -1) {
    cout << "Student not found.\n";
    return;
}

cout << "Available books:\n";
for (int i = 0; i < book_count; i++) {
    if (book_available[i]) {
        cout << i + 1 << ". " << book_title[i] << " by " << book_author[i] << " (ISBN: " << book_isbn[i] << ")\n";
    }
}

int choice;
cout << "Enter the number of the book you want to issue (0 to cancel): ";
cin >> choice;

if (choice == 0) {
    return;
}

if (book_available[choice - 1] && student_balance[index] >= 2) {
    book_available[choice - 1] = false;
    student_balance[index] -= 2;
    cout << "Book issued successfully. New balance: $" << fixed << setprecision(2) << student_balance[index] << endl;
} else {
    cout << "Cannot issue the book. Insufficient balance or book is unavailable.\n";
}
}

void display_sorted() {
for (int i = 0; i < student_count; i++) {
for (int j = i + 1; j < student_count; j++) {
if (student_roll[i] > student_roll[j]) {
swap(student_roll[i], student_roll[j]);
swap(student_balance[i], student_balance[j]);
swap(student_name[i], student_name[j]);
}
}
}

for (int i = 0; i < student_count; i++) {
    cout << student_roll[i]<< " - " << student_name[i] << " - Balance: $" << fixed << setprecision(2) << student_balance[i] << endl;
}
}

int find_student(int roll) {
	
for (int i = 0; i < student_count; i++) {
if (student_roll[i] == roll) {
return i;
}
}
return -1;
}

int find_book(int isbn) {
for (int i = 0; i < book_count; i++) {
if (book_isbn[i] == isbn) {
return i;
}
}
return -1;
}

void add_book() {
if (book_count >= MAX_BOOKS) {
cout << "Book limit reached. Cannot add more books.\n";
return;
}
cout << "Enter book title: ";
cin.ignore();
cin.getline(book_title[book_count], MAX_NAME_LENGTH);

cout << "Enter book author: ";
cin.getline(book_author[book_count], MAX_NAME_LENGTH);

int isbn;
cout << "Enter book ISBN: ";
cin >> isbn;

if (find_book(isbn) != -1) {
    cout << "A book with this ISBN already exists.\n";
    return;
}

book_isbn[book_count] = isbn;
book_available[book_count] = true;
book_count++;
}

void edit_book() {
int isbn;
cout << "Enter book ISBN to edit: ";
cin >> isbn;
int index = find_book(isbn);
if (index == -1) {
    cout << "Book not found.\n";
    return;
}

cout << "Current book title: " << book_title[index] << endl;
cout << "Enter new book title: ";
cin.ignore();
cin.getline(book_title[index], MAX_NAME_LENGTH);

cout << "Current book author: " << book_author[index] << endl;
cout << "Enter new book author: ";
cin.getline(book_author[index], MAX_NAME_LENGTH);

cout << "Book details updated.\n";
}

void view_books() {
for (int i = 0; i < book_count; i++) {
cout << "Title: " << book_title[i] << endl;
cout << "Author: " << book_author[i] << endl;
cout << "ISBN: " << book_isbn[i] << endl;
cout << "Available: " << (book_available[i] ? "Yes" : "No") << endl << endl;
}
}

Conclusion: Library Management System in C++

The Library Management System in C++ helps in managing books efficiently while enhancing skills in file handling, OOP, and data structures. Adding features like GUI, database integration, or advanced search can further improve its functionality. It’s a great project for learning and practical application.

Thanks for visiting codehelping.com, for more C++ Projects visit: Link

Post navigation

❮ Previous Post: Master Tic-Tac-Toe Game in C++: 2025 with Source Code
Next Post: How to Create a Spinning 3D Donut Animation in ASCII Art ❯

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Home
  • Projects
  • Blog
  • Contact Us
  • About Us

Copyright © 2025 codehelping.com.

Theme: Oceanly by ScriptsTown

Social Chat is free, download and try it now here!