프로젝트
🐟 붕어빵 자동판매 관리 시스템 (객체지향 프로그래밍)
Chansman
2025. 3. 14. 19:15
🐟 프로젝트: 붕어빵 자동 판매 시스템
이번 프로젝트에서는 객체 지향 프로그래밍(OOP)을 활용하여 붕어빵 가게에서 주문 처리, 재고 관리 및 매출 계산 기능을 가진 시스템을 개발했습니다.
📌 클래스 구조
✅ 클래스 정의
class BungeoppangShop:
def __init__(self):
# 초기 재고 설정
self.stock = {"팥붕어빵": 10, "슈크림붕어빵": 8, "초코붕어빵": 5}
# 붕어빵 가격 설정
self.prices = {"팥붕어빵": 1000, "슈크림붕어빵": 1200, "초코붕어빵": 1500}
# 초기 판매량 설정
self.sales = {"팥붕어빵": 0, "슈크림붕어빵": 0, "초코붕어빵": 0}
✅ 재고 확인 메서드
def check_stock(self):
print("\n--- 현재 재고 ---")
for bread, count in self.stock.items():
print(f"{bread}: {count}개")
- 현재 붕어빵의 종류와 개수를 보여줍니다.
✅ 주문 처리 메서드
def process_order(self, bread_type, bread_count):
if bread_type in self.stock:
if self.stock[bread_type] >= bread_count:
self.stock[bread_type] -= bread_count
self.sales[bread_type] += bread_count
print(f"{bread_type} {bread_count}개 판매 완료! 남은 재고: {self.stock[bread_type]}개")
else:
print(f"{bread_type} 재고 부족! 현재 재고: {self.stock[bread_type]}개")
else:
print("존재하지 않는 붕어빵 종류입니다.")
- 주문을 받아 재고를 확인하고, 재고가 충분하면 판매 후 재고를 차감합니다.
✅ 관리자 모드 메서드
def admin_mode(self):
while True:
bread_type = input("\n재고 추가할 붕어빵 종류를 입력하세요 (종료: '종료'): ")
if bread_type == "종료":
print("관리자 모드를 종료합니다.")
break
if bread_type in self.stock:
try:
additional_stock = int(input(f"{bread_type}에 추가할 재고 수량: "))
if additional_stock > 0:
self.stock[bread_type] += additional_stock
print(f"{bread_type} 재고가 {additional_stock}개 추가되었습니다. 현재 재고는 {self.stock[bread_type]}개입니다.")
else:
print("추가 수량은 1개 이상이어야 합니다.")
except ValueError:
print("숫자만 입력해주세요.")
else:
print("존재하지 않는 붕어빵 종류입니다.")
- 관리자는 재고를 추가하거나 수정할 수 있습니다.
✅ 매출 계산 메서드
def calculate_sales(self):
total_sales = 0
print("\n--- 매출 확인 ---")
for bread_type, sold_count in self.sales.items():
sales_amount = self.prices[bread_type] * sold_count
total_stock = self.stock[bread_type]
print(f"{bread_type}: {sold_count}개 판매, 매출: {sales_amount}원, 남은 재고: {total_stock}개")
total_sales += sales_amount
print(f"총 매출: {total_sales}원")
- 판매된 붕어빵 개수와 각 품목별 매출을 계산하여 표시합니다.
✅ 메인 실행 함수
def main():
shop = BungeoppangShop()
while True:
mode = input("모드를 선택하세요 (주문 / 관리자 / 종료): ")
if mode == "주문":
bread_type = input("주문할 붕어빵 종류를 입력하세요: ")
try:
bread_count = int(input("주문할 개수를 입력하세요: "))
shop.process_order(bread_type, bread_count)
except ValueError:
print("숫자만 입력해주세요.")
elif mode == "관리자":
shop.admin_mode()
elif mode == "종료":
shop.calculate_sales()
print("프로그램을 종료합니다.")
break
else:
print("올바른 모드를 입력해주세요. (주문 / 관리자 / 종료)")
if __name__ == "__main__":
main()
- 사용자가 원하는 기능을 선택하여 주문 처리, 재고 관리, 매출 확인을 수행할 수 있는 인터페이스를 제공합니다.
🚀 핵심 요약
- 클래스를 통해 효율적으로 재고와 판매 데이터를 관리합니다.
- 사용자 입력의 예외 처리를 통해 오류를 방지하고, 안정적인 시스템 운영을 구현합니다.
- 객체지향적 설계를 통해 코드의 가독성과 유지보수성을 향상시킵니다.
✨ 이 프로젝트를 통해 객체지향 프로그래밍의 개념과 실제 활용 방법을 명확하게 이해할 수 있습니다.