본문 바로가기

C++

뱅킹 시스템 2.0(OOP2)

//======================================헤더파일=============================================
#include <iostream>

using namespace::std;

const int NAME_LEN=20;

class Account
{
 int id;
 int balance;
 char *name;

public:
 Account(){}
 Account(int id,char* name,int balance)
 {
  this->id=id;
  this->balance=balance;
  this->name = new char[strlen(name)+1];
  strcpy(this->name,name);
 }
 //Account(const Account& A)//매모리공간의 적 할당으로 인한 복사 생성자의 추가
 //{
 // this->id=id;
 // this->balance=balance;
 // this->name = new char[strlen(A.name)+1];
 // strcpy(this->name,A.name);
 //}
 ~Account()
 {
  delete []name;
 }
 int GetID(){return id;}
 int GetBalance(){return balance;}
 void AddMoney(int val)
 {
  balance+=val;
 }
 void MinMoney(int val)
 {
  balance-=val;
 }
 char *GetName()
 {
  return name;
 }
 void ShowAllData()
 {
  cout<<"계좌 ID: "<<id<<endl;
  cout<<"이 름:"<<name<<endl;
  cout<<"잔 액:"<<balance<<endl;
 }
};

void PrintMenu();
void MakeAccount();
void Deposit();
void Withdraw();
void Inquire();

//==========================CPP파일====================================================

 #include "OOP2.h"

 Account* pArray[100];
 int index=0;
void PrintMenu()
{
 cout<<"매뉴"<<endl;
 cout<<"1 MakeAccount"<<endl;
 cout<<"2 DEPOSIT"<<endl;
 cout<<"3 WITHDRAW"<<endl;
 cout<<"4 INQUIRE"<<endl;
 cout<<"5 EXIT"<<endl;
}
void MakeAccount()
{
 int id;
 char name[NAME_LEN];
 int balance;
 cout<<"계좌 개설"<<endl;
 cout<<"계좌 id :"; cin>>id;
 cout<<"이름 : "; cin>>name;
 cout<<"입금액: ";cin>>balance;
 pArray[index++]=new Account(id,name,balance);
}
void Deposit(){
 int money;
 int id;
 cout<<"입금계좌 입력:"; cin>>id;
 cout<<"입금액:"; cin>>money;
 for(int i=0; i<index; i++)
  {
   if(pArray[i]->GetID()==id)
   {
    pArray[i]->AddMoney(money);
    cout<<"입금완료"<<endl;
    return;
   } 
  }
 cout<<"유효하지 않은 ID 입니다"<<endl;
}

void Withdraw()//출금전에 id와 잔고를 검사한 다음 문제가 없으면 출금을 한다.
{
 int money;
 int id;
 cout<<"계좌ID :"; cin>>id;
 cout<<"출금액 :"; cin>>money;
 for(int i=0; i<index; i++)
 {
  if(pArray[i]->GetID()==id)
  {
   if(pArray[i]->GetBalance()<money)
   {
    cout<<"잔액이 부족합니다"<<endl;
    return;
   }
   pArray[i]->MinMoney(money);
   cout<<"출금완료"<<endl;
   return;
  }
 cout<<"유효하지 않는 id 입니다"<<endl;
 }
}
void Inquire()//전체 잔액 조회
{
 for(int i=0; i<index;i++)
  pArray[i]->ShowAllData();
}

//==============================main 파일============================================================
#include "OOP2.h"
 

enum{MAKE=1,DEPOSIT,WITHDRAW,INQUIRE,EXIT};
int main()
{
 int choice;
 while(1)
 {
  PrintMenu();
  cout<<"선택 : "<<endl;
  cin>>choice;

  switch(choice)
  {
  case MAKE:
   MakeAccount();
   break;
  case DEPOSIT:
   Deposit();
   break;
  case WITHDRAW:
   Withdraw();
   break;
  case INQUIRE:
   Inquire();
   break;
  case EXIT:
   return 0;
  default:
   cout<<"잘못된 선택"<<endl;
   break;
  }
 }
return 0;
}