使用向量的银行账户(存款和取款)

Bank Accounts Using Vectors (Deposit and Withdrawal)

本文关键字:向量      更新时间:2023-10-16

我正在做一个项目,该项目应该允许您创建 3 个表单(名称、帐号、余额(的帐户,然后为您提供以下选项:

1( 添加帐户。

2(关闭和现有帐户。

3(存入一定金额。

4( 提现账户

5(没有要求。

到目前为止,我能够成功创建3个帐户,显示它们,添加另一个帐户,再次显示它们,删除一个帐户并再次显示它们。但是,我无法找到从特定帐户存款或取款的方法。所以要清楚,我的问题是:我如何访问所选账户的余额并存入/提取金额(请记住,我正在使用向量来保存所有账户(?

以下是我的代码:

主.cpp

#include <iostream>
#include <vector>
#include "bank.hpp"
#include <string>
#include <fstream>
#include <stdlib.h>
using namespace std;
void fillaccounts(vector<bank>&);
void printaccounts(const vector<bank>&);
void createaccount(vector<bank>&);
void depositaccount(vector<bank>&);
void deleteaccount (vector<bank>&);
int main() {
vector<bank> mybank;
fillaccounts(mybank);
for (int i=0;i<5;i++) {
cout << "Please choose one of the following requests: " << endl;
cout << "(1) Create a new account." << endl;
cout << "(2) Close an existing account." << endl;
cout << "(3) Deposit an amount in one of your accounts." << endl;
cout << "(4) Withdraw an amount from one of your accounts." << endl;
cout << "(5) No request." << endl;
cout << "Enter your choice here: " << endl;
int request;
cin >> request;
switch (request) {
    case 1:
        createaccount(mybank);
        printaccounts(mybank);
        break;
    case 2:
        deleteaccount(mybank);
        printaccounts(mybank);
        break;
    case 3:
        depositaccount(mybank);
        printaccounts(mybank);
        break;
    case 4:
        break;
    case 5:
        break;
}
}
}

void fillaccounts(vector<bank>& newmybank) {
string name;
int accountnumber;
double balance;
for (int i=0; i<3;i++) {
    cout << "Enter your first name: " << endl;
    cin >> name;
    cout << "Enter account number: " << endl;
    cin >> accountnumber;
    cout << "Enter the amount you want to deposit: " << endl;
    cin >> balance;
    bank newAccount(name, accountnumber,balance);
    newmybank.push_back(newAccount);
    cout << endl;
}
cout << endl;
}
void createaccount(vector<bank>& newmybank) {
string name;
int accountnumber;
double balance;
    cout << "Enter your first name: " << endl;
    cin >> name;
    cout << "Enter account number: " << endl;
    cin >> accountnumber;
    cout << "Enter the amount you want to deposit: " << endl;
    cin >> balance;
    bank newAccount(name,accountnumber,balance);
    newmybank.push_back(newAccount);
    cout << endl;
}

void printaccounts(const vector<bank>& newmybank) {
for (unsigned int i=0; i<newmybank.size();i++) {
    cout << "(" << newmybank[i].getname() << "," <<    newmybank[i].getaccountnumber() << "," << newmybank[i].getbalance() << ")" << endl;
}
cout << endl;
}

void deleteaccount(vector<bank>& newmybank) {
string name;
cout << "Please enter your name to delete your account: " << endl;
cin >> name;
cout << endl;
for (int i=0; i<newmybank.size(); i++) {
    if (newmybank[i].newname == name) {
        newmybank.erase(newmybank.begin()+i);
    }
}
}

银行.cpp

#include "Bank.hpp"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
bank::bank() {
newname=' ';
newaccountnumber=0;
newbalance=0.0;
}
bank::bank(string name,int accnum,double amount) {
newname=name;
newaccountnumber=accnum;
newbalance=amount;
}
string bank::getname() const {
return newname;
}
int bank::getaccountnumber() const {
return newaccountnumber;
}
double bank::getbalance() const {
return newbalance;
}
void bank::setname(string name) {
newname=name;
}
void bank::setaccountnumber(int accountnumber) {
newaccountnumber=accountnumber;
}
void bank::setbalance(double balance) {
newbalance=balance;
}

银行.hpp

class bank {

public:
string newname;
int newaccountnumber;
double newbalance;
bank(); //Constructor
bank(string,int,double); //Overload Constructor
string getname() const;
int getaccountnumber() const;
double getbalance() const;
void setname(string);
void setaccountnumber(int);
void setbalance(double);
};

关于如何跟进的任何建议?谢谢你们!

一种方法是向您的银行类添加一个函数,该函数将特定金额添加到帐户余额中,然后在您想要更改帐户价值(即存款/取款(时调用此方法,或创建 2 个单独的方法。

像这样:

void bank::deposit(int num)
{
    newbalance += num;
}

然后,您将让用户指定银行帐号(或名称(,因为我认为您不希望更改每个帐户的每个余额。函数可能会遍历每个帐户getAccountIndex以查找指定的数据,然后返回向量中的索引。

当你有索引时,你可以像这样调用deposit方法mybank[index].deposit(amount);

请注意,bank类中的变量是公共的,因此您实际上并不需要get/set方法,但这被认为是不好的做法,因此您应该将这些变量设为私有。