Minwoo Dev.
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch01-6 : 은행계좌 관리 프로그램 본문
728x90
반응형
SMALL
문제
"은행계좌 관리 프로그램"을 구현할 것이다. 프로젝트 01단계에서는 C 스타일로 구현하는 것을 목표로 한다.
구현할 기능은 다음과 같다.
- 기능 1 : 계좌 개설
- 기능 2 : 입 금
- 기능 3 : 출 금
- 기능 4 : 전체고객 잔액조회
그리고 프로그램을 간결하게 하기 위해 몇가지 가정을 하겠다. 가정의 내용은 다음과 같다.
- 통장의 계좌번호는 중복되지 아니한다. (중복검사 하지 않겠다는 뜻)
- 입금 및 출금액은 무조건 0보다 크다. (입금 및 출금액의 오류검사 하지 않겠다는 뜻
- 고객의 계좌정보는 계좌번호, 고객이름, 고객의 잔액, 이렇게 세가지만 저장 및 관리한다.
- 둘 이상의 고객정보 저장을 위해서 배열을 사용한다.
- 계좌번호는 정수의 형태이다.
내가 구현한 코드
#include <iostream>
using namespace std;
typedef struct Person
{
int id;
char name[10];
int deposit;
} Person;
void showMenu(void)
{
cout << endl;
cout << endl;
cout << "-----Menu-----" << endl;
cout << "1. 계좌개설" << endl;
cout << "2. 입 금" << endl;
cout << "3. 출 금" << endl;
cout << "4. 계좌정보 전체 출력" << endl;
cout << "5. 프로그램 종료" << endl;
cout << "==========" << endl;
cout << endl;
cout << endl;
}
void selectMenu(int *select)
{
cout << "선택 : ";
cin >> *select;
}
void AddAccount(int *id, char *name, int *deposit)
{
cout << endl;
cout << "[계좌개설]" << endl;
cout << "계좌 ID : ";
cin >> *id;
cout << "이 름 : ";
cin >> name;
cout << "입금액 : ";
cin >> *deposit;
}
void addMoney(int *perDeposit, int deposit)
{
*perDeposit += deposit;
}
void drawMoney(int *perDeposit, int amount)
{
*perDeposit -= amount;
}
void PrintAllAccounts(Person p[], int count)
{
cout << endl;
cout << endl;
for (int i = 0; i < count; i++)
{
cout << "--------------------" << endl;
cout << "계좌 ID : " << p[i].id << endl;
cout << "이 름 : " << p[i].name << endl;
cout << "잔 액 : " << p[i].deposit << endl;
cout << "--------------------" << endl;
}
}
int main(void)
{
int selcetNum = 0;
Person p1[10];
int cAn = 0;
while (true)
{
showMenu();
selectMenu(&selcetNum);
if (selcetNum == 1)
{
AddAccount(&p1[cAn].id, p1[cAn].name, &p1[cAn].deposit);
cAn++;
}
else if (selcetNum == 2)
{
char instantId[10];
int depo = 0;
cout << "계좌 ID : ";
cin >> instantId;
cout << "입금액 : ";
cin >> depo;
addMoney(&p1[0].deposit, depo);
}
else if (selcetNum == 3)
{
char instantId[10];
int amount = 0;
cout << "계좌 ID : ";
cin >> instantId;
cout << "출금액 : ";
cin >> amount;
drawMoney(&p1[0].deposit, amount);
}
else if (selcetNum == 4)
{
PrintAllAccounts(p1, cAn);
}
else if (selcetNum == 5)
{
cout << "프로그램을 종료합니다." << endl;
break;
}
}
return 0;
}
결과
두 개 이상의 계좌를 추가하면 입금과 출금을 할 때 중복검사를 하지 않기때문에 첫번째 계좌의 값들만 출금 및 입금이 가능한 상태이다.
728x90
반응형
LIST
'C++' 카테고리의 다른 글
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch02 - 2 : const 포인터와 const 참조자 문제풀이 (0) | 2024.03.04 |
---|---|
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch02-1 : 참조자 기반의 Call-by-reference 구현 (0) | 2024.03.04 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch01-4 : 파일의 분할 (0) | 2024.03.03 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch01-3 : 매개변수의 디폴트 값 (0) | 2024.03.02 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch01-2 : 함수 오버로딩 (0) | 2024.03.02 |