Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

IN C++ Help to fix code Library management program. Error is when i type a letter into options menu the code breaks. after your edits,

IN C++ Help to fix code

Library management program. Error is when i type a letter into options menu the code breaks.

after your edits, the code should still run as normal.

CODE:

#include

using namespace std;

//structure to store library data

class BookDetails{

public:

struct library

{

int code;

char title[20];

int status;

};

library book_details[100];

};

//structure to store user data

class UserDetails:public BookDetails{

public:

struct users

{

int id;

char name[20];

int booksNumber;

};

users user_details[100];

};

int main()

{

UserDetails ob1;

UserDetails *ob;

ob=&ob1;

int tempId, i, flag = 0, j;

char tempName[20];

int tempCode;

//variable to hold 100 userdetails

//variable to hold 100 book details

int user_count = 0, books_count = 0;

int choice;

//this loop runs until 7 is entered

do

{

cout << "MENU ";

cout << "1. Add a new book ";

cout << "2. Add a new user ";

cout << "3. Borrow a book ";

cout << "4. Return a book ";

cout << "5. Search a book ";

cout << "6. Displays users and number of books they have ";

cout << "7. Exit ";

cout << "Enter your choice : ";

cin >> choice;

switch (choice)

{

//Adds a new book in to the database and increase book count by 1

case 1:

cout << "Bookname : ";

//cin.ignore() is used to clean the buffer to take input

cin.ignore();

//cin.getline is used to take input with space. Enter key is used to finish taking input. 100 is size of input character

cin.getline(ob->book_details[books_count].title,100);

cout << "Bookcode : ";

cin >> ob->book_details[books_count].code;

ob->book_details[books_count].status = 1;

books_count++;

break;

case 2:

//adds a new user details in to database

cout << "Enter UserId : ";

cin >> tempId;

//flag variable to check whether user exists or not

flag = 1;

for (i = 0; i < 100; i++)

{

if (tempId == ob->user_details[i].id)

{

cout << "UserId already taken ";

flag = 0;

break;

}

}

//if user is not taken creating user id and increase user_count by 1

if (flag)

{

ob->user_details[user_count].id = tempId;

cout << "Enter Username : ";

cin.ignore();

cin.getline(ob->user_details[user_count].name, 100);

ob->user_details[user_count].booksNumber = 0;

user_count++;

}

break;

case 3:

cout << "Please enter your userId : ";

cin >> tempId;

flag = 0;

//check whether user exists or not using flag variable

for (i = 0; i < 100; i++)

{

if (ob->user_details[i].id == tempId)

{

flag = 1;

break;

}

}

//if user exists then print his name and check fof the requested book

if (flag)

{

cout << "Welcome " << ob->user_details[i].name << " ";

//if user has taken less than 5 books

if (ob->user_details[i].booksNumber <= 5)

{

cout << "Please enter book code you want to borrow : ";

cin >> tempCode;

for (j = 0; j < 100; j++)

{

if (ob->book_details[j].code == tempCode && ob->book_details[j].status != 0)

{

ob->book_details[j].status = 0;

ob->user_details[i].booksNumber++;

flag = 0;

break;

}

}

if (flag)

{

cout << "Book not found or it has been currently borrowed ";

}

else

{

cout << "thank you for borrowing a book ";

}

}

else

{

cout << "Username incorrect ;";

}

}

break;

case 4:

// to return the book issued to a user

cout << "Please enter book code :";

cin >> tempCode;

flag = 0;

for (i = 0; i < 100; i++)

{

if (ob->book_details[i].code == tempCode)

{

flag = 1;

break;

}

}

//once book is found then check for user id

if (flag)

{

if (ob->book_details[i].status == 0)

{

cout << "Enter user id: ";

cin >> tempId;

flag = 0;

for (j = 0; j < 100; j++)

if (ob->user_details[j].id == tempId)

{

flag = 1;

break;

}

//if user and book details are found

if (flag)

{

ob->user_details[j].booksNumber--;

ob->book_details[i].status = 1;

}

else

{

cout << "User not found ";

}

}

else

{

cout << "Book hasn't been borrowed ";

}

}

else

{

cout << "Invalid code ";

}

break;

case 5:

//Searching a book using bookcode

cout << "Enter book code : ";

cin >> tempCode;

cout << " Book ID Book Name Availability ";

for (i = 0; i < 100; i++)

{

if (ob->book_details[i].code == tempCode)

{

cout << ob->book_details[i].code << "\t" << ob->book_details[i].title << "\t" << ob->book_details[i].status << " ";

break;

}

}

break;

case 6:

//printing details of user using user_details structure

cout << "UserID UserName Books borrowed ";

for (i = 0; i < user_count; i++)

{

cout << ob->user_details[i].id << "\t" << ob->user_details[i].name << "\t" << ob->user_details[i].booksNumber << " ";

}

cout << " ";

break;

case 7:

cout << "ThankYou";

break;

//if user input doesnot match with any of the case then ask him to enter data again

default:

cout << "Please enter valid input ";

}

} while (choice != 7);

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Professional IPhone And IPad Database Application Programming

Authors: Patrick Alessi

1st Edition

0470636173, 978-0470636176

More Books

Students also viewed these Databases questions