# 커피 키오스크
class Coffee_Class():
def __init__(self):
self.aaa("d:\\data\\kiosk.png")
print('커피 키오스크 시스템을 시작합니다.')
self.cafe_dict = {} # 비어있는 딕셔너리 생성
self.cafe_dict['주문번호'] = [] #키는 주문번호로 하고 값은 비어있는 리스트로 생성
self.cafe_dict['주문시간'] = []
self.cafe_dict['커피종류'] = []
self.cafe_dict['수량'] = []
self.cafe_dict['가격'] = []
self.coffee = ('아메리카노','카페라떼','카페모카','녹차라떼')
self.c_stock = [20,10,30,20] # [0] 아메리카노 재고, [1] 카페라떼 재고, [2] 카페모카 재고, [3] 녹차라떼 재고
self.c_price = (1500, 2500, 3500, 3500) # [0] 아메리카노 가격, [1] 카페라떼 가격, [2] 카페모카 가격, [3] 녹차라떼 가격
self.order_no = 0 #주문번호
self.cup = 0
def aaa(self,name):
import PIL.Image as pilimg
import numpy as np
import matplotlib.pyplot as plt
im = pilimg.open(name)
pix = np.array(im)
plt.imshow(pix)
plt.axis('off')
plt.show()
def machul_sum(self):
import pandas as pd
from datetime import datetime
now = str(datetime.now())
cafe = pd.DataFrame(self.cafe_dict)
print('오늘 지금까지 총 수익은 ' , 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['커피종류'], autopct='%1.1f%%' )
plt.legend(loc='best',bbox_to_anchor=(1, 1))
plt.savefig('d:\\data\\result_'+ now[0:10] + '일_' + now[11:13] + '시_' + now[14:16] + '분_' + now[17:19] +'초' +'.png', dpi=300)
def data_add(self, num):
from datetime import datetime
now = str(datetime.now())
self.cafe_dict['주문번호'].append(self.order_no)
self.cafe_dict['주문시간'].append(now)
self.cafe_dict['커피종류'].append(self.coffee[num-1])
self.cafe_dict['수량'].append(self.cup)
self.cafe_dict['가격'].append(self.cup*self.c_price[num-1])
def coffee_kiosk(self):
# 추천 메뉴
from random import shuffle
self.aaa("d:\\data\\menu.png")
shuffle(self.coffee)
print('★오늘의 추천 음료는 %s입니다.★' %self.coffee[0])
for i, k in zip(enumerate(self.coffee), self.c_price):
print('%d번. %s \t %d원' %(i[0]+1, i[1], k))
while True:
try:
num = int(input('\n주문하시겠습니까? 메뉴를 골라주세요. 번호를 눌러주세요. '))
except:
return '잘못된 값을 입력하셨습니다. 숫자로 입력하셔야 합니다.'
if num <5 :
print('\n%s를 선택하셨습니다.' %self.coffee[num-1])
self.cup = int(input('몇 잔 주문하시겠습니까? '))
if self.cup > self.c_stock[num-1]:
print('\n죄송합니다. 주문량에 비해 %s가 부족합니다.' %self.coffee[num-1])
print('현재 주문 가능한 수량은 %d입니다.' %self.c_stock[num-1], '다시 입력해주세요.')
self.cup = int(input('몇 잔 주문하시겠습니까? '))
elif self.cup ==0:
print('\n잘못입력하셨습니다')
self.cup = int(input('몇 잔 주문하시겠습니까? '))
print('\n결제하실 금액은 ', self.cup * self.c_price[num-1], '입니다')
price = int(input('돈을 입력하세요 ~ '))
if price > self.cup * self.c_price[num-1]:
self.order_no += 1
print('\n주문번호 %d 님 %s 나왔습니다. 거스름돈은 %d 원 입니다.' %(self.order_no, self.coffee[num-1], price - self.cup * self.c_price[num-1]))
print('쿠폰이 %d 개가 발행되었습니다. 20개를 모으면 한 잔 무료입니다' %self.cup)
self.c_stock[num-1] -= self.cup
elif price == self.cup * self.c_price[num-1]:
self.order_no += 1
print('\n주문번호 %d 님 %s 나왔습니다.' %(self.order_no,self.coffee[num-1]) )
print('쿠폰이 %d 개가 발행되었습니다. 20개를 모으면 한 잔 무료입니다' %self.cup)
self.c_stock[num-1] -= self.cup
else:
print('\n입금금액이 모자랍니다.')
# 데이터 쌓는 함수
self.data_add(num)
elif num == 5:
secr_num = int(input('비밀번호를 입력하세요 ~ '))
if secr_num==1234:
print('\n※ 관리자 모드를 실행합니다 ※\n')
break
else:
print('\n잘못입력하셨습니다. 다시 진행해주세요') #없는 메뉴 선택시
return self.machul_sum()