1.
#include <iostream>
#include <cstring>
using namespace::std;
const int NAME_LEN=20;
typedef struct _Account
{
int id;
int balance;
char name[NAME_LEN];
}Account;
Account pArray[100];
int index=0;
void PrintMenu();
void MakeAccount();
void Deposit();
void Withdraw();
void Inquire();
enum{MAKE=1, DEPOSIT, WITHDRAW, INQUIRE, EXIT};
int main(void)
{
int choice;
while(1)
{
PrintMenu();
cout <<" 선택 : ";
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<<"Illegal selection. Try again."<<endl;
break;
}
}
return 0;
}
void PrintMenu()
{
cout<<"-----Menu-----"<<endl;
cout<<"1. 계좌개설"<<endl;
cout<<"2. 입 금"<<endl;
cout<<"3. 출 금"<<endl;
cout<<"4. 계좌정보 전체 출력"<<endl;
cout<<"5. 프로그램 종료"<<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].id=id;
pArray[index].balance=balance;
strcpy(pArray[index].name, name);
index++;
}
void Deposit()
{
int money;
int id;
cout<<"[입 금]"<<endl;
cout<<"계좌ID: "; cin>>id;
cout<<"입금액: "; cin>>money;
for(int i=0; i<index; i++)
{
if(pArray[i].id==id)
{
pArray[i].balance+=money;
cout<<"입금완료"<<endl;
return;
}
}
cout<<"유효하지 않은 ID 입니다."<<endl;
}
void Withdraw()
{
int money;
int id;
cout<<"[출 금]"<<endl;
cout<<"계좌ID: "; cin>>id;
cout<<"출금액: "; cin>>money;
for(int i=0; i<index; i++)
{
if(pArray[i].id==id)
{
if(pArray[i].balance<money)
{
cout<<"잔액부족"<<endl;
return;
}
pArray[i].balance-=money;
cout<<"출금완료"<<endl;
return;
}
}
cout<<"유효하지 않은 ID 입니다."<<endl;
}
void Inquire()
{
for(int i=0; i<index; i++)
{
cout<<"계좌ID: "<<pArray[i].id<<endl;
cout<<"이 름: "<<pArray[i].name<<endl;
cout<<"잔 액: "<<pArray[i].balance<<endl<<endl;
}
}
![C++ OOP project [0] - 은행 계좌 관리 프로그램 (계좌 개설, 입금, 출금, 전체 고객 잔액 조회), (오버로딩, using, ::, 전역변수 접근) 1 image 17](https://i0.wp.com/openpj.co.kr/wp-content/uploads/2025/02/image-17.png?resize=174%2C144&ssl=1)
#. 이론
1. 오버 로딩
함수의 이름이 같아도 매개 변수의 타입 및 개수가 다르면 문제 되지 않으며, 이를 가리켜 “함수가 오버로딩 되었다.” 라고 표현
-> 함수의 이름은 같지만 매개 변수의 타입이나 개수가 달라야 한다.
2. using
using namespace std;
위 코드 보다는
using std::cout;
using std::cin;
using std::endl;
이 코드가 적절하다. 이름 공간 std 안에는 다양한 종류의 선언이 존재 하는데 첫 번째 코드와 같은 선언을 넣어버리면 프로그래밍 하기에는 편리하지만 이름 충돌이 발생할 확률이 상대적으로 높아지기 때문이다.
3. 전역변수 접근
#include <numeric>
#include <iostream>
#include <iterator>
namespace A_COM
{
void function(void)
{
std::cout<<"A. com 에서 정의한 함수" << std::endl;
}
}
namespace B_COM
{
void function(void)
{
std::cout<<"B. com에서 정의한 함수 " << std::endl;
}
}
namespace C_COM
{
void function1(void)
{
std::cout<<"C. com에서 1번 정의한 함수" << std::endl;
}
}
using C_COM::function1;
using std::cout;
using std::cin;
using std::endl;
int val= 100;
int main() {
int val=100;
::val+=1;
cout << "val: " << val << endl;
cout << "::val: " << ::val << endl;
A_COM::function();
B_COM::function();
function1();
return 0;
}
전역 변수로 선언되어 있는 변수 val 에 접근하려고 할 때 지역 변수로 같은 이름의 변수가 있어 가려질 때, :: 를 이용해 접근 가능
0 Comments