본문으로 바로가기

C++ 은행 계좌 관리 프로그램

category [ IT ]/C++, 자료구조 2015. 6. 24. 20:39

- 전역변수 사용 및 클래스 사용도 없는 완전 초보 코딩. 이렇게 하면 안 된다.


- 변수 정리 및 함수 정리 

#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string.h>


char c,innum[20]={0},outnum[20]={0};
int num,rnum/*등록 함수의 사람*/,vnum/*잔액 조회 함수의 고객명단*/;
int ibnum=0/*입금 함수의 고객명단*/,m=0/*계좌번호 일치 검사 변수*/,n=0/*계좌번호 일치 검사 변수2*/,o=0/*계좌번호 일치 검사 변수3*/,p=0/*계좌번호 일치 검사 변수4*/,inmon=0/*입금액*/; // 입금함수 변수
int l1=0/*출금 함수의 고객명단*/,m1=0,n1=0,o1=0,p1=0,outmon=0/*출금액*/; // 출금 함수 변수


/**************************************
*                                     *
*             구조체 정의              *
*                                     *
***************************************/

typedef struct account
{
char ID[20]; // 이름 입력 
char No[20]; // 계좌 번호
int money;   // 금액
}acc;



/***************************************
*                                     *
*   등록 회원 숫자 관리 함수          *
*   함수명 : memberNum                *
*                                     *
***************************************/

acc *memberNum()
{

std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  은행 계좌 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl;
std::cout<<"< 등록 하실 회원의 수를 입력하세요 >"<<std::endl;
std::cin>>num;
acc* pAc; // 구조체 포인터 변수 생성
pAc = new acc[num]; // 구조체 동적할당

rnum=0;

system("cls");
return pAc;
}

/***************************************
*                                     *
*   프로그램 시작 화면 출력 함수      *
*   함수명 : showStartView            *
*                                     *
***************************************/

char showStartView()
{
fflush(stdin);
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  은행 계좌 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl;
std::cout<<"1. 회원등록"<<std::endl;
std::cout<<"2. 입금"<<std::endl;
std::cout<<"3. 출금"<<std::endl;
std::cout<<"4. 잔액조회"<<std::endl;
std::cout<<"5. 나가기"<<std::endl;
c = getche();
system("cls");
return c;
}

/**************************************
*                                     *
*   1.회원 등록 함수                   *
*   함수명 : registMember              *
*                                     *
***************************************/
acc* registMember(acc *pAc,int num)
{
if(rnum<num)
{
for(rnum;rnum<num;rnum++)
{
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  회원 등록 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl;
std::cout<<num<<"명 중 "<<rnum+1<<"번째 고객을 등록중입니다."<<std::endl;
std::cout<<std::endl<<"등록하실 고객의 이름을 입력하세요"<<std::endl;
std::cin>> pAc[rnum].ID;
std::cout<<std::endl<<"등록하실 계좌번호를 입력하세요"<<std::endl;
std::cin>> pAc[rnum].No;
std::cout<<std::endl<<"등록하실 금액을 입력하세요"<<std::endl;
std::cin>> pAc[rnum].money;
system("cls");
}
}

else
{
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  회원 등록 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl;
std::cout<<std::endl<<"고객의 수가 너무 많습니다."<<std::endl;
system("pause");
system("cls");
}
return pAc;
}

/**************************************
*                                     *
*   2. 계좌 입금 함수                 *
*   함수명 : depositMoney             *
*                                     *
***************************************/

acc* depositMoney(acc *pAc,int num)
{
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  계좌 입금 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl;
std::cout<<std::endl;
std::cout<<"=============================고객 명단==============================="<<std::endl;
for(ibnum=0;ibnum<num;ibnum++)
{
std::cout<<std::setw(23)<<"고객 이름"<<std::setw(23)<<"계좌 번호"<<std::setw(23)<<"잔액"<<std::endl;
std::cout<<std::setw(23)<<pAc[ibnum].ID<<std::setw(23)<<pAc[ibnum].No<<std::setw(23)<<pAc[ibnum].money<<std::endl<<std::endl;
}
std::cout<<std::endl<<"입금 하실 계좌번호를 쓰고 엔터를 눌러주세요"<<std::endl;
std::cin>>innum;
std::cout<<std::endl<<"입금 하실 금액을 쓰고 엔터를 눌러주세요"<<std::endl;
std::cin>>inmon;

for(m=0;m<num;m++,p++)
{
p=0;
o=0;
for(n=0;n<20;n++)
{
if(pAc[m].No[n]==innum[n])
{
o++;
}
}
if(o==strlen(innum)+1)
{
pAc[m].money = pAc[m].money+inmon;
std::cout<<std::endl<<"입금이 완료되었습니다. "<<pAc[m].No<< "통장의 잔액은 "<<pAc[m].money<<"원 입니다."<<std::endl;
system("pause");
system("cls");
break;
}
}
if(p==num)
{
std::cout<<"계좌번호가 잘못되었습니다."<<std::endl;
system("pause");
system("cls");
}
return pAc;
}

/**************************************
*                                     *
*   3. 계좌 출금 함수                 *
*   함수명 : withdrawMoney            *
*                                     *
***************************************/

