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에 정수가 아닌 값이 들어가면 다시 입력받도록 하는 코드 추가
- 전체 계좌 출력 시 몇번 째 계좌인지 출력 추가
- 나머지는 조건과 동일
반응형
'[C++] > C++ 언어 기초' 카테고리의 다른 글
7. [C++] 새로운 자료형 bool (0) | 2024.04.11 |
---|---|
6. const, 메모리 공간, Call-by-value & Call-by-reference (0) | 2024.04.11 |
5. [C++] 이름공간(namespace) (0) | 2024.04.11 |
4. [C++] 인라인(inline) 함수 (0) | 2024.04.11 |
3. [C++] 매개변수의 디폴트 값(Default Value) (0) | 2024.04.11 |