본문 바로가기

Programming/C++ 3

[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 01

반응형

C언어 기반의 C++

 

구현할 기능

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

구현의 한계에 의한 최소한의 가정

  • 통장의 계좌번호는 중복되지 않는다. [중복검사의 미구현]
  • 입금 및 출금액은 무조건 0보다 크다. [입금 및 출금액 오류검사 미구현]
  • 고객의 계좌정보는 계좌번호, 고객이름, 고객의 잔액으로 저장 및 관리
  • 둘 이상의 고객 정보 저장을 위해 배열을 사용
  • 계좌번호는 정수의 형태

선수과목:

열거체, 스위치, 구조체와 구조체 배열


#include <iostream>
#include <cstring>
#include <string>

using namespace std;
const int NAME_LEN = 20;

void ShowMenu(void);		//메뉴출력
void MakeAccount(void);		//계좌개설을 위한 함수
void DespositMoney(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:
			DespositMoney();
			break;
		case WITHDRAW:
			WithdrawMoney();
			break;
		case INQUIRE:
			ShowAllAccInfo();
			break;
		case EXIT:
			return 0;
		default:
			cout << "Illegal selection.." << endl;
		}
	}
	return 0;
}

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;
	char name[NAME_LEN];
	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_s(accArr[accNum].cusName, strlen(name) + 1, name);
	accNum++;
}
void DespositMoney(void){
	int money;
	int id;

	cout << "[입 금]" << endl;
	cout << "계좌ID: " << endl;
	cout << "입금액 : " << endl;

	for (int i = 0; i < accNum; i++)
	{
		if (accArr[i].accID == id)
		{
			accArr[i].balance += money;
			cout << "입금완료" << endl<<endl;
			return;
		}
	}
	cout << "유효하지 않은 ID입니다." << endl << endl;
}
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;
	}
}

반응형