icon안동민 개발노트

다양한 데이터 타입을 활용한 프로그램 작성


학습 목표

  1. 다양한 기본 데이터 타입을 적절히 사용할 수 있다.
  2. 변수를 올바르게 선언하고 초기화할 수 있다.
  3. 상수와 리터럴을 효과적으로 활용할 수 있다.
  4. 필요에 따라 적절한 형변환을 수행할 수 있다.
  5. 네임스페이스를 사용하여 코드를 구조화할 수 있다.

실습 프로그램 : 간단한 은행 계좌 관리 시스템

 이 실습에서는 간단한 은행 계좌 관리 시스템을 구현해볼 것입니다. 이 프로그램은 다음과 같은 기능을 포함합니다.

  1. 계좌 정보 저장 (계좌 번호, 잔액, 이자율)
  2. 입금 및 출금 기능
  3. 이자 계산 기능
  4. 계좌 정보 출력 기능

프로그램 구조

#include <iostream>
#include <iomanip>
#include <string>
 
namespace BankSystem {
    // 상수 정의
    const int MAX_ACCOUNTS = 100;
    constexpr double DEFAULT_INTEREST_RATE = 0.03;
 
    // 계좌 구조체 정의
    struct Account {
        long long accountNumber;
        double balance;
        float interestRate;
    };
 
    // 함수 선언
    void createAccount(Account& account, long long accountNumber, double initialDeposit);
    void deposit(Account& account, double amount);
    bool withdraw(Account& account, double amount);
    double calculateInterest(const Account& account);
    void printAccountInfo(const Account& account);
}
 
int main() {
    using namespace BankSystem;
 
    Account myAccount;
    createAccount(myAccount, 1234567890, 1000.0);
 
    deposit(myAccount, 500.0);
    withdraw(myAccount, 200.0);
 
    double interest = calculateInterest(myAccount);
    std::cout << "Calculated interest: $" << interest << std::endl;
 
    printAccountInfo(myAccount);
 
    return 0;
}
 
// 함수 구현
namespace BankSystem {
    void createAccount(Account& account, long long accountNumber, double initialDeposit) {
        account.accountNumber = accountNumber;
        account.balance = initialDeposit;
        account.interestRate = static_cast<float>(DEFAULT_INTEREST_RATE);
    }
 
    void deposit(Account& account, double amount) {
        account.balance += amount;
    }
 
    bool withdraw(Account& account, double amount) {
        if (account.balance >= amount) {
            account.balance -= amount;
            return true;
        }
        return false;
    }
 
    double calculateInterest(const Account& account) {
        return account.balance * account.interestRate;
    }
 
    void printAccountInfo(const Account& account) {
        std::cout << std::fixed << std::setprecision(2);
        std::cout << "Account Number: " << account.accountNumber << std::endl;
        std::cout << "Balance: $" << account.balance << std::endl;
        std::cout << "Interest Rate: " << account.interestRate * 100 << "%" << std::endl;
    }
}

코드 설명

  1. 네임스페이스 사용 : BankSystem 네임스페이스를 사용하여 관련 함수와 상수를 그룹화했습니다.
  2. 상수 정의 : constconstexpr을 사용하여 상수를 정의했습니다.
  3. 구조체 사용 : Account 구조체를 사용하여 계좌 정보를 저장합니다.
  4. 다양한 데이터 타입 사용
  • long long : 큰 정수를 저장할 수 있는 계좌 번호
  • double : 높은 정밀도가 필요한 잔액
  • float : 이자율 (상대적으로 낮은 정밀도로 충분)
  1. 형변환 : static_cast<float>(DEFAULT_INTEREST_RATE)를 사용하여 doublefloat로 변환했습니다.
  2. 함수 사용 : 다양한 기능을 함수로 구현하여 코드를 모듈화했습니다.

실습

  1. 위의 프로그램을 직접 작성하고 실행해보세요. 결과를 확인하고, 각 부분이 어떻게 작동하는지 이해해보세요.
  2. 다음 기능을 추가해보세요.
  • 여러 개의 계좌를 관리할 수 있도록 프로그램을 확장하세요.
  • 계좌 간 송금 기능을 구현하세요.
  • 계좌 생성 시 이자율을 지정할 수 있도록 수정하세요.
  1. std::string을 사용하여 계좌 소유자의 이름을 저장하고 출력하는 기능을 추가하세요.
  2. enum class를 사용하여 계좌 유형(예 : 보통예금, 정기예금)을 구분하고, 계좌 유형에 따라 다른 이자율을 적용하도록 수정하세요.
  3. #ifdef 전처리기 지시문을 사용하여 디버그 모드에서만 추가 정보를 출력하는 기능을 구현해보세요.

결론

 이 실습을 통해 C++의 다양한 데이터 타입과 기본 개념들을 실제 프로그램에 적용해보았습니다.

 이러한 개념들을 잘 이해하고 활용하면, 더 복잡하고 큰 규모의 프로그램도 효과적으로 설계하고 구현할 수 있습니다.

 계속해서 다양한 예제를 만들어보고 실험해보면서 C++의 기능을 익혀나가세요.