|
밑에 소스만 대충 봤는데요
첫번째 switch문 (case1, 2, 3, 7를 가진) 이 각 case에 대한 break가 빠져 있는듯(case7제외) 합니다..
cutesangd 님이 쓰신 글 :
: 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;}
|