Question

IN C++ Help to fix code Library management program. Error is when i type a letter...

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<iostream>

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 \n";

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

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

cout << "3. Borrow a book\n";

cout << "4. Return a book\n";

cout << "5. Search a book\n";

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

cout << "7. Exit\n";

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\n";

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 << "\n";

//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\n";

}

else

{

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

}

}

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\n";

}



}

else

{

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

}

}

else

{

cout << "Invalid code\n";

}

break;

case 5:

//Searching a book using bookcode

cout << "Enter book code : ";

cin >> tempCode;

cout << " Book ID Book Name Availability \n";

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 << "\n";

break;

}

}

break;

case 6:

//printing details of user using user_details structure

cout << "UserID UserName Books borrowed\n";

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 << "\n";

}

cout << "\n";

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 \n";

}

} while (choice != 7);

return 0;

}

0 0
Add a comment Improve this question Transcribed image text
Answer #1

//Modified Code

#include<iostream>
#include<limits>
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 \n";

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

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

cout << "3. Borrow a book\n";

cout << "4. Return a book\n";

cout << "5. Search a book\n";

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

cout << "7. Exit\n";


while(1){
   cout << "Enter your choice : ";
   cin>>choice;
   if(cin.fail()){
       cin.clear();
       cin.ignore(numeric_limits<streamsize>::max(),'\n');
       cout<<"You have entered wrong input.Please enter a valid Integer\n";
   }
  
   else break;
}

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\n";

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 << "\n";

//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\n";

}

else

{

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

}

}

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\n";

}

}

else

{

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

}

}

else

{

cout << "Invalid code\n";

}

break;

case 5:

//Searching a book using bookcode

cout << "Enter book code : ";

cin >> tempCode;

cout << " Book ID Book Name Availability \n";

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 << "\n";

break;

}

}

break;

case 6:

//printing details of user using user_details structure

cout << "UserID UserName Books borrowed\n";

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 << "\n";

}

cout << "\n";

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 \n";

}

} while (choice != 7);

return 0;

}

//sample output

:

Add a comment
Know the answer?
Add Answer to:
IN C++ Help to fix code Library management program. Error is when i type a letter...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • IN C++ My project will be a library management system. It will have seven functions. It...

    IN C++ My project will be a library management system. It will have seven functions. It HAS to contain: classes, structures, pointers and inheritance. fix code according to below 1. Add a new book allows the user to enter in book name and book code Book code has to be in # “Invalid book code” “book name has been added to library” book code will be used to borrow books 2. Add a new user must use first user must...

  • Code in C++: Please help me fix the error in function: void write_account(); //function to write...

    Code in C++: Please help me fix the error in function: void write_account(); //function to write record in binary file (NOTE: I able to store data to a txt file but however the data get error when I try to add on data the second time) void display_all(); //function to display all account details (NOTE: This function is to display all the info that save account.txt which is ID, Name, and Type) void modify_account(int); //function to modify record of file...

  • I'm just a beginner in programming,how to make this program more simple without using #include<iostream> and #include<redex> here is the question Terms to know: If-else statement,for.....

    I'm just a beginner in programming,how to make this program more simple without using #include<iostream> and #include<redex> here is the question Terms to know: If-else statement,for..while..do while,loops,pointer,address,continue,return,break. Create a C++ program which contain a function to ask user to enter user ID and password. The passwordmust contain at least 6 alphanumeric characters, 1 of the symbols !.@,#,$,%,^,&,* and 1 capital letter.The maximum allowable password is 20. Save the information. Test the program by entering the User ID and password. The...

  • Program is in C++, program is called airplane reservation. It is suppose to display a screen...

    Program is in C++, program is called airplane reservation. It is suppose to display a screen of seating chart in the format 1 A B C D E F through 10. I had a hard time giving the seats a letter value. It displays a correct screen but when I reserve a new seat the string seats[][] doesn't update to having a X for that seat. Also there is a file for the struct called systemUser.txt it has 4 users...

  • C++ code do while loop issue. The code I posted works but when it prompts the...

    C++ code do while loop issue. The code I posted works but when it prompts the user if they want to try against with another sentence, it only takes the Y and goes straight into another loop, without letting me enter a new sentence. I need it to be able to take the Y response from a user and then let me enter another sentence. do { cout<<"Enter a sentence:"; //user input sentence cin.getline(str,80); int wordsCount = 0; for (int...

  • The following C++ code include 3 files: Patient.h, Patient.cpp and Main.cpp. The program basically creates and stores patient records. The original code has everything in a single .cpp file. I tried t...

    The following C++ code include 3 files: Patient.h, Patient.cpp and Main.cpp. The program basically creates and stores patient records. The original code has everything in a single .cpp file. I tried to divide the code in 3 parts (Patient.h, Patient.cpp and Main.cpp), but it is giving me errors. Patient.h #ifndef PATIENT_H #define PATIENT_H #include <string> #include "Patient.cpp" using namespace std; class Patient{ private : string firstname; string lastname; string location; static int cnt; int id; public : Patient(string, string, string);...

  • CAN YU HELP ME CONSTRUCT A FLOW CHART FOR THE FOLLOW PROGRAM ? C++ CODE: #include<iostream>...

    CAN YU HELP ME CONSTRUCT A FLOW CHART FOR THE FOLLOW PROGRAM ? C++ CODE: #include<iostream> using namespace std; int main() { //declaring variable num int num; //prompting user to enter a number cout<<"Input a number to check prime or not:"; //reading input from user cin>>num; //loop to check user input for positive number while(num<0) { cout<<"Error! Positive Integers Only.\n"; cout<<"Input a number to check prime or not:"; cin>>num; } //initializing isPrime variable with false bool isPrime = true; //loop...

  • C++ Code error help. I am getting the error: "expression must have a constant value, the...

    C++ Code error help. I am getting the error: "expression must have a constant value, the value of parameter 'n' ( declared at line 7) cannot be used as a constant" I am also getting this error at lines 65 and 66 with m and n. I do not know how to fix this. Here is my code and ive marked where the errors were with lines: #include<iostream> using namespace std; // Function to allocate memory to blocks as per...

  • im writing a c++ code and getting stuck on two parts. The first part, when I...

    im writing a c++ code and getting stuck on two parts. The first part, when I go to write the customer order out to the file, it writes everything but the price out right. I'll get a weird number like 5.95828e-039 or nan. When I printout to the console it works fine so not sure what's wrong. Second After I write the order out to the file, I then have to go in and read the file and calculate the...

  • Today assignment , find the errors in this code and fixed them. Please I need help...

    Today assignment , find the errors in this code and fixed them. Please I need help with find the errors and how ro fixed them. #include <iostream> #include <cstring> #include <iomanip> using namespace std; const int MAX_CHAR = 100; const int MIN_A = 90; const int MIN_B = 80; const int MIN_C = 70; double getAvg(); char determineGrade(double); void printMsg(char grade); int main() { double score; char grade; char msg[MAX_CHAR]; strcpy(msg, "Excellent!"); strcpy(msg, "Good job!"); strcpy(msg, "You've passed!"); strcpy(msg, "Need...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT