Minwoo Dev.

[C++] 윤성우의 열혈 C++ 프로그래밍 Ch01-6 : 은행계좌 관리 프로그램 본문

C++

[C++] 윤성우의 열혈 C++ 프로그래밍 Ch01-6 : 은행계좌 관리 프로그램

itisminu 2024. 3. 3. 15:05
728x90
반응형
SMALL

 

문제

 

"은행계좌 관리 프로그램"을 구현할 것이다. 프로젝트 01단계에서는 C 스타일로 구현하는 것을 목표로 한다. 

구현할 기능은 다음과 같다.

 

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

 

그리고 프로그램을 간결하게 하기 위해 몇가지 가정을 하겠다. 가정의 내용은 다음과 같다.

 

  • 통장의 계좌번호는 중복되지 아니한다. (중복검사 하지 않겠다는 뜻)
  • 입금 및 출금액은 무조건 0보다 크다. (입금 및 출금액의 오류검사 하지 않겠다는 뜻
  • 고객의 계좌정보는 계좌번호, 고객이름, 고객의 잔액, 이렇게 세가지만 저장 및 관리한다.
  • 둘 이상의 고객정보 저장을 위해서 배열을 사용한다.
  • 계좌번호는 정수의 형태이다.

 

 

내가 구현한 코드

#include <iostream>
using namespace std;

typedef struct Person
{
    int id;
    char name[10];
    int deposit;
} Person;

void showMenu(void)
{
    cout << endl;
    cout << endl;
    cout << "-----Menu-----" << endl;
    cout << "1. 계좌개설" << endl;
    cout << "2. 입 금" << endl;
    cout << "3. 출 금" << endl;
    cout << "4. 계좌정보 전체 출력" << endl;
    cout << "5. 프로그램 종료" << endl;
    cout << "==========" << endl;
    cout << endl;
    cout << endl;
}

void selectMenu(int *select)
{
    cout << "선택 : ";
    cin >> *select;
}

void AddAccount(int *id, char *name, int *deposit)
{
    cout << endl;
    cout << "[계좌개설]" << endl;
    cout << "계좌 ID : ";
    cin >> *id;
    cout << "이 름 : ";
    cin >> name;
    cout << "입금액 : ";
    cin >> *deposit;
}

void addMoney(int *perDeposit, int deposit)
{
    *perDeposit += deposit;
}

void drawMoney(int *perDeposit, int amount)
{
    *perDeposit -= amount;
}

void PrintAllAccounts(Person p[], int count)
{
    cout << endl;
    cout << endl;
    for (int i = 0; i < count; i++)
    {
        cout << "--------------------" << endl;
        cout << "계좌 ID : " << p[i].id << endl;
        cout << "이 름 : " << p[i].name << endl;
        cout << "잔 액 : " << p[i].deposit << endl;
        cout << "--------------------" << endl;
    }
}

int main(void)
{
    int selcetNum = 0;
    Person p1[10];
    int cAn = 0;
    while (true)
    {
        showMenu();
        selectMenu(&selcetNum);
        if (selcetNum == 1)
        {
            AddAccount(&p1[cAn].id, p1[cAn].name, &p1[cAn].deposit);
            cAn++;
        }
        else if (selcetNum == 2)
        {
            char instantId[10];
            int depo = 0;
            cout << "계좌 ID : ";
            cin >> instantId;
            cout << "입금액 : ";
            cin >> depo;
            addMoney(&p1[0].deposit, depo);
        }
        else if (selcetNum == 3)
        {
            char instantId[10];
            int amount = 0;
            cout << "계좌 ID : ";
            cin >> instantId;
            cout << "출금액 : ";
            cin >> amount;
            drawMoney(&p1[0].deposit, amount);
        }
        else if (selcetNum == 4)
        {
            PrintAllAccounts(p1, cAn);
        }
        else if (selcetNum == 5)
        {
            cout << "프로그램을 종료합니다." << endl;
            break;
        }
    }
    return 0;
}

 

 

결과

실행 결과

 

두 개 이상의 계좌를 추가하면 입금과 출금을 할 때 중복검사를 하지 않기때문에 첫번째 계좌의 값들만 출금 및 입금이 가능한 상태이다.

 

728x90
반응형
LIST