89 지출 추적기 (Expense Tracker)
지출을 추가하고 카테고리별로 분류할 수 있는 간단한 지출 추적기(웹 앱 또는 폰 앱)를 만들어 봅시다. 입력한 데이터를 바탕으로 월간 보고서를 생성하고, 특정 지출이 너무 많을 때(예: “커피를 너무 많이 마셨어요!”) 알림을 보내주는 기능까지 구현해 보세요.
이 프로젝트는 실생활에서 유용한 가계부 시스템을 구축하고, 데이터를 체계적으로 관리하는 방법을 익히기에 아주 좋습니다. 특히 지출 패턴을 분석하여 예산을 절약할 수 있는 인사이트를 제공하는 기능을 설계해 보세요.
89.1 주요 개발 포인트
- 지출 데이터베이스 설계: 날짜, 카테고리(식비, 교통비, 취미 등), 금액, 설명을 저장합니다.
- 월간 보고서 생성: 지정된 기간의 총지출액과 카테고리별 비중을 계산하여 요약합니다.
- 맞춤형 알림 설정: 특정 카테고리의 지출이 예산을 초과하면 경고 메시지를 보여줍니다.
- 데이터 시각화: 파이 차트(Pie Chart)나 바 차트(Bar Chart)를 사용하여 지출 분포를 시각화합니다.
- 파일 내보내기: 기록한 데이터를 CSV나 Excel 파일로 저장하여 외부 프로그램에서 분석할 수 있도록 합니다.
89.2 Python 구현 예시 (간단한 지출 관리 프로그램)
from datetime import datetime
class ExpenseTracker:
"""
지출 내역을 저장하고 분석하는 클래스입니다.
"""
def __init__(self):
self.expenses = []
self.categories = ["식비", "교통비", "쇼핑", "교육", "기타"]
def add_expense(self, amount, category, description):
"""
새로운 지출 내역을 기록합니다.
"""
if category not in self.categories:
category = "기타"
expense = {
"date": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"amount": amount,
"category": category,
"description": description
}
self.expenses.append(expense)
print(f"[{category}] {amount:,}원 지출 등록 완료: {description}")
def get_summary(self):
"""
카테고리별 지출 요약을 계산합니다.
"""
summary = {cat: 0 for cat in self.categories}
total = 0
for exp in self.expenses:
summary[exp['category']] += exp['amount']
total += exp['amount']
print("\n--- 지출 요약 리포트 ---")
for cat, amount in summary.items():
if amount > 0:
percent = (amount / total) * 100
print(f"{cat}: {amount:,}원 ({percent:.1f}%)")
print(f"총 지출액: {total:,}원")
# 간단한 경고 기능
if summary.get("식비", 0) > 200000:
print("경고: 이번 달 식비 지출이 너무 많습니다! 외식을 줄여보세요.")
if __name__ == "__main__":
tracker = ExpenseTracker()
# 지출 내역 입력 테스트
tracker.add_expense(8500, "식비", "점심 김치찌개")
tracker.add_expense(12000, "교통비", "버스 카드 충전")
tracker.add_expense(50000, "쇼핑", "새 셔츠 구매")
tracker.add_expense(4500, "식비", "카페 아메리카노")
tracker.get_summary()