함수를 const로 선언하면 실수로 자신의 의도와 다르게 멤버변수의 값을 변경했을 때, 컴파일 에러를 통해서 이를 확인할 수 있는데 이는 프로그래머의 실수를 최소화하기 위한 매우 의미 있는 선언이다.
Account 클래스의 멤버함수 중 일부를 const로 선언하면서 Banking System의 버전을 0.4로 업그레이드 시킴. const로 선언 가능한 모든 멤버함수를 const로 선언.
#include <iostream>
#include <cstring>
const int NAME_LEN=20;
class Accounts
{
private:
int ID=0;
char *name;
int amount=0;
public:
Accounts(const int &ID, char *b, const int &amount) : ID(ID), amount(amount)
{
name=new char[strlen(b)+1];
strcpy(name,b);
}
bool Accountcheck(int a) const
{
if(a==ID)
return true;
else
return false;
}
void deposit(int a)
{
amount+=a;
}
void withdraw(int a)
{
amount-=a;
}
bool Accountzero() const
{
if(ID==0)
return true;
else
return false;
}
void showAccount() const
{
std::cout<<"계좌ID: "<<ID<<std::endl;
std::cout<<"이름: "<<name<<std::endl;
std::cout<<"잔액: "<<amount<<std::endl<<std::endl;
}
};
class menus
{
private:
//int x=0; //account 개수
public:
void MakeAccount();
void deposit();
void withdraw();
void account_fuc() const;
};
Accounts *Account[NAME_LEN];
menus menus;
int acc=0; //Account 번호
class Selectmenu
{
private:
int num;
public:
void selectmenu()
{
while(1)
{
std::cout<<"-----Menu_____"<<std::endl;
std::cout<<"1. 계좌개설"<<std::endl;
std::cout<<"2. 입 금"<<std::endl;
std::cout<<"3. 출 금"<<std::endl;
std::cout<<"4. 계좌정보 전체 출력"<<std::endl;
std::cout<<"5. 프로그램 종료"<<std::endl;
std::cout<<"선택: ";
std::cin>>num;
if(num==1)
{
menus.MakeAccount();
}
else if(num==2)
{
menus.deposit();
}
else if(num==3)
{
menus.withdraw();
}
else if(num==4)
{
menus.account_fuc();
}
else if(num==5)
{
break;
}
}
}
};
Selectmenu sm;
int main()
{
sm.selectmenu();
return 0;
}
void menus::MakeAccount()
{
int a;
char b[NAME_LEN];
int c;
std::cout<<"[계좌개설]"<<std::endl;
std::cout<<"계좌ID: ";
std::cin>>a;
std::cout<<"이 름: ";
std::cin>>b;
std::cout<<"입금액: ";
std::cin>>c;
Account[acc]=new Accounts(a,b,c);
acc++;
}
void menus::deposit()
{
int acID=0;
int num=0;
int am=0;
std::cout<<"[입 금]";
std::cout<<"계좌ID: ";
std::cin>>acID;
while(1)
{
if(Account[num]->Accountcheck(acID)==true)
break;
else
num++;
}
std::cout<<"입금액: ";
std::cin>>am;
Account[num]->deposit(am);
std::cout<<"입금완료"<<std::endl;
}
void menus::withdraw()
{
int acID=0;
int num=0;
int am=0;
std::cout<<"[입 금]";
std::cout<<"계좌ID: ";
std::cin>>acID;
while(1)
{
if(Account[num]->Accountcheck(acID)==true)
break;
else
num++;
}
std::cout<<"출금액: ";
std::cin>>am;
Account[num]->withdraw(am);
std::cout<<"출금완료"<<std::endl;
}
void menus::account_fuc() const
{
int i=0;
for(int r=0; r<acc; r++)
{
Account[r]->showAccount();
}
}
'Algorithm > C++' 카테고리의 다른 글
[백준] 11659번 : 구간 합 구하기 4 C++ 문제풀이 솔루션 (0) | 2024.04.05 |
---|---|
열혈 C++ 프로그래밍 OOP 단계별 프로젝트 06단계 (2) | 2023.09.09 |
열혈 C++ 프로그래밍 OOP 단계별 프로젝트 02단계 (0) | 2023.07.22 |
C, C++ 객체 배열과 객체 포인터 배열 / 세그멘테이션 오류 segmentation fault(core dumped) (0) | 2023.07.22 |
열혈 C++ 프로그래밍 문제 4-2 [다양한 클래스의 정의] (1) | 2023.06.08 |
댓글