首页 > 解决方案 > 为什么我的银行管理系统无法正常工作?

问题描述

所以,我正在用 C++ 制作这个银行管理系统,我必须让用户选择创建一个帐户、存入资金、提取资金并显示详细信息。我还需要存储在对象数组中,以便用户退出后可以显示整个数据。限制是我不能使用文件处理。但它不能正常工作。

请帮忙。

当我运行它时,它一直在询问我的全名。我该如何解决这个问题?我觉得这个问题是由于银行帐户类型的 person 数组而发生的,但我没有看到任何其他可能的方法来做到这一点。我删除了一些函数的细节,因为它变成了一个冗长的代码块。

#include<iostream>
#include<string>
#include <time.h>  
#include <cstdlib>
using namespace std;
class bankaccount {
private:
    int id;
    string name;
    int cash;
    int money;
    int age;
public:
    string get_name() {
        return name;
    }
    int get_id() {
        return id;
    }
    void withdraw();
    void deposit();
    int see_money();
    bankaccount(int id1) {
        id = id1;

        cout << "\n Enter Full Name:";
        getline(cin, name);

    }
    friend ostream& operator<<(ostream& os, const bankaccount& d);




};

ostream& operator<<(ostream& os, bankaccount& d) {
    os << "\n Your name is:" << d.get_name();
    os << "\n Your id is:" << d.get_id();
    os << "\n You have a total of : " << d.see_money();
}
int main() {
    bankaccount persons[100] = 0;
    int option;
    int id;
    int number = 0;
    cout << "BANKING MANAGEMENT SYSTEM!" << endl;
    cout << "-------------------------------------------------------------------------------";
    while (1) {

        cout << "\nEnter 1 to create an account. Enter 2 to deposit money. Enter 3 to withdraw money. Enter 4 to check money. Enter 5 to display. Enter 6 to exit";
        cin >> option;
        switch (option) {
        case 1: {

            bankaccount p(number);
            persons[number] = p;

            cout << "Your ID is:" << number << endl;
            number++;
            break;
        }
        case 2: {
            cout << "\n Enter Your ID:";
            cin >> number;


            persons[number].deposit();
            break;
        }
        case 3: {
            cout << "\n Enter Your ID:";
            cin >> number;
            persons[number].withdraw();
            break;
        }
        case 4: {
            cout << "\n Enter Your ID:";
            cin >> number;
            persons[number].see_money();
            break;
        }
        case 5: {
            cout << "\n Enter Your ID:";
            cin >> number;
            cout << persons[number];
            break;
        }
        }
    }
}

这是输出:

标签: c++arraysclassoopobject

解决方案


bankaccount persons[100]=0;

在这里,您构建 100 个对象bankaccount

您的bankaccount构造函数有以下两行:

cout<<"\n Enter Full Name:";
getline(cin,name);

因此,每次创建bankaccount对象时,系统都会提示您输入其名称。你可能不是故意的。您需要将其解耦,因此向用户询问全名、将其分配给银行帐户和构建银行帐户对象是分开的。

例如,您可以创建选项 6 来为银行帐户分配名称,而不是在bankaccount类的构造函数中进行。


推荐阅读