[열혈 C++] OOP 단계별 프로젝트 01단계 : C로 구현하기
🔭프로그램 설명
-
은행계좌 관리 프로그램을 구현하고자 한다. 1단계에서는 C스타일로 구현하는 것을 목표로 한다.
- 구현할 기능은 다음과 같다
- 계좌 개설
- 입금
- 출금
- 전체고객 잔액조회
- 전제
- 통장 계좌번호는 중복되지 않는다
- 입금 및 출금액은 무조건 0보다 크다
- 계좌 정보는 계좌번호, 이름, 잔액 세가지를 관리한다
- 둘 이상의 고객 정보 저장을 위해 배열을 사용한다
- 계좌번호는 정수형이다
🖥️구현
/*
* 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;
}