acc* withdrawMoney(acc *pAc,int num)
{
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  계좌 출금 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl;
for(l1=0;l1<num;l1++)
{
std::cout<<std::setw(23)<<"고객 이름"<<std::setw(23)<<"계좌 번호"<<std::setw(23)<<"잔액"<<std::endl;
std::cout<<std::setw(23)<<pAc[l1].ID<<std::setw(23)<<pAc[l1].No<<std::setw(23)<<pAc[l1].money<<std::endl<<std::endl;
}
std::cout<<std::endl<<"출금 하실 계좌번호를 쓰고 엔터를 눌러주세요"<<std::endl;
std::cin>>outnum;
std::cout<<std::endl<<"출금 하실 금액을 쓰고 엔터를 눌러주세요"<<std::endl;
std::cin>>outmon;

for(m1=0;m1<num;m1++,p1++)
{
p1=0;
o1=0;
for(n1=0;n1<20;n1++)
{
if(pAc[m1].No[n1]==outnum[n1])
o1++;
}
if(o1==strlen(outnum)+1)
{
if(pAc[m1].money>=outmon)
{
pAc[m1].money = pAc[m1].money-outmon;
std::cout<<std::endl<<"출금이 완료되었습니다. "<<pAc[m1].No<< "통장의 잔액은 "<<pAc[m1].money<<"원 입니다."<<std::endl;
system("pause");
system("cls");
break;
}
else
{
std::cout<<"잔액이 부족합니다."<<std::endl;
system("pause");
system("cls");
break;
}
}
}
if(p==num)
{
std::cout<<"계좌번호가 잘못되었습니다"<<std::endl;
}
return pAc;
}

/**************************************
*                                     *
*   4. 계좌 조회 함수                 *
*   함수명 : viewMoney                *
*                                     *
***************************************/

void viewMoney(acc * pAc)
{
if(rnum==0)
{
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  계좌 출금 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl<<std::endl;
std::cout<<"고객이 등록되어 있지 않습니다."<<std::endl;
system("pause");
system("cls");
}
else
{
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  잔액 조회 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl<<std::endl;
for(vnum=0;vnum<num;vnum++)
{
std::cout<<std::setw(23)<<"고객 이름"<<std::setw(23)<<"계좌 번호"<<std::setw(23)<<"잔액"<<std::endl;
std::cout<<std::setw(23)<<pAc[vnum].ID<<std::setw(23)<<pAc[vnum].No<<std::setw(23)<<pAc[vnum].money<<std::endl<<std::endl;
}

system("pause");
system("cls");
}
}
/**************************************
*                                     *
*   5. 프로그램 종료 함수             *
*   함수명 : exitMoney                *
*                                     *
***************************************/

void exitMoney()
{
std::cout<<"====================================================================="<<std::endl;
std::cout<<"                     *  은행 계좌 관리 프로그램  *                     "<<std::endl;
std::cout<<"====================================================================="<<std::endl;
std::cout<<"1. 회원등록"<<std::endl;
std::cout<<"2. 입금"<<std::endl;
std::cout<<"3. 출금"<<std::endl;
std::cout<<"4. 잔액조회"<<std::endl;
std::cout<<"5. 나가기"<<std::endl<<std::endl;
std::cout<<"=========================프로그램을 종료 합니다.======================="<<std::endl;
exit(1);
}





void main()
{

/***************************************
*                                     *
*            변수 선언부              *
*                                     *
***************************************/

acc *pAc;

/***************************************
*                                     *
* 등록 회원 숫자 관리 함수        *
* 함수명 : memberNum             *
*                                     *
***************************************/
pAc = memberNum();
while(1)
{
/***************************************
*                                     *
*   프로그램 시작 화면 출력 함수        *
*   함수명 : showStartView            *
*                                     *
***************************************/
c = showStartView();

if(c=='1')

/**************************************
*                                     *
*   1.회원 등록 함수                   *
*   함수명 : registMember              *
*                                     *
***************************************/
registMember(pAc,num); 

else if(c=='2')

/**************************************
*                                     *
*   2. 계좌 입금 함수                  *
*   함수명 : depositMoney              *
*                                     *
***************************************/
depositMoney(pAc,num);

else if(c=='3')

/**************************************
*                                     *
*   3. 계좌 출금 함수                 *
*   함수명 : withdrawMoney            *
*                                     *
***************************************/
withdrawMoney(pAc,num);

else if(c=='4')

/**************************************
*                                     *
*   4. 계좌 조회 함수                 *
*   함수명 : withdrawMoney            *
*                                     *
***************************************/
viewMoney(pAc);

else if(c=='5')

/**************************************
*                                     *
*   5. 프로그램 종료 함수             *
*   함수명 : exitMoney       *
*                                     *
***************************************/
exitMoney();

else
{
system("cls");
continue;
}
}
}

- 함수로 정리 완료. strcmp로 비교해서 if 참값 -> 해당 구조체에 입금 하면 돼잖아 멍청아. 그건 별개로 구조체 배열에다가 구조체함수 적용시키는 방법좀.