class Coffee_Class(): def __init__(self): self.aaa("c:\\data\\coffee_kiosk.png") print('커피 키오스크 시스템을 시작합니다.')
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) ax = plt.gca() ax.axes.xaxis.set_visible(False) ax.axes.yaxis.set_visible(False)
plt.show() #커피 키오스크 출력문제 def coffee_kiosk(self):
self.aaa("c:\\data\\menu.png") #여기를 메뉴 사진으로 바꿔주면 됨 import pandas as pd #1. 주문 데이터를 쌓기 위한 딕셔너리 구성 코드 cafe_dict = {} cafe_dict ['주문번호'] = [] cafe_dict ['주문시간'] = [] cafe_dict ['커피종류'] = [] cafe_dict ['수량'] = [] cafe_dict ['가격'] = [] # 딕셔너리에 비어있는 '가격' 을 하나 추가한다
#3. IF문을 여러번 나열하지 않기 위해 튜플/리스트를 활용하여 데이터 입력 coffee_t = ('아메리카노', '카페라떼', '카페모카', '녹차라떼') coffee_s = [20, 10, 30, 20] coffee_p = (1500, 2500, 3500, 3500)
#3-1. 주문번호와 쿠폰 변수를 만들어줌 order_no = 0 # 주문번호 coupon = 0 #쿠폰수량
#4. 메뉴판 출력 > 이미지로 대체 #print('┏━━━━━━━━━━━━━━━━━┓\n') #print('\n\t ·M E N U·\n') #예쁘게 나오라고 \t 명령어로 탭도 이용! #print('\t1번: 아메리카노 1500원 \n\t2번: 카페라떼 2500원 \n\t3번: 카페모카 3500원 \n\t4번: 녹차라떼 3500원 \n\t100번: 관리자모드 입력금지\n') #print('\n┗━━━━━━━━━━━━━━━━━┛\n')
#5. 주문 프로그램 시작 while True: if coffee_s[0] == 0 and coffee_s[1] == 0 and coffee_s[2] == 0 and coffee_s[3] == 0: print('\n ** 모든 음료 재고가 소진되었습니다 직원에게 문의해주세요 **') break
try: #예외처리문 시작 num = int(input('\n주문하시겠습니까? 메뉴를 골라주세요. 번호를 눌러주세요.'))
if num < 5: # 메뉴가 하나 늘어서 5번으로 변경해줌 if coffee_s[num-1] == 0: print('%s는 솔드아웃 되었습니다. 다시 선택해주세요' %coffee_t[num-1]) continue
print('%s를 선택하셨습니다.' %coffee_t[num-1])
cup = int(input('\n몇 잔 주문하시겠습니까?'))
if cup > coffee_s[num-1]: print('죄송합니다. 주문량에 비해 %s가 부족합니다.' %coffee_t[num-1]) print('현재 주문 가능한 수량은 %d입니다. 다시 입력해주세요.' %coffee_s[num-1],) continue
total_price = coffee_p[num-1]*cup #커피 수량 * 커피 개당 가격 = 결재할 가격 print('\n결재하실 금액은 %d원 입니다.' %(total_price)) put_money = int(input('돈을 넣어주세요 ~'))
if put_money >= coffee_p[num-1]*cup: order_no = order_no + 1 #주문번호를 1 증가시킴 (주문번호를 생성) order_no =+ 1 로 쿼리해도 됨! print('\n주문번호 %d번님 %s %d잔 나왔습니다. 거스름돈은 %d원 입니다.' %(order_no, coffee_t[num-1], cup, put_money - coffee_p[num-1])) print('\n쿠폰이', cup, '개 발행되었습니다. 20개를 모으면 한 잔 무료입니다.') coupon += cup print('현재 가지고계신 쿠폰의 수는', coupon, '개 입니다.') print('무료 음료까지 남은 쿠폰의 갯수는', 20 - coupon, '개 입니다.') coffee_s[num-1] -= cup #컵에 입력된 갯수만큼을 재고에서 차감
else: print('%d원이 부족합니다. 잔돈이 반환됩니다' %(coffee_p[num-1]*cup - put_money)) continue
from datetime import datetime now = str(datetime.now()) cafe_dict['주문번호'].append(order_no) cafe_dict['주문시간'].append(now) cafe_dict['커피종류'].append(coffee_t[num-1]) cafe_dict['수량'].append(cup) cafe_dict['가격'].append(total_price)
elif num == 100: #관리자 모드 실행 번호를 100번으로 변경했음 print('\n * 관리자 모드를 실행합니다 * \n') password = int(input('비밀번호를 입력하세요')) if password == 1234: print('\n [관리자 전용] 정산 내역을 출력합니다') break else: print('\n * 비밀번호가 틀렸습니다. 직원을 호출해주세요. * \n') continue
else: print('잘못된 번호입니다 처음화면으로 돌아갑니다') continue except: return '잘못된 값을 입력하셨습니다. 직원을 호출해주세요.' #예외처리
cafe = pd.DataFrame(cafe_dict) cafe.to_csv("c:\\data\\coffee_report_" + now[0:10] + '일_' + now[11:13] + '시_' + now[14:16] + '분_' + now[17:19] +'초' +".csv", encoding="ANSI") print('지금까지의 총 수익은', cafe['가격'].sum(), '원 입니다.' )
import pandas as pd from matplotlib import font_manager, rc import matplotlib.pyplot as plt
cafe = pd.DataFrame(cafe_dict)
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%%', colors=['skyblue', 'lightpink', 'lightgreen', 'peachpuff', 'lightcoral'] ) plt.legend(loc='best',bbox_to_anchor=(2, 1)) plt. title('커피종류별 매출액') plt.savefig("c:\\data\\result.png", dpi = 300) #원형 그래프 자동 저장
return cafe
kiosk1 = Coffee_Class() kiosk1.coffee_kiosk() |