01-06 은행계좌프로그램 실습 1단계

2024. 4. 11. 13:50[C++]/C++ 언어 기초

프로그램 설명

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

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

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

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

 

내 코드

#include "stdafx.h"
#include <iostream>

using namespace std;
using namespace System;

void ShowMenu(void);
void MakeAcc(void);
void DepositMoney(void);
void WithdrawMoney(void);
void ShowAccInfo(void);

enum {Make = 1, Deposit, Withdraw, ShowAcc};

typedef struct{
	int accId;
	int money;
	char CusName[20];
}Accounts;

Accounts accArr[100];
int accNum = 0;

int main(array<System::String ^> ^args)
{
	while(1){
		ShowMenu();
	}   
}

void ShowMenu(void){

	int select;
	cout<<"-------Menu-------"<<endl<<"1. 계좌개설"<<endl<<"2. 입 금"<<endl<<"3. 출 금"<<endl<<"4. 계좌정보 전체 출력"<<endl<<"5. 프로그램 종료"<<endl;
	cout<<"번호를 입력하세요. : ";cin>>select;
	cout<<endl;

	switch(select){
	case Make:
		MakeAcc();
		break;
	case Deposit:
		DepositMoney();
		break;
	case Withdraw:
		WithdrawMoney();
		break;
	case ShowAcc:
		ShowAccInfo();
		break;
	case 5:
		exit(0);
	default:
		cout<<"유효하지 않은 번호입니다."<<endl<<endl;
	}

}

void MakeAcc(void){
	int id, money;
	char name[20];

	cout<<"[계좌개설]"<<endl;
	cout<<"계좌ID: ";
	while (!(cin >> id)) {      
		cin.clear();      
		cin.ignore(INT_MAX,'\n');      
		cout << "잘못된 값을 입력하셨습니다. 정수로 입력해주세요 \n";
		cout <<"계좌 ID: ";
	}
	cout<<"이름(최대 20자): "; cin>>name;
	cout<<"입금액: "; cin>>money;
	cout<<endl;

	accArr[accNum].accId = id;
	accArr[accNum].money = money;
	strcpy(accArr[accNum].CusName, name);
	accNum++;
}

void DepositMoney(void){
	int id, money;
	cout<<"[입   금]"<<endl;
	cout<<"계좌ID: ";
	while (!(cin >> id)) {      
		cin.clear();      
		cin.ignore(INT_MAX,'\n');      
		cout << "잘못된 값을 입력하셨습니다. 정수로 입력해주세요 \n";
		cout <<"계좌 ID: ";
	}
	cout<<"입금액: ";cin>>money;

	for(int i = 0; i<accNum; i++){
		if(accArr[i].accId == id){
			accArr[i].money += money;
			cout<<"입금완료"<<endl;
			cout<<accArr[i].CusName<<"고객님의 입금 후 잔액 : "<<accArr[i].money<<endl;
			return;
		}
	}

	cout<<"아이디가 없습니다."<<endl;

}

void WithdrawMoney(void){
	int id, money;
	cout<<"[출   금]"<<endl;
	cout<<"계좌ID: ";
	while (!(cin >> id)) {      
		cin.clear();      
		cin.ignore(INT_MAX,'\n');      
		cout << "잘못된 값을 입력하셨습니다. 정수로 입력해주세요 \n";
		cout <<"계좌 ID: ";
	}
	cout<<"출금액: ";
	while (!(cin >> money)) {      
		cin.clear();      
		cin.ignore(INT_MAX,'\n');      
		cout << "잘못된 값을 입력하셨습니다.\n";
		cout <<"출금액: ";
	}   

	for(int i = 0; i<accNum; i++){
		if(accArr[i].accId == id){
			accArr[i].money -= money;
			cout<<"출금완료"<<endl;
			cout<<accArr[i].CusName<<"고객님의 출금 후 잔액 : "<<accArr[i].money<<endl;
			return;
		}
	}

	cout<<"아이디가 없습니다."<<endl;
}

//계좌정보 전체 출력
void ShowAccInfo(void){
	for(int i = 0; i<accNum;i++){
		cout<<"["<<i+1<<"번째 계좌정보]"<<endl;
		cout<<"계좌Id: "<<accArr[i].accId<<endl;
		cout<<"이름: "<<accArr[i].CusName<<endl;
		cout<<"잔액: "<<accArr[i].money<<endl<<endl;

		if(i+1 == accNum){
			cout<<"-------전체 계좌 출력 완료-------"<<endl<<endl;
		}
	}
}

  • 계좌 ID에 정수가 아닌 값이 들어가면 다시 입력받도록 하는 코드 추가
  • 전체 계좌 출력 시 몇번 째 계좌인지 출력 추가
  • 나머지는 조건과 동일
반응형