C++ Bookshop Management System Project

C++ Bookshop Management System Project

This is the Bookshop Management system Project using C Language. This Project is Created for the Book shop with a Simple Understanding Graphic. In this Project, users can add New book records, Show old Book records, Modify old Book records, Deleter the record of unwanted books, and at last check the availability of the book in the Book Shop. This Project is use File Handling to perform all the Operations in the Project.

This Bookshop Management System project is similar to other C++ projects on our site. We have changed a few codes to create a Bookshop system. Some of the similar projects are below

Features Of the C++ Bookshop Management System Project :

Listed below are the main features of this C++ project:

  1. Add Book Records: This feature allows users to add a new book to the bookshop management system application. Information such as the name of the book, the name of the author, and the number of copies should be provided, and the data is stored in the file.
  2. Show Book Records: The add book records can be listed with this feature along with the author’s name and the number of copies of the book added.
  3. Check Availability: If you want to buy a new book, this feature first checks its book availability. The name, author, and number of copies of the particular book are then displayed.
  4. Modify Book Records: You can modify the information provided while adding a new book to the bookshop management system project in C++. You can Modify the book’s name, author’s name, and the number of copies. All modified data are then stored in the file.
  5. Delete Book Records: To delete a book from the file of bookshop management, this feature is used. For this, the book name should be provided, and a confirmation from the user is asked before deleting the book record from Database.

Header Files Used In this :

This project uses graphics in the .h header file and runs on the Turbo C++ compiler. So, if you want to run the source code in Code::Blocks you have to make some modifications to the code, you need to include graphics.h header file in Code::Blocks to run the project. Besides that, the bookshop management system requires the following header files included in your compiler.

  • include”stdio.h”
  • include”conio.h”
  • include”fstream.h”
  • include”stdlib.h”
  • include”dos.h”
  • include”string.h”
  • include”graphics.h”
  • include”iomanip.h”

File handling has been used to perform all the operations in this bookshop management system project, without the welcome screen. This project helps to add, list, modify, search (check availability) and delete records from file. To learn more about file handling in C/C++ projects, you can go through other C and C++ projects published on our site.

Source Code of Bookshop Management System Project

//*******************************************************
//      INCLUDED HEADER FILES
//*******************************************************

#include"stdio.h"
#include"conio.h"
#include"fstream.h"
#include"stdlib.h"
#include"dos.h"
#include"string.h"
#include"graphics.h"
#include"iomanip.h"

//*******************************************************
//      CLASS NAME : BOOK
//*******************************************************

class book
{
public:
    char name[20];
    char author[20];
    int a;
    void getdata();
    void show();
};

//*******************************************************
//      FUNCTIONS TO GET AND SHOW DATA
//*******************************************************

void book::getdata()
{
    cout< <"\n\"        \"ENTER DETAILS ABOUT BOOK U WANT TO PURCHASE\" :\"";
    cout<<"\n\n\n\t\tEnter Name Of Book  :\t";
    cin>>name;
    cout< <"\n\t\tEnter Name Of Author    :\t";
    cin>>author;
    fflush(stdin);
    cout< <"\n\t\tEnter No. Of Copies  :\t";
    cin>>a;
}
void book::show()
{

    cout< <"BOOK      :"<<name;
    cout<<"\nAUTHOR  :"<<author;
    cout<<"\nCOPIES  :"<<a;
}

//*******************************************************
//      TO INVOKE WELCOME SCREEN, CREDIT SCREEN
//                   & ENDING SCREEN
//*******************************************************

void graph()
{
    for(int y=0; y&lt; 440; y=y+10)
    {
        fillellipse(50,y,50,50);
        setfillstyle(2,GREEN);
        fillellipse(100,y,50,50);
        setfillstyle(3,YELLOW);
        fillellipse(200,y+10,50,50);
        setfillstyle(2,WHITE);
        fillellipse(300,y-15,50,50);
        setfillstyle(3,6);
        fillellipse(400,y-5,50,50);
        setfillstyle(2,BLUE);
        fillellipse(500,y+20,50,50);
        setfillstyle(3,CYAN);
        clearviewport();

        for(int c=440; c&lt; 480; ++c)
        {
            setlinestyle(0,1,3);
            setcolor(WHITE);

            line(0,c,325,480);
            line(680,c,325,480);
        }
        delay(20);
    }

    int x[5];
    for(x[0]=50,x[1]=100,x[2]=200,x[3]=400,x[4]=500,y=450; y>=240; y=y-10,x[0]=x[0]+13,x[2]=x[2]+6,x[1]+=11,x[3]-=4,x[4]-=9)
    {
        fillellipse(x[0],y,20,20);
        setfillstyle(1,GREEN);
        fillellipse(x[1],y,20,20);
        setfillstyle(1,YELLOW);
        fillellipse(x[2],y+10,20,20);
        setfillstyle(1,WHITE);
        fillellipse(300,y-15,20,20);
        setfillstyle(1,6);
        fillellipse(x[3],y-5,20,20);
        setfillstyle(1,BLUE);
        fillellipse(x[4],y+20,20,20);
        setfillstyle(1,CYAN);

        clearviewport();
        for(int c=440; c&lt; 480; ++c)
        {
            setlinestyle(0,1,3);
            setcolor(BLACK);
            line(0,c,325,480);
            line(680,c,325,480);
        }
        delay(20);
    }

    for (int c=0; c&lt; 150; ++c)
    {
        setcolor(BLACK);
        fillellipse(325,240,c*1.5,c);
        delay(10);
    }
    setcolor(BLACK);
    settextstyle(7,0,5);
    outtextxy(115,200,"B O O K - S H O P");
    getch();
    clearviewport();
}

