[英]C++ Library management system
我正在做一个使用数组作为数据库的图书馆管理系统,当我在 bookName 中输入一个值时,在循环之后再次输入一个值,当我在 bookName[] 中打印所有值时,它只打印我输入的最后一个值。 请帮我!!
这是我的代码:
#include<iostream>
using namespace std;
int main(){
char yesNo;
string bookName[50];
string bookAuthor[50];
string bookID[50];
int i, choice;
do{
cout << "==========================" << endl;
cout << "LIBRARY MANAGEMENT SYSTEM" << endl;
cout << "==========================" << endl;
cout << "[1] Add Books" << endl;
cout << "[2] Delete Books" << endl;
cout << "[3] Search Books" << endl;
cout << "[4] View Book List" << endl;
cout << "[5] Close Application" << endl;
cout<<"Enter a number: ";
cin>>choice;
switch(choice){
case 1:
cin.ignore();
cout<<"Enter book name: ";
for(i=0; i<10; i++){
getline(cin, bookName[i]);
break;}
cout<<"Enter book author: ";
getline(cin, bookAuthor[i]);
cout<<"Enter book ID: ";
getline(cin, bookID[i]);
cout<<"Book succesfully added!"<<endl;
break;
case 4:
cout<<"All Books"<<endl;
for(int x=0; x<=i; x++){
cout<< bookName[x];
}
}
cout<<"Do you want to continue (Y/N)";
cin>>yesNo;
}while (yesNo == 'y' || yesNo == 'Y');
cout<<"Thank You!";
return 0;
}
每次您想添加一本新书时,代码中的 for 循环都会将变量 i 初始化为零。 在 for 循环内部有一个中断,在输入描述书名的字符串后退出 for 循环。 当用户选择选项 4 时,变量 i 将始终为零。 因此,您只会打印您输入的最后一本书的信息。 为了完整起见,您输入的每本书都将始终存储在索引 0 处(替换上一个条目)。
以下解决了您的问题 -快速而肮脏。 但是,您可能需要重新设计代码:
#include<iostream>
using namespace std;
int main(){
char yesNo;
string bookName[50];
string bookAuthor[50];
string bookID[50];
int i = 0, choice; // Important! You need to initialize the
// variable i since this is going to be used
// as index to access the array!
do
{
cout << "==========================" << endl;
cout << "LIBRARY MANAGEMENT SYSTEM" << endl;
cout << "==========================" << endl;
cout << "[1] Add Books" << endl;
cout << "[2] Delete Books" << endl;
cout << "[3] Search Books" << endl;
cout << "[4] View Book List" << endl;
cout << "[5] Close Application" << endl;
cout<<"Enter a number: ";
cin>>choice;
switch(choice)
{
case 1:
cin.ignore();
cout<<"Enter book name: ";
getline(cin, bookName[i]);
cout<<"Enter book author: ";
getline(cin, bookAuthor[i]);
cout<<"Enter book ID: ";
getline(cin, bookID[i]);
i++; // Increment i. Check here that you don't go above 50
cout<<"Book succesfully added!"<<endl;
break;
case 4:
cout<<"All Books"<<endl;
for(int x=0; x<i; x++) // C/C++ start from 0. So the loop needs to end when index is i-1
{
cout<< bookName[x] << endl;
}
}
cout<<"Do you want to continue (Y/N)";
cin>>yesNo;
}while (yesNo == 'y' || yesNo == 'Y');
cout<<"Thank You!";
return 0;
}
您可以在此处查看正在运行的版本: https ://onlinegdb.com/TNUn3jpyM
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.