ATM 구현
- ATM’s serial number (REQ1.1)
6자리여야한다.
ATM마다 달라야한다.
- ATM type (REQ1.2)
1) Single Bank ATM: primary bank의 카드만 유효하다고 판단
[Implementation] → serial_num += 100000 * sing_mul | sing_mul = 1( single) or 2(multi)
2) Multi-Bank ATM: primary bank의 카드 외에도 유효함 but 수수료 붙음…
- ATM language (REQ1.3)
[Implementation] → serial_num[2]에 0이면
1) unilingual → serial_num += 1000 * uni_lan | uni_lan = 1
2) bilingual → serial_num += 1000 * bi_lan | bi_lan = 2
Primary Bank list
하나 | 신한 | 국민 | 우리 | 농협 | 대구 | 카카오 | 수협 | 기업
ATM Constructor 구현하기
class ATM { private: int serial_number; static static_serial_num; // 근데 static 이라 추가되는대로 숫자 올라감 앞이 변해도,, 이건 나중에 바꾸고 ATM(); //요 아래 두개는 혹시 인풋 개수 다르게 넣을 수도 있으니까 근데 우리가 control하니까 상관 없단 의견 // ATM(const string type); // ATM(const string type, const string bank_name); ATM(const string type, const string primary_bank, const string lang); }; static_serial_num = 0; ATM::ATM(){ cout << "ERROR: ATM이 사용하는 은행의 single multi 여부(single/multi), primary_bank의 이름(e.g. Daegu, 지원하는 언어의 개수(uni/bi)를 정확히 입력해주세요." << endl; } ATM::ATM(const string type, const string primary_bank, const string lang) { if(type=="single"){ int serial_type = 1; } else if(type == "multi"){ int serial_type = 2; } serial_number += 100000 * serial_type; } ----- #include "ATM.h" #include <iostream> #include <string> using namespace std; int ATM::static_serial_num = 0; ATM::ATM(const string type, const string primary_bank, const string lang) { int serial_type; int serial_primary_bank; int serial_lang_type; int primary_bank_type; serial_number = static_serial_num; // bank type setting if (type == "single") { serial_type = 1; } else if (type == "multi") { serial_type = 2; } else { cout << "[Error] ~~~" << endl; } serial_number += 100000 * serial_type; // bank name setting for (int i = 0; i < 9; i++) { if (bank_list[i] == primary_bank) { serial_primary_bank = i + 1; } } serial_number += 10000 * serial_primary_bank; // language type setting if (lang == "unilingual") { serial_lang_type = 1; } else if (lang == "bilingual") { serial_lang_type = 2; } else { cout << "[ERROR] ~~~" << endl; } serial_number += 1000 * serial_lang_type; }

- StartSession : 계좌 번호 입력
- authorization : 비밀 번호 증명
- deposit :
- Other (REQ1.4)
[Implemetation] → ATM 생길 때마다 + 1
Account 구현
필요 information
- pw
- name
- accnt_num
- 12자리
- 첫 3자리 고정, 나머지 static으로 생긴대로 추가
| 하나(111) | 신한(222) | 국민(333) | 우리(444) | 농협(555) | 대구(666) | 카카오(777) | 수협(888) | 기업(999) |
#include "ATM.h" #include "Bank.h" #include <iostream> #include <string> class Account { private: string bank_list[9] = {"하나", "신한", "국민", "우리", "농협", "대구", "카카오", "수협", "기업"}; static int static_account_num; int account_num; // 계좌번호 int password; // 비밀번호 int balance; // 잔액 Bank* bank; // 계좌 은행 포인터 string name; // 계좌 주 이름 public: Account(Bank *bank_ptr, int user_password, string user_name); Account *Account_list[5]; // Account_obj 담을 수 있는 list -> 5개로 제한, // 제한 안하면 이게 가능함??! void Withdrawal(ATM *ATM_obj); void PrintAccountAll(); void getBalance(); // 계좌 잔고 반환 int getPassword(); // 비밀번호 반환 void IsAdmin(); // admin인지 확인 void GetTransacHis(); // transaction history 확인 }; ---- #include "Account.h" int Account::static_account_num = 0; Account::Account(Bank *bank_ptr, int user_password, string user_name) { this->bank = bank_ptr; this->password = user_password; this->name = user_name; for (int i = 0; i < 9; i++) { if (bank_list[i]==bank_ptr->getBankName()) { this->account_num = static_account_num + 111000000000 * (i+1); } } void Account::Withdrawal(ATM *ATM_obj) {} void Account::PrintAccountAll() {}
Bank 구현
bank name
- Bank Constructor → Bank 이름,
- Bank 변수? → Bank에서 관리하는 account 명단,
Main 함수 구현(w. scenario)
int main() { Account acc1('우리', 2034, '수민') Bank b1('하나') Bank b2('신한') Bank b3('국민') Bank b4('우리') Bank b5('농협') Bank b6('대구') Bank b7('카카오') Bank b8('수협') Bank b9('기업') ATM atm1 atm1.insertcard(acc1) }
![[Notion] :](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fc0389671-d63b-4c5d-a65d-5113fb1666a2%2Faf276f8d-c43c-4190-a784-11927a8f1c86%2F%25EB%2585%25B8%25EC%2585%2598_%25EC%2595%2584%25EC%259D%25B4%25EC%25BD%2598.png?table=block&id=244dd211-78d0-4c22-8c35-2efb01da5258&cache=v2)