다양한 데이터 타입을 활용한 프로그램 작성
학습 목표
- 다양한 기본 데이터 타입을 적절히 사용할 수 있다.
- 변수를 올바르게 선언하고 초기화할 수 있다.
- 상수와 리터럴을 효과적으로 활용할 수 있다.
- 필요에 따라 적절한 형변환을 수행할 수 있다.
- 네임스페이스를 사용하여 코드를 구조화할 수 있다.
실습 프로그램 : 간단한 은행 계좌 시스템
이 실습에서는 간단한 은행 계좌 시스템을 구현해볼 것입니다. 이 프로그램은 다음과 같은 기능을 포함합니다.
- 계좌 정보 저장 (계좌 번호, 잔액, 이자율)
- 입금 및 출금 기능
- 이자 계산 기능
- 계좌 정보 출력 기능
프로그램 구조
#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;
}
}
코드 설명
- 네임스페이스 사용 :
BankSystem
네임스페이스를 사용하여 관련 함수와 상수를 그룹화했습니다. - 상수 정의 :
const
와constexpr
을 사용하여 상수를 정의했습니다. - 구조체 사용 :
Account
구조체를 사용하여 계좌 정보를 저장합니다. - 다양한 데이터 타입 사용
long long
: 큰 정수를 저장할 수 있는 계좌 번호double
: 높은 정밀도가 필요한 잔액float
: 이자율 (상대적으로 낮은 정밀도로 충분)
- 형변환 :
static_cast<float>(DEFAULT_INTEREST_RATE)
를 사용하여double
을float
로 변환했습니다. - 함수 사용 : 다양한 기능을 함수로 구현하여 코드를 모듈화했습니다.
실습
- 위의 프로그램을 직접 작성하고 실행해보세요. 결과를 확인하고, 각 부분이 어떻게 작동하는지 이해해보세요.
- 다음 기능을 추가해보세요.
- 여러 개의 계좌를 관리할 수 있도록 프로그램을 확장하세요.
- 계좌 간 송금 기능을 구현하세요.
- 계좌 생성 시 이자율을 지정할 수 있도록 수정하세요.
std::string
을 사용하여 계좌 소유자의 이름을 저장하고 출력하는 기능을 추가하세요.enum class
를 사용하여 계좌 유형(예 : 보통예금, 정기예금)을 구분하고, 계좌 유형에 따라 다른 이자율을 적용하도록 수정하세요.#ifdef
전처리기 지시문을 사용하여 디버그 모드에서만 추가 정보를 출력하는 기능을 구현해보세요.
결론
이 실습을 통해 C++의 다양한 데이터 타입과 기본 개념들을 실제 프로그램에 적용해보았습니다.
이러한 개념들을 잘 이해하고 활용하면, 더 복잡하고 큰 규모의 프로그램도 효과적으로 설계하고 구현할 수 있습니다.
계속해서 다양한 예제를 만들어보고 실험해보면서 C++의 기능을 익혀나가세요.