[C++]OOP 단계별 프로젝트 01단계

서희찬·2021년 5월 19일
0

프로젝트 01단계의 도입

C++ 공부하면서 가장 어려운점은 문법의 이해보다 구현이다.
C++은 C와 달라서 활용하는데 있어 많은 시간과 노력이 요구된다.
그렇기에 이렇게 프로젝트를 진행하며 구현의 실력을 향상시키자.

이 프로젝트는 C++을 처음 시작하는 우리에게 하나의 모델이 될것이다!

1단계에서는 프로젝트의 본격적인 시작에 앞서, 구현에 필요한 틀을 제시할것이다.

여기에서 제시한 틀을 토대로 총 7 단계에 걸쳐 프로젝트를 완성해 나갈 것이다.

프로그램 설명

우리가 구현하고자 하는것은 "은행계좌 관리 프로그램"이다.
1단계에서는 C스타일로 구현하는 것을 목표로 한다.
구현할 기능은 다음과 같다.

  • 기능 1. 계좌개설
  • 기능 2. 입금
  • 기능 3. 출금
  • 기능 4. 전체고객 잔액조회

그리고 프로그램의 간결성을 위해 몇 가지 가정을 하겠다.

  • 통장의 계좌번호는 중복되지 아니한다.(중복검사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단계 끝 !

profile
Carnegie Mellon University Robotics Institute | Research Associate | Developing For Our Lives, 세상에 기여하는 삶을 살고자 개발하고 있습니다

0개의 댓글