C++ 공부하면서 가장 어려운점은 문법의 이해보다 구현이다.
C++은 C와 달라서 활용하는데 있어 많은 시간과 노력이 요구된다.
그렇기에 이렇게 프로젝트를 진행하며 구현의 실력을 향상시키자.
이 프로젝트는 C++을 처음 시작하는 우리에게 하나의 모델이 될것이다!
1단계에서는 프로젝트의 본격적인 시작에 앞서, 구현에 필요한 틀을 제시할것이다.
여기에서 제시한 틀을 토대로 총 7 단계에 걸쳐 프로젝트를 완성해 나갈 것이다.
우리가 구현하고자 하는것은 "은행계좌 관리 프로그램"이다.
1단계에서는 C스타일로 구현하는 것을 목표로 한다.
구현할 기능은 다음과 같다.
그리고 프로그램의 간결성을 위해 몇 가지 가정을 하겠다.
- 통장의 계좌번호는 중복되지 아니한다.(중복검사x)
- 입금 및 출금액은 무조건 0보다 크다.(입금,출금 오류검사x)
- 고객의 계좌정보는 계좌번호,이름,잔액 이렇게 3가지만 저장 및 관리한다.
- 둘이상의 고객 정보 저장을 위해 배열을 사용하낟.
- 계좌번호는 정수의 형태이다.
자 !
이제 한번 구현해보자 !
#include <iostream>
#include <cstring>
using namespace std;
const int NAME_LEN = 20;
void ShowMenu(void); // 메뉴 출력
void MakeAccount(void); // 계좌개설
void DepositMoney(void); // 입금
void WithdrawMoney(void); // 출금
void ShowAllAccInfo(void); // 잔액조회
enum {MAKE=1, DEPOSIT, WITHDRAW, INQUIRE, EXIT};
typedef struct
{
int accID; // 계좌번호
int balance; // 잔액
char cusName[NAME_LEN]; //고객 이름
}Account;
Account accArr[100]; // Account 저장을 위한 배열
int accNum = 0; // 저장된 Account 수
int main(void)
{
int choice;
while(1)
{
ShowMenu();
cout<<"선택 : ";
cin>>choice;
cout<<endl;
switch (choice) {
case MAKE: // 게좌계설
MakeAccount();
break;
case DEPOSIT: // 입 금
DepositMoney();
break;
case WITHDRAW: // 출금
WithdrawMoney();
break;
case INQUIRE:
ShowAllAccInfo();
break;
case EXIT:
cout<<"계좌프로그램을 종료합니다."<<endl;
return 0;
break;
default:
cout<<"잘못된 숫자입니다 !! "<<endl;
}
}
}
//메뉴보여주기
void ShowMenu(void)
{
cout<<"----MENU-----"<<endl;
cout<<"1. 계좌개설"<<endl;
cout<<"2. 입 금"<<endl;
cout<<"3. 출 금"<<endl;
cout<<"4. 계좌정보 전체 출력"<<endl;
cout<<"5. 프로그램 종료"<<endl;
}
//계좌개설
void MakeAccount(void)
{
int id; // id
char name[NAME_LEN]; // name
int balance; // 잔액
cout<<"[계좌개설]"<<endl;
cout<<"계좌 ID : "; cin>>id;
cout<<"이 름 : "; cin>>name;
cout<<"입금액 : "; cin>>balance;
cout<<endl;
accArr[accNum].accID=id;
accArr[accNum].balance=balance;
strcpy(accArr[accNum].cusName, name); //name정보를 배열에 저장
accNum++; // 사람 올려 ~
}
// 입금
void DepositMoney(void)
{
int money;
int id;
cout<<"[입 금]"<<endl;
cout<<"계좌 ID "; cin>>id;
cout<<"입금액 : "; cin>>money;
for(int i =0;i<accNum;i++)
{
if(accArr[i].accID == id) // 빙빙빙 돌면서 accID를 찾는다
{
accArr[i].balance+=money;
cout<<"입금완료 ! "<<endl;
return; // 함수 탈출 !
}
}
cout<<"유효하지 않은 ID 입니다."<<endl<<endl; // accId 와 동일한 ID를 못찾으면 출력
}
// 출금
void WithdrawMoney(void)
{
int money;
int id;
cout<<"[출 금]"<<endl;
cout<<"계좌ID : "; cin>>id;
cout<<"출금액 : "; cin>>money;
for( int i=0;i<accNum;i++)
{
if(accArr[i].accID == id) //아이디와 동일한 계좌 발견
{
if(accArr[i].balance<money) // 액수 확인
{
cout<<"잔액부족..."<<endl<<endl;
return;
}
accArr[i].balance-=money;
cout<<"출금 완료"<<endl<<endl;
return;
}
}
cout<<"유효하지 않은 ID 입니다."<<endl<<endl;
}
void ShowAllAccInfo(void)
{
for(int i =0;i<accNum;i++)
{
cout<<"계좌 ID : "<<accArr[i].accID<<endl;
cout<<"이 름"<<accArr[i].cusName<<endl;
cout<<"잔 액"<<accArr[i].balance<<endl<<endl;
}
}
1단계 끝 !