|
c++로 은행시스템구현중인데 에러는안나지만 의도한대로 안되네요.
도움 주시면 감사하겠습니다.
질문1.
account클래스의 잔액(balance)과 checkingaccount, creditlineaccount 이 클래스들의 잔액을 서로 같게 해주고싶은데
어떻게해야하죠? 전 지금 완전따로따로 노네요..
마찬가지로 계좌주 계좌번호같은것들도요..
질문2.
코드상으론 이상없는거 같은데 막상 실행하고 나면은 account메뉴에서 4번을 누르면 잔액조회만 되야하는데 잔액조회후 checkingaccount 메뉴로 넘어가네요.
마찬가지로 checkingaccount 메뉴에서 4번을 누르면 잔액조회만 되야하는데 잔액조회후 creditlineaccout 메뉴로 넘어가네요.
checkingaccount 메뉴에서 4번을 누르면 잔액조회만 되야하는데 잔액조회후 account 메뉴로 넘어가네요.
서로 돌고도는 시스템같은데;; a->b->c->a 이런식으로. 왜 이런거죠? 코드엔 이상없는거같은데;
p.s 추후 파일입출력도 할거구요. 이외에도 다른이상이 있는지 봐주시면 감사하겠습니다.
p.s2 account // 일반계좌클래스
checkingaccount // 체크카드 계좌클래스
creditlineaccoumt // 마이너스통장 계좌클래스
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class account{
public:
string accountno; // 계좌번호
string ownername; // 계좌명
public:
int balance; //잔액
int inamount;
int outamount;
string temp, temp2;
void getaccountno(string num, string name){ //계좌개설
accountno = num;
ownername = name;
cout<<"개설되었습니다\n";
}
string setaccoutno(){
return accountno ;
}
void getownername(string name){
ownername = name;
}
string setownername(){
return ownername;
}
void deposit(int inamount){ // 입금
balance = balance + inamount;
cout<<"입금완료 \n"<<"잔액은:"<<balance<<"\n";
}
int withdraw(int outamount){ // 출금
if(balance < outamount){
cout<<balance<< "||" << outamount<<"잔액이 부족합니다 \n";
}
else{
balance = balance - outamount;
cout<<outamount<< "출금완료 \n"<<"잔액은:"<<balance<<"\n";}
return outamount;
}
void prt(){ //출력
cout << "계좌번호: " << accountno << " 계좌주: " << ownername << " 입금액: "
<< inamount << " 출금액: " << outamount << " 잔액: " << balance << "\n";
}
void firstmenu(){
cout << "메뉴" << endl;
cout << "1. 일반계좌" << endl;
cout << "2. 체크카드" << endl;
cout << "3. 마이너스통장" << endl;
cout << "5. 종료" << endl;
}
void prtmenu(){
cout<<"=======일반입출금=======\n";
cout << "메뉴" << endl;
cout << "1. 계좌 개설" << endl;
cout << "2. 입금" << endl;
cout << "3. 출금" << endl;
cout << "4. 잔액조회" << endl;
cout << "5. 전단계" <<endl;
cout << "6. 종료" << endl;
cout<<"=====================\n";
}
account(){
balance = 20000;
inamount = 0;
outamount = 0;}
};
class checkingaccount : public account{
public:
string cardno, incardno; //카드번호
int pay(string cardno, int outamount){
if( (cardno != cardno) || (balance < outamount) )
cout<<"출금불가\n";
return withdraw(outamount);
}
void prt(){ //출력
cout << "계좌번호: " << accountno << " 계좌주: " << ownername << " 입금액: "
<< inamount << " 출금액: " << outamount << " 잔액: " << balance << "\n";
}
void prtmenu(){
cout<<"=====체크카드입출금=====\n";
cout << "메뉴" << endl;
cout << "1. 체크카드입금" << endl;
cout << "2. 체크카드출금" << endl;
cout << "3. 체크카드지불" << endl;
cout << "4. 잔액조회" << endl;
cout << "5. 전단계" <<endl;
cout << "6. 종료" << endl;
cout<<"=====================\n";
}
checkingaccount(){
cardno="111";}
};
class creditlineaccount : public checkingaccount{
public:
int creditline; //신용한도
int withdraw(int outamount){
if((balance + creditline) < outamount){
cout<<balance<< "||" << outamount<<"잔액이 부족합니다2 \n";}
else{
balance = balance - outamount;
cout<<outamount<< "출금완료 \n"<<"잔액은:"<<balance<<"\n";}
return outamount;
}
void prt(){ //출력
cout << "계좌번호: " << accountno << " 계좌주: " << ownername << " 입금액: "
<< inamount << " 출금액: " << outamount << " 잔액: " << balance << "\n";
}
void prtmenu(){
cout<<"=====마이너스통장입출금=====\n";
cout << "메뉴" << endl;
cout << "1. 마이너스통장입금" << endl;
cout << "2. 마이너스통장출금" << endl;
cout << "3. 잔액조회" << endl;
cout << "4. 전단계" <<endl;
cout << "5. 종료" << endl;
cout<<"=====================\n";
}
creditlineaccount(){
creditline = 5000;}
};
int main(){
account obj1;
checkingaccount obj2;
creditlineaccount obj3;
int choice,choice2;
bool i = true;
while(i){
obj1.firstmenu();
cout << "원하는 메뉴를 선택하시오: ";
cin >> choice;
switch(choice){
case 1: //일반
cout << "일반계좌\n";
obj1.prtmenu();
cin >> choice2;
switch(choice2){
case 1: //1번 선택시 계좌개설함수 호출
cout << "계좌번호입력:";
cin >> obj1.temp;
cout << "계좌명입력:";
cin >> obj1.temp2;
obj1.getaccountno(obj1.temp, obj1.temp2);
break;
case 2: //2번선택시 일반입금
cout << "입금액입력:";
cin >> obj1.inamount;
obj1.deposit(obj1.inamount);
break;
case 3: //3번선택시 일반출금
cout << "출금액입력:";
cin >> obj1.outamount;
obj1.withdraw(obj1.outamount);
break;
case 4: //4번선택시 잔액출력
obj1.prt();
break;
case 5:
obj1.firstmenu();
break;
}
case 2: //체크
cout << "체크카드\n";
obj2.prtmenu();
cin >> choice2;
switch(choice2){
case 1: //1번선택시 일반입금
cout << "입금액입력:";
cin >> obj1.inamount;
obj1.deposit(obj1.inamount);
break;
case 2: //2번선택시 일반출금
cout << "출금액입력:";
cin >> obj1.outamount;
obj1.withdraw(obj1.outamount);
break;
case 3://3번선택시 체크카드지불
cout << obj2.cardno;
cin >> obj2.cardno >> obj2.inamount;
obj2.pay(obj2.cardno,obj2.inamount);
break;
case 4: //4번선택시 잔액출력
obj2.prt();
break;
case 5:
obj1.firstmenu();
break;
}
case 3:
cout << "마이너스통장\n";
obj3.prtmenu();
cin >> choice2;
switch(choice2){
case 1: //1번선택시 일반입금
cout << "입금액입력:";
cin >> obj1.inamount;
obj1.deposit(obj1.inamount);
break;
case 2:
cout << "신용한도입니다:" << obj3.creditline <<"\n";
cout << "출금액입력:";
cin >> obj3.outamount;
obj3.withdraw(obj3.outamount);
break;
case 3: //4번선택시 잔액출력
obj3.prt();
break;
case 4:
obj1.firstmenu();
break;
}
case 7: //7번 선택시 while문 조건 변경종료
default:
break;
}
}
return 0;}
|