Study/class note

커피키오스크 + 이미지

chanzae 2021. 12. 16. 10:22
def coffee_image():    
    import PIL.Image as pilimg              
    import numpy as np                     
    import matplotlib.pyplot as plt
    
    im = pilimg.open("c:\\data\\coffee.png") 
    pix = np.array(im)                      
    plt.imshow(pix)
	
    plt.axis('off')    #x,y축 없애기
    
    plt.show()     # 이미지 출력할때 넣어주면 됨
 
 
def coffee_kiosk():
     
    #커피 이미지
    coffee_image()
 
    import pandas as pd
    print('='*16,' CAFE ','='*16)
    print('1 : 아메리카노:1500원 \n2 : 카페라떼:2500원 \n3 : 카페모카:3500원 \n4 : 녹차라떼:3500원 \n\n10 > 결산(관리자용)')
    print('='*40)
 
    c_type = ['아메리카노','카페라떼','카페모카','녹차라떼']
    c_stock = [20,10,30,20]    # [0]: 아메리카노 재고, [1] : 카페라떼 재고, [2] : 카페모카 재고, [3] : 녹차라떼 재고
    c_price = [1500,2500,3500,3500]   # [0]: 아메리카노 가격, [1] : 카페라떼 가격, [2] : 카페모카 가격, [3] : 녹차라떼 가격
    coupon = 0
    order_no = 1
 
    cafe_dict = {}
    cafe_dict['주문번호'] = []
    cafe_dict['주문시간'] =[]
    cafe_dict['커피종류'] = []
    cafe_dict['수량'] = []
    cafe_dict['가격'] = []
 
    while True:
 
        # 전체 품절
        if c_stock[0] == 0 and c_stock[1] == 0 and c_stock[2] == 0 and c_stock[3] == 0:
            print('\n\n\n모든 커피가 품절입니다.')
            print('='*40,'\n')
            break
 
        num = int(input('\n%d번손님,주문하시겠습니까? \n메뉴를 골라주세요. 번호를 눌러주세요.'%order_no))
 
        # 주문
        if num < 5:
            print('%s를 선택하셨습니다.'%c_type[num-1])
            if c_stock[num-1] == 0:
                print('\n%s : 품절'%c_type[num-1])
                print('\n다시 입력해주세요~')
                continue
 
            cup = int(input('몇 잔 주문하시겠습니까? '))
 
            if cup > c_stock[num-1]:
                print('\n죄송합니다. 주문량에 비해 %s가 부족합니다.'%c_type[num-1])
                print('현재 주문 가능한 수량은 %d잔 입니다.' %c_stock[num-1], '다시 입력해주세요.')
                cup = int(input('몇 잔 주문하시겠습니까? '))
 
            price = c_price[num-1] * cup
            print('\n결제하실 금액은 %d원 입니다.'%price)
            
            
            # 쿠폰x, 정상결제 시
            if coupon < 20:
                money = int(input('돈을 입력하시오~ '))
                if c_stock[num-1] >= cup and money >= price:
                    print('\n[주문번호 %d]'%order_no)
                    print('%s가 나왔습니다. 거스름돈은 '%c_type[num-1],money - price,'원 입니다.')
                    print('쿠폰이 %d개 발급되었습니다.(20개 모으면 한잔 무료)'%cup)
                    c_stock[num-1] -= cup
                    coupon += cup
                    print('현재 보유한 쿠폰 :  %d개 '%coupon)
                    print('='*40,'\n')
 
                    from datetime import datetime
                    now = str(datetime.now())
                    cafe_dict['주문번호'].append(order_no)
                    cafe_dict['주문시간'].append(now)
                    cafe_dict['커피종류'].append(c_type[num-1])
                    cafe_dict['수량'].append(cup)
                    cafe_dict['가격'].append(price)
 
                    order_no += 1
 
                elif c_stock[num-1] >= cup and money < price:
                    print('금액이 부족합니다. 돈을 반환합니다.')
                    print('='*40,'\n')
                    continue
            
            #쿠폰 20개 이상
            elif coupon >= 20:
                question1 = int(input('쿠폰을 사용하시겠습니까?(1일 1회 1잔만 가능) \n예 : 1번\n아니오 : 2번 '))
                
                # 쿠폰사용 
                if question1 == 1:
                    print('\n쿠폰 20개가 차감됩니다.')
                    coupon -= 20
                    if cup == 1:
                        price -= price
                        print('\n[주문번호 %d]'%order_no)
                        print('%s가 나왔습니다. 쿠폰은 발급되지 않습니다.'%c_type[num-1])
                        print('현재 보유한 쿠폰 :  %d개 '%coupon)
                        print('='*40,'\n')
                    else:
                        price -= c_price[num-1]
                        money2 = int(input('결제할 차액은 %s 원 입니다. 돈을 입력하세요~ '%price))
                        if money2 >= price:
                            print('\n[주문번호 %d]'%order_no)
                            print('%s가 나왔습니다. 거스름돈은 %s원 입니다. 쿠폰은 발급되지 않습니다.'%(c_type[num-1],money2 - price))
                            print('현재 보유한 쿠폰 :  %d개 '%coupon)
                            print('='*40,'\n')
                    
                        elif money2 < price:
                            print('금액이 부족합니다. 돈을 반환합니다.')
                            print('='*40,'\n')
                            continue
                            
                    from datetime import datetime
                    now = str(datetime.now())
                    cafe_dict['주문번호'].append(order_no)
                    cafe_dict['주문시간'].append(now)
                    cafe_dict['커피종류'].append(c_type[num-1])
                    cafe_dict['수량'].append(cup)
                    cafe_dict['가격'].append(price)
 
                    order_no += 1
                
                #쿠폰 사용 안함
                elif question1 == 2:
                    print('\n쿠폰을 사용하지 않습니다')
                    money = int(input('돈을 입력하시오~ '))
                    if c_stock[num-1] >= cup and money >= price:
                        print('\n[주문번호 %d]'%order_no)
                        print('%s가 나왔습니다. 거스름돈은 '%c_type[num-1],money - price,'원 입니다.')
                        print('쿠폰이 %d개 발급되었습니다.(20개 모으면 한잔 무료)'%cup)
                        c_stock[num-1] -= cup
                        coupon += cup
                        print('현재 보유한 쿠폰 :  %d개 '%coupon)
                        print('='*40,'\n')
                        
                        from datetime import datetime
                        now = str(datetime.now())
                        cafe_dict['주문번호'].append(order_no)
                        cafe_dict['주문시간'].append(now)
                        cafe_dict['커피종류'].append(c_type[num-1])
                        cafe_dict['수량'].append(cup)
                        cafe_dict['가격'].append(price)
 
                        order_no += 1
 
                    elif c_stock[num-1] >= cup and money < price:
                        print('금액이 부족합니다. 돈을 반환합니다.')
                        print('='*40,'\n')
                        continue
                        
                else:
                    print('번호를 잘못 입력했습니다. 처음 화면으로 돌아갑니다.')
 
 
        # 결산(관리자용)         
        elif num == 10:
            print('\n\n------- 관리자 모드로 실행됩니다 -------')
            password = int(input('비밀번호를 입력하세요~ '))
            if password == 1234:
                print('\n정산 내역을 출력합니다')
                break
            else:
                print('비밀번호가 틀렸습니다. 처음 화면으로 돌아갑니다.')
                continue
 
      # 메뉴 없음          
        else:
            print('메뉴가 없습니다. 처음 화면으로 돌아갑니다.')
            print('='*40,'\n')
            continue
 
    cafe = pd.DataFrame(cafe_dict) 
    time = now[:10]+'일_'+now[11:13]+'시_'+now[14:16]+'분_'+now[17:19]+'초'       #현재시간
    cafe.to_csv("c:\\data\\coffee_report_"+ time +".csv",encoding = "ANSI")        #판다스 dataframe 자동저장
    print('\n  오늘 지금까지 총 수익은 ',cafe['가격'].sum(),'원 입니다.')
    
    # 원형그래프 
    from matplotlib import font_manager, rc
    import matplotlib.pyplot as plt
    
    font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
    rc('font', family=font_name)    #폰트설정
    
    result = cafe.groupby('커피종류')['가격'].sum().reset_index()
    result.columns=['커피종류','총매출']
    result.plot.pie(y = '총매출',labels = result['커피종류'], startangle=100, autopct='%1.1f%%')
    plt.legend(loc='best',bbox_to_anchor=(1, 1))
    plt. title('커피종류별 총 매출액')
    plt.savefig("c:\\data\\coffee_piechart_"+ time+".png")     #파이차트 이미지 자동저장
    
    return cafe
반응형