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() ;
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2696043 | 제이쿼리 .scroll() 관련 질문드립니다 | 이거이름임 | 2025-05-26 |
2695984 | 마크업상으로 하단에 있으나 우선적으로 이미지파일을 다운로드받는 방법 (1) | 들꿈 | 2025-05-25 |
2695934 | tr 속성값 (9) | 새 | 2025-05-25 |
2695905 | ASP로 개발됐을 때 css가 달라져요 ㅠㅠ (4) | 슬아라 | 2025-05-24 |
2695878 | form을 이용한 다른 페이지로 넘기는 방법을 알려주세요 (1) | 핫파랑 | 2025-05-24 |
2695844 | 저기 암호화 및 복호화 프로그램.. 만들어볼려는대 (2) | 한빛 | 2025-05-24 |
2695814 | [질문] PDA에서 애플릿이 가능한가요? (1) | 봄시내 | 2025-05-24 |
2695785 | 웹 설정 도와줄분 | 화이트캣 | 2025-05-23 |
2695730 | 갑자기 기억이 안나는데 accesskey 속성.. | 빛나라 | 2025-05-23 |
2695702 | [질문] Java 버전 차이에 의한 오류?!! (2) | 검사 | 2025-05-23 |
2695672 | 자바 임베디드 쪽으로 배우고 싶은데요..질문이요.. (1) | 뽀그리 | 2025-05-22 |
2695647 | 헉! 이클립스(v3.1)에서 발생되는 널포인트 익셉션? ;;; (3) | 아빠몬 | 2025-05-22 |
2695586 | IFRAME 캐싱 질문 | 봄나비 | 2025-05-22 |
2695498 | [질문]실행가능한 jar파일.. 정말 이해가 안가네요... ㅡㅜ;; | 터1프한렩 | 2025-05-21 |
2695468 | 자바랑 이클립스에서요.. | 스킬 | 2025-05-21 |
2695375 | Mysql 연동하는 자바 질문있습니다. | 아리솔 | 2025-05-20 |
2695319 | 파워포인트 파일을 저장할 수 있을까요? | 시윤 | 2025-05-19 |
2695289 | [질문]Tween 값의 정도를 알고 싶습니다. | 타마 | 2025-05-19 |
2695238 | c 와 c++의 시작 (10) | ChocoHoilc | 2025-05-18 |
2695215 | 탑메뉴의 repeat-x .배경이 두가지에요ㅠ ㅠ | 널위해 | 2025-05-18 |