2 minute read

🔭프로그램 설명

  • 은행계좌 관리 프로그램을 구현하고자 한다. 1단계에서는 C스타일로 구현하는 것을 목표로 한다.

  • 구현할 기능은 다음과 같다
    1. 계좌 개설
    2. 입금
    3. 출금
    4. 전체고객 잔액조회
  • 전제
    1. 통장 계좌번호는 중복되지 않는다
    2. 입금 및 출금액은 무조건 0보다 크다
    3. 계좌 정보는 계좌번호, 이름, 잔액 세가지를 관리한다
    4. 둘 이상의 고객 정보 저장을 위해 배열을 사용한다
    5. 계좌번호는 정수형이다

🖥️구현

/*
 * Banking System Ver 0.1
 * author : YEJIN LEE
 * contents : OOP 단계별 프로젝트 기본 틀 구성
 */

#include<iostream>
using namespace std;

const int NAME_LEN = 20;

struct Account
{
	int AccID;				// 계좌번호
	char Name[NAME_LEN];	// 고객이름
	int Money;				// 잔액
};

void AnnounceSys();
void CreateAccount(void);		// 계좌개설
void Deposit(void);				// 입금
void Withdraw(void);			// 출금
void CheckAllAccInfo();			// 전체고객 잔액조회

enum { DEPOSIT = 1, WITHDRAW, CREATE, INQUIRE, EXIT };

Account accArr[50];
int accNum = 0;					// 계좌 개수

void AnnounceSys() {            // 선택옵션 출력
	cout << "----- Menu -----" << endl;
	cout << "1. 입금" << endl;
	cout << "2. 출금" << endl;
	cout << "3. 개설" << endl;
	cout << "4. 계좌정보" << endl;
	cout << "5. 종료" << endl;
}

void CreateAccount() {          // 계좌 개설
	int id;
	char name[NAME_LEN];
	int balance;

	cout << "[계좌개설]" << endl;
	cout << "계좌 ID : "; cin >> id;
	cout << "이름 : "; cin >> name;
	cout << "잔액 : "; cin >> balance;

	accArr[accNum].AccID = id;
	accArr[accNum].Money = balance;
	strcpy(accArr[accNum].Name, name);

	accNum++;
}

void Deposit() {            // 입금
	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) {
			accArr[i].Money += money;

			cout << "잔액 : " << accArr[i].Money << endl << endl;
			return;
		}
		
	}
	cout << "계좌 정보가 없습니다" << endl << endl;
	return;
}

void Withdraw(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) {
			accArr[i].Money -= money;

			if (accArr[i].Money < 0) {
				cout << "잔액이 부족합니다" << endl << endl;
				accArr[i].Money += money;

				return;
			}

			cout << "잔액 : " << accArr[i].Money << endl << endl;
			return;
		}

	}
	cout << "계좌 정보가 없습니다" << endl << endl;
	return;
}

void CheckAllAccInfo() {            //전체 고객 잔액 조회

	for (int i = 0; i < accNum; i++) {
		cout << "계좌 ID : " << accArr[accNum].AccID << endl;
		cout << "이름 : " << accArr[accNum].Name << endl;
		cout << "잔액 : " << accArr[accNum].Money << endl;
	}
}

int main(void) {                // main()
	int option;

	while (1) {
		AnnounceSys();
		cout << "선택 : ";
		cin >> option;
		cout << endl;

		switch (option)
		{
		case DEPOSIT:
			Deposit();
			break;

		case WITHDRAW:
			Withdraw();
			break;

		case CREATE:
			CreateAccount();
			break;

		case INQUIRE:
			CheckAllAccInfo();
			break;
		
		case EXIT:
			return 0;
		default:
			cout << "Illegal selection" << endl;
	    }
    }
	return 0;
}

Tags: ,

Categories:

Updated: