소프트웨어융합/경희대 c++ 과제
[c++]7. 전 재산 계좌 송금
류지나
2020. 7. 16. 20:17
1. 한번 송금을 할 때, 돈을 보내는 학생의 전 재산(balance)를 송금합니다.
2. Account(계좌) class는 멤버변수로
string name(이름), string id(학번), int balance 를 갖고있도록 합니다.
3. 사용자로부터 돈을 보낼 학생의 학번과 돈을 받을 학생의 학번을 입력받습니다. 이 때,
다음의 경우에 대해서는 다시 입력 받도록 합니다.
1) 돈을 보낼 학생과 돈을 받을 학생의 학번이 동일한 경우
2) 보낼 학생 혹은 받을 학생의 학번이 존재하지 않는 경우
3) 보낼 학생의 잔액이 0인 경우
4. setBalance 함수를 사용하지 않고, Operator overloading(+, -)를 이용하여 송금후 보
낸 학생의 잔액과 받은 학생의 잔액을 계산하세요.
5. 송금이 완료 된후, Operator overloading(<<)를 이용하여 돈을 보낸 학생과 받은 학생
의 계좌를 출력하세요.
6. 사용자로부터 돈을 보낼 학생의 학번을 “종료”라고 입력받았을 경우 Operator
overloading(<<)를 이용하여 모든 학생의 계좌를 출력하세요.
int main() {
Account acnt[3] = {
Account("신은섭", "2019204212", 10000),
Account("김유민", "2012311060", 0),
Account("이강호", "2011102214", 5000),
};
/* 구현 */
}
#include <iostream>
#include <string>
using namespace std;
class Account {
string name, id;
int balance;
public:
Account(string _name, string _id, int _balance):
name(_name), id(_id), balance(_balance){}
string getName() const { return name; }
string getId() const { return id; }
int getBalance() const { return balance; }
void operator+(Account& ac) {
this->balance += ac.balance;
}
void operator-(Account& ac) {
this->balance -= ac.balance;
}
};
ostream& operator<<(ostream& cout,const Account& ac) {
cout << "학번: " << ac.getId() << "\t이름 : " << ac.getName() << "\t잔액 : " << ac.getBalance();
return cout;
}
int main() {
Account acnt[3] = {
Account("신은섭", "2019204212", 10000),
Account("김유민", "2012311060", 0),
Account("이강호", "2011102214", 5000),
};
string toss, get;
while (1) {
cout << "돈을 보낼 학생의 학번을 입력하세요: ";
cin >> toss;
if (toss == "종료") {
cout << "종료합니다." << endl;
for (int k = 0; k < 3; k++)
cout << acnt[k] << endl;
exit(100);
}
cout << "돈을 받을 학생의 학번을 입력하세요: ";
cin >> get;
if (toss == get) continue;
int sw1 = 1, sw2 = 1;
int i = 0;
for (i; i < 3; i++) {
if (toss == acnt[i].getId()) {
sw1 = 0;
break;
}
}
if (sw1) {
cout << "보내는 학생 혹은 받은 학생의 학번이 존재하지 않습니다. 다시 입력해주세요." << endl;
continue;
}
int j = 0;
for (j; j < 3; j++) {
if (get == acnt[j].getId()) {
sw2 = 0;
break;
}
}
if (sw2) {
continue;
cout << "보내는 학생 혹은 받은 학생의 학번이 존재하지 않습니다. 다시 입력해주세요." << endl;
}
if (acnt[i].getBalance() == 0) {
cout << "보내는 학생의 잔액이 부족합니다." << endl;
continue;
}
acnt[j] + acnt[i];
acnt[i] - acnt[i];
cout << "보낸 학생의 잔액 : " << acnt[i] << endl;
cout << "받은 학생의 잔액 : " << acnt[j] << endl;
}
return 0;
}