C++ 은행계좌관리 프로그램에 대해서..
헤벌심
다음 아래의 소스는 은행계좌관리 프로그램입니다.
잔액조회시 잔액과 함께 현재 잔액의 연이율 4.8% 복리이자 금액이 함께 출력되고,
큰 메뉴에 대출을 추가, 9%의 복리이자를 가질 때,
잔액조회시 원금에서 값아야 할 대출금액과 대출이자금액이출력되는 기능을 추가할 수 있을까요?
메뉴상에서 엔터를 치면 다음달로 넘어갈 수 있구요..
달이 넘어갈 때마다 이자가 계산되고..
꼭좀 부탁드립니다...
#include iostream using namespace std; const int INIT_ACCOUNT = 10; // 초기 설정 계좌수
const int SIZE_VALUE = 5; // 초기 설정 계좌수 초과시 증가해야할 계좌수
// Account 클래스 : 계좌정보를 저장하는 클래스 class Account
{ private:
int id; //계좌번호
int balance ; //잔액
char* name ; //고객이름 public:
Account();
Account(int, int, char*);
Account(const Account& acc);
~Account(); void SetId(int id) ; //입력받은 계좌번호로 계좌번호 설정
void SetBalance(int balance); //입력받은 잔액으로 잔액 설정
void SetName(char* name); //입력받은 이름으로 이름 설정
int GetId(); //설정되어 있는 계좌번호 리턴
int GetBalance(); //설정되어 있는 잔액 리턴
char* GetName(); //설정되어 있는 이름 리턴
}; Account::Account()
{
this-id = 0;
this-balance = 0;
this-name = new char;
strcpy(this-name, );
} Account::Account(int id , int balance , char * name) //생성자
{
this-id = id;
this-balance = balance;
this-name = new char;
strcpy(this-name,name);
} Account::Account(const Account& acc) //복사생성자
{
id = acc.id;
balance = acc.balance;
name = new char;
strcpy(name,acc.name);
} Account::~Account() //소멸자
{
delete []this-name;
} void Account::SetId(int id) //계좌번호를 설정한다.
{
this-id = id;
} void Account::SetBalance(int balance) //잔액을 설정한다.
{
this-balance = balance;
} void Account::SetName(char* name) //고객 이름을 설정한다.
{
strcpy(this-name, name);
} int Account::GetId() //계좌번호를 리턴한다.
{
return this-id;
} int Account::GetBalance() //잔액을 리턴한다.
{
return this-balance;
} char* Account::GetName() //고객 이름을 리턴한다.
{
return this-name;
} //AccountManagement 클래스 : 고객에게 계좌정보를 입력받아 저장한다. class AccountManagement
{ private :
int accountSize; // 현재 개설된 계좌수
int maxAccountSize; // 개설될 수 있는 계좌수
Account* pArray; // 개설된 계좌 public :
AccountManagement();
void InitAccount(); // 생성자에서 호출되며 초기 계좌를 설정
void CheckAccount(); // 현재 계좌수를 확인하여 쳄曠臼?최대 갯수와 같은 경우 계좌수 자동증가
void PrintMenu(); // 메뉴출력
void MakeAccount(); // 계좌개설
void Deposit(); // 입금
void Withdraw();
void Remainder();
}; AccountManagement::AccountManagement() // 생성자
{
InitAccount() ; //전체 계좌의 총 수와 전체 크기 만큼의 계좌를 생성한다.
} void AccountManagement::InitAccount()
{
accountSize = 0 ;
maxAccountSize = INIT_ACCOUNT ;
pArray = new Account[INIT_ACCOUNT] ;
}
// 현재 발급되어 있는 계좌수와 최대 발급 가능 계좌수가 같은 경우 증가값만큼 계좌를 생성한다. void AccountManagement::CheckAccount()
{
if(accountSize maxAccountSize) // 현재 계좌를 더 발급 할 수 있는 경우
{ // (현재 발급되어 있는 계좌수 최대 발급 가능 계좌수)
return ;
} maxAccountSize += SIZE_VALUE ;
Account* tempArray = new Account[maxAccountSize] ; for(int i = 0; i accountSize; i++)
{
tempArray[i] = pArray[i] ;
} pArray = tempArray ;
} // 메뉴 함수 void AccountManagement::PrintMenu()
{
int iSelectMenu = 0; //거래 선택 변수
printf(\n ******** 원하시는 거래를 선택하세요 ********\n);
printf( ------------------------------------------------\n);
printf( 1.계좌개설 2.입 금 3.출 금 4.잔액조회 5.종 료\n);
cin iSelectMenu ;
switch(iSelectMenu) //선택된 거래에 해당하는 함수 호출
{
case 1:
MakeAccount();
break;
case 2:
Deposit();
break;
case 3:
Withdraw();
break;
case 4:
Remainder();
break;
case 5:
cout 은행계좌 관리 프로그램을 종료합니다. endl ;
break;
default: //선택 오류
PrintMenu(); //다시 메뉴 함수 호출
}
}
// 사용자의 요청시 계좌를 개설한다. void AccountManagement::MakeAccount()
{
int lid = 0 ;
int lbalance = 0 ;
char lname[50];
CheckAccount() ; cout # 개설할 계좌번호를 입력하세요 ;
cin lid;
cout # 고객님의 성함을 입력하세요(공백없이);
cin lname;
lbalance = 0; //잔액 초기화 pArray[accountSize].SetId(lid) ;
pArray[accountSize].SetBalance(lbalance) ;
pArray[accountSize].SetName(lname) ;
cout \n # lname 님의 계좌가 만들어졌습니니다.;
cout \n # 계좌번호 : lid \n # 잔액 : lbalance 원\n;
accountSize++; //다른 계좌 저장을 위한 증가연산 PrintMenu(); //개설 후 메뉴함수 호출
} // 입금 함수 void AccountManagement::Deposit()
{
int TmpAc, TmpBa; //임시계좌변수, 임시입금변수
cout # 입금할 계좌번호를 입력하세요 :;
cin TmpAc; for(int a = 0; a accountSize; a++)
{
&nbsbsp; if(TmpAc == pArray[a].GetId()) //해당 계좌를 찾는다.
{
cout # 고객님의 성함 : pArray[a].GetName() \n;
cout # 고객님의 잔액 : pArray[a].GetBalance() \n;
cout # 입금 금액을 입력하세요 ;
cin TmpBa; //임시입금변수에 저장
cout # TmpBa 원이 입금되었습니다.\n;
pArray[a].SetBalance(pArray[a].GetBalance() + TmpBa) ; // 계좌입금
cout # 고객님의 잔액 : pArray[a].GetBalance() \n; //잔액에 입금액 가산
break ;
}
else if( (accountSize-1) == a) //해당 계좌가 없는 경우
{
printf( # 계좌번호를 잘못 입력하셨습니다.\n);
break ;
}
}
PrintMenu();
} // 출금 함수 void AccountManagement::Withdraw()
{
int TmpAc,TmpBa; // 임시계좌변수, 임시출금변수
cout # 출금 할 계좌번호를 입력하세요 :;
cin TmpAc; for(int a = 0; a accountSize; a++)
{
if(TmpAc == pArray[a].GetId())
{
cout # 고객님의 성함 : pArray[a].GetName() \n;
cout # 고객님의 잔액 : pArray[a].GetBalance() \n;
cout # 출금 금액을 입력하세요\n ;
cin TmpBa; if (TmpBa pArray[a].GetBalance())
cout 잔액보다 출금하려는 금액이 많습니다. \n;
else{
cout # TmpBa 원을 출금합니다.\n;
pArray[a].SetBalance(pArray[a].GetBalance() - TmpBa) ; //잔액에서 출금액 감산
}
cout# pArray[a].GetName() 님의 잔액 : pArray[a].GetBalance() \n;
break ;
}
else if((accountSize-1)==a)
{
cout # 계좌번호를 잘못 입력하셨습니다.\n;
break ;
}
}
PrintMenu();
} // 잔액조회 함수 void AccountManagement::Remainder()
{
int TmpAc; // 임시계좌변수
cout # 잔액을 조회 할 계좌번호를 입력하세요 :;
cin TmpAc; for(int a = 0; a accountSize; a++)
{
if(TmpAc == pArray[a].GetId() )
{
cout # 고객님의 성함 : pArray[a].GetName() \n;
cout # 고객님의 잔액 : pArray[a].GetBalance() \n;
break ;
&; }
else if((accountSize-1)==a)
{
cout # 계좌번호를 잘못 입력하셨습니다.\n;
break ;
}
}
PrintMenu();
} void main()
{
AccountManagement* User = new AccountManagement() ; User-PrintMenu() ;
}