void main()
{
    clrscr();
    int gdriver=DETECT,gmode;
    initgraph(&gdriver,&gmode,"\\tc\\bgi");
    graph();
    rectangle(10,10,630,470);
    setbkcolor(RED);
    rectangle(10,10,630,470);
    settextstyle(GOTHIC_FONT,0,4);
    setcolor(WHITE);
    outtextxy(30,35,"Developed By:-");
    settextstyle(10,0,3);
    outtextxy(150,100,"*iCBSE.com");
    getch();
    char s;
    book b1;
z:

    fstream f;
    f.open("book",ios::in|ios::out|ios::app|ios::ate|ios::binary);
    clearviewport();
    settextstyle(10,HORIZ_DIR,3);
    setbkcolor(GREEN);
    rectangle(10,10,630,470);
    outtextxy(100,15,"WHAT DO U WANT TO DO:");
    settextstyle(SANS_SERIF_FONT,0,3);
    outtextxy(250,100,"1 . TO BUY");
    outtextxy(250,150,"2 . TO SHOW ALL BOOKS");
    outtextxy(250,200,"3 . TO CHECK AVAILABILITY");
    outtextxy(250,250,"4 . TO MODIFY");
    outtextxy(250,300,"5 . TO DELETE");
    outtextxy(250,350,"6 . TO EXIT");
    int a;
    settextstyle(7,0,5);
    outtextxy(20,400, "ENTER UR CHOICE:");
    f.seekg(0);
    gotoxy(55,25);
    cin>>a;
    char x;
    gotoxy(1,1);

    switch (a)
    {

//*******************************************************
//      CASE       : 1
//      DETAILS    : TO ADD A BOOK�S RECORD
//*******************************************************

    case 1:
        gotoxy(1,1);
        clearviewport();
        rectangle(10,10,630,470);
        setbkcolor(RED);
        textbackground(13);
        textcolor(6);
        clrscr();
        fstream f;
        f.open("book",ios::in|ios::out|ios::ate|ios::app|ios::binary);
        char ans;
        b1.getdata();
        f.write((char *)&b1,sizeof(b1));
        getch();
        settextstyle(7,0,1);
        outtextxy(250,410,"Do You Want To Continue:");

        ans=getchar();
        if(ans=='Y' || ans=='y')
            goto z;
        else
            break;

//*******************************************************
//      CASE       : 2
//      DETAILS    : TO SHOW ALL BOOKS� RECORDS
//*******************************************************

    case 2:
    {
        clearviewport();
        rectangle(10,10,630,470);
        setbkcolor(LIGHTBLUE);
        textbackground(3);
        textcolor(6);
        cout< <"\n\n";
        fstream f;
        f.open("book",ios::in|ios::out|ios::ate|ios::app|ios::binary);
        char ans;
        f.seekg(0);
        int ctr=0;
        while(f.read((char *)&b1,sizeof(b1)) )
        {
            ctr=ctr+1;
            if(ctr==8)
            {
                getchar();
                clrscr();
                ctr=0;
            }
            b1.show();
            if(f.eof()==1)
            {
                break;
            }
        }
        f.close();
        settextstyle(7,0,1);
        outtextxy(250,410,"Do You Want To Continue:");
        cin>>ans;
        if(ans=='y'|| ans=='Y')
            goto z;
        else
        {
            closegraph();
            exit(1);
        }
    }

//*******************************************************
//      CASE       : 3
//      DETAILS    : TO CHECK AVAILABILITY
//*******************************************************

    case 3:
    {
        gotoxy(60,25);
        clearviewport();
        rectangle(10,10,630,470);
        setbkcolor(DARKGRAY);
        textbackground(3);
        textcolor(5);
        clrscr();
        char ans;
        ifstream f;
        book b1;
        char name[20];
        char author[20];
        int a;
        f.open("book",ios::in|ios::binary);
        cout< <"\n\n\n          Enter book name whose record to be seen  :";
        cin>>name;
        do
        {
            f.read((char *)&b1,sizeof(b1));
            if(f.eof()==1)
            {
                break;
            }
            if(strcmp(b1.name,name)==0)
            {
                cout< <"\n                  Name     :"<<b1.name;
                cout<<"\n                 author   :"<<b1.author;
                cout<<"\n                 copies   :"<<b1.a;
                getchar();
            }
        }
        while(f);
        f.close();
//  a:
        settextstyle(7,0,1);
        outtextxy(250,410,"Do You Want To Continue:");
        ans=getchar();
        if(ans=='Y'||ans=='y')
            goto z;
        else
            break;
    }

//*******************************************************
//      CASE       : 4
//      DETAILS    : TO MODIFY A RECORD
//*******************************************************

    case 4:
    {
        clearviewport();
        rectangle(10,10,630,470);
        setbkcolor(BROWN);
        setcolor(WHITE);
        clrscr();
        char ans;
        fstream f;
        book b1;
        char name[20];
        char author[20];
        int a;
        f.open("book",ios::in|ios::binary);
        cout<<"\n";
        cout<<" Enter book name whose record to be changed  :";
        cin>>name;
        do
        {
            f.read((char *)&b1,sizeof(b1));
            if(f.eof()==1)
            {
                break;
            }
            if(strcmp(b1.name,name)==0)
            {
                cout< <"\n        Name     :"<<b1.name;
                cout<<"\n        Author   :"<<b1.author;
                cout<<"\n        Copies   :" <<b1.a;
                getchar();
                cout<<"\n                 Enter New Values" ;
                cout<<"\n\n      Enter the book name  :";
                cin>>name;
                cout< <"\n        Enter author name    :";
                cin>>author;
                cout< <"\n        Enter no. of copies  :";
                cin>>a;
                strcpy(b1.name,name);
                strcpy(b1.author,author);
                b1.a=a;
                int l=f.tellg();
                f.close();
                f.open("book",ios::out|ios::binary|ios::ate);
                f.seekg(l-sizeof(b1));
                f.write((char *)&b1,sizeof(b1));
            }
        }
        while(f);

        f.close();
        settextstyle(7,0,1);
        outtextxy(250,410,"Do You Want To Continue:");
        ans=getchar();
        if(ans=='Y'||ans=='y')
        {
            goto z;
        }
        else
            break;
    }

//*******************************************************
//      CASE       : 5
//      DETAILS    : TO DELETE A BOOK�S RECORD
//*******************************************************

    case 5:
    {
        clearviewport();
        rectangle(10,10,630,470);
        setbkcolor(BROWN);
        setcolor(WHITE);
        char name[20];
        f.close();
        f.open("video",ios::in|ios::ate|ios::binary);
        settextstyle(7,0,3);
        outtextxy(200,30,"DELETING:-");
        cout< <"\n\n\n\n\n\n     Enter The  Name U Want To delete:\t";
        fflush(stdin);
        cin>>name;
        f.seekg(0);
        int k=0;
        do
        {
            f.close();
            f.open("book",ios::in|ios::ate|ios::binary);
            f.seekg(k);
            fflush(stdin);
            f.read((char *)&b1,sizeof(b1));
            if(f.eof())
                break;
            if(strcmp(b1.name,name)==0)
            {
                k+=46;
                continue;
            }
            else
            {
                f.close();
                f.open("book2",ios::out|ios::ate|ios::binary);
                f.write((char*)&b1, sizeof b1);
                k+=46;
            }
        }
        while(f);
        f.close();
        remove ("book");
        rename ("book2","book");
        cout< <"\n\n\n\n\n\tPress Any Key...";
        getch();
        goto z;
    }

//*******************************************************
//      CASE       : 6
//      DETAILS    : TO EXIT
//*******************************************************

    case 6:
    {
        clearviewport();
        rectangle(10,10,630,470);
        setbkcolor(BROWN);
        setcolor(BLUE);
        settextstyle(8,0,4);
        outtextxy(150,200,"NOW YOU WANT TO GO");
        if(getch())
        {
            fflush(stdin);
            clearviewport();
            rectangle(10,10,630,470);
            setbkcolor(LIGHTBLUE);
            setcolor(RED);
            window(10,10,40,11);
            settextstyle(8,0,4);
            outtextxy(150,200,"\"THANKS FOR VISITING\"");
            getch();
            closegraph();
            exit(1);
        }
        else
        {
            goto z;
        }
    }
    default:
        goto z;
    }
}

Leave a Comment