HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
[Notion] :
[Notion] :
/
🏧
ATM
/
RULES

RULES

 

ATM 구현

  1. ATM’s serial number (REQ1.1)
    1. 6자리여야한다.
      ATM마다 달라야한다.
  1. ATM type (REQ1.2)
    1. 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 수수료 붙음…
  1. ATM language (REQ1.3)
    1. [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; }
notion image
 
  1. StartSession : 계좌 번호 입력
  1. authorization : 비밀 번호 증명
  1. deposit :
 

 
  1. Other (REQ1.4)
    1. [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) }