728x90
반응형
C언어 기반의 C++
구현할 기능
- 계좌개설
- 입금
- 출금
- 전체고객 잔액조회
구현의 한계에 의한 최소한의 가정
- 통장의 계좌번호는 중복되지 않는다. [중복검사의 미구현]
- 입금 및 출금액은 무조건 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;
}
}
728x90
반응형
'Programming > C++ 3' 카테고리의 다른 글
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 04 (0) | 2021.05.17 |
---|---|
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 03 (0) | 2021.05.17 |
[C++ 프로젝트] 은행계좌 관리 프로그램 Part. 02 (0) | 2021.05.17 |
[C++] 01-1. C++ 기반의 데이터 입출력 (0) | 2021.03.14 |
C++ 공부하기 3 (0) | 2021.03.14 |