繁体   English   中英

C++图书馆管理系统

